aboutsummaryrefslogtreecommitdiff
path: root/weed/shell/command_fs_meta_save.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/shell/command_fs_meta_save.go')
-rw-r--r--weed/shell/command_fs_meta_save.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/weed/shell/command_fs_meta_save.go b/weed/shell/command_fs_meta_save.go
index ed19e3d01..d154fc12b 100644
--- a/weed/shell/command_fs_meta_save.go
+++ b/weed/shell/command_fs_meta_save.go
@@ -5,6 +5,7 @@ import (
"fmt"
"io"
"os"
+ "path/filepath"
"sync"
"sync/atomic"
"time"
@@ -46,6 +47,7 @@ func (c *commandFsMetaSave) Do(args []string, commandEnv *CommandEnv, writer io.
fsMetaSaveCommand := flag.NewFlagSet(c.Name(), flag.ContinueOnError)
verbose := fsMetaSaveCommand.Bool("v", false, "print out each processed files")
outputFileName := fsMetaSaveCommand.String("o", "", "output the meta data to this file")
+ isObfuscate := fsMetaSaveCommand.Bool("obfuscate", false, "obfuscate the file names")
// chunksFileName := fsMetaSaveCommand.String("chunks", "", "output all the chunks to this file")
if err = fsMetaSaveCommand.Parse(args); err != nil {
return nil
@@ -69,6 +71,11 @@ func (c *commandFsMetaSave) Do(args []string, commandEnv *CommandEnv, writer io.
}
defer dst.Close()
+ var cipherKey util.CipherKey
+ if *isObfuscate {
+ cipherKey = util.GenCipherKey()
+ }
+
err = doTraverseBfsAndSaving(commandEnv, writer, path, *verbose, func(outputChan chan interface{}) {
sizeBuf := make([]byte, 4)
for item := range outputChan {
@@ -78,6 +85,12 @@ func (c *commandFsMetaSave) Do(args []string, commandEnv *CommandEnv, writer io.
dst.Write(b)
}
}, func(entry *filer_pb.FullEntry, outputChan chan interface{}) (err error) {
+ if !entry.Entry.IsDirectory {
+ ext := filepath.Ext(entry.Entry.Name)
+ if encrypted, encErr := util.Encrypt([]byte(entry.Entry.Name), cipherKey); encErr == nil {
+ entry.Entry.Name = util.Base64Encode(encrypted)[:len(entry.Entry.Name)] + ext
+ }
+ }
bytes, err := proto.Marshal(entry)
if err != nil {
fmt.Fprintf(writer, "marshall error: %v\n", err)