From c0c83680122c83e5399a3542f387ed6b9eb03dac Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Fri, 23 Apr 2021 22:39:43 +0200 Subject: [PATCH] Add support for lost files --- README.md | 10 ++++++---- fs.go | 5 ++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 38587c4..35aaea2 100644 --- a/README.md +++ b/README.md @@ -5,14 +5,16 @@ Seafile Recovery. Usage: seafile_recovery [--storage=] head - seafile_recovery [--storage=] ls - seafile_recovery [--storage=] dump - seafile_recovery [--storage=] s3 + seafile_recovery [--storage=] ls (--dir= | --file=) + seafile_recovery [--storage=] cp (--dir= | --file=) + seafile_recovery [--storage=] s3 (--dir= | --file=) seafile_recovery (-h | --help) Options: - -h --help Show this screen + -h --help Show this screen --storage= Set Seafile storage path [default: ./storage] + --dir= Seafile Directory ID, can be obtained from commits as RootID + --file= Seafile File ID, can be obtained through ls ``` ## Dev notes diff --git a/fs.go b/fs.go index 4187faf..3233e20 100644 --- a/fs.go +++ b/fs.go @@ -108,6 +108,7 @@ func (dn* DirNode) Parse() { jdec := json.NewDecoder(zfile) err = jdec.Decode(&dn.Elem) if err != nil { log.Fatal(err) } + } func (fn* FileNode) Parse() { @@ -130,7 +131,9 @@ func (dn* DirNode) Children() ([]*DirNode, []*FileNode) { files := make([]*FileNode, 0) for _, el := range dn.Elem.Entries { - if IsDir(el.Mode) { + if el.Id == "0000000000000000000000000000000000000000" { + log.Println("[Lost] "+dn.AbsolutePath+el.Name) + } else if IsDir(el.Mode) { folders = append(folders, NewDirNode(dn, el)) } else if IsRegular(el.Mode) { files = append(files, NewFileNode(dn, el))