diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-05-29 06:45:23 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-05-29 06:45:27 -0700 |
| commit | 2d7b4e5bb6dd62e14978ad38d882ad78320b1b4a (patch) | |
| tree | 1681b02dbdfff18c7ff18cbaa4b816868dde2479 | |
| parent | ae185b997f80b48ef1155c76e4c1aeca89ab1937 (diff) | |
| download | seaweedfs-2d7b4e5bb6dd62e14978ad38d882ad78320b1b4a.tar.xz seaweedfs-2d7b4e5bb6dd62e14978ad38d882ad78320b1b4a.zip | |
filer.backup: escape colon from path on windows
fix https://github.com/chrislusf/seaweedfs/issues/2084
| -rw-r--r-- | weed/command/filer_sync.go | 23 | ||||
| -rw-r--r-- | weed/command/filer_sync_std.go | 7 | ||||
| -rw-r--r-- | weed/command/filer_sync_windows.go | 12 |
3 files changed, 32 insertions, 10 deletions
diff --git a/weed/command/filer_sync.go b/weed/command/filer_sync.go index 0f34e5701..52fc0b477 100644 --- a/weed/command/filer_sync.go +++ b/weed/command/filer_sync.go @@ -359,16 +359,19 @@ func genProcessFunction(sourcePath string, targetPath string, dataSink sink.Repl return processEventFn } -func buildKey(dataSink sink.ReplicationSink, message *filer_pb.EventNotification, targetPath string, sourceKey util.FullPath, sourcePath string) string { +func buildKey(dataSink sink.ReplicationSink, message *filer_pb.EventNotification, targetPath string, sourceKey util.FullPath, sourcePath string) (key string) { if !dataSink.IsIncremental() { - return util.Join(targetPath, string(sourceKey)[len(sourcePath):]) - } - var mTime int64 - if message.NewEntry != nil { - mTime = message.NewEntry.Attributes.Mtime - } else if message.OldEntry != nil { - mTime = message.OldEntry.Attributes.Mtime + key = util.Join(targetPath, string(sourceKey)[len(sourcePath):]) + } else { + var mTime int64 + if message.NewEntry != nil { + mTime = message.NewEntry.Attributes.Mtime + } else if message.OldEntry != nil { + mTime = message.OldEntry.Attributes.Mtime + } + dateKey := time.Unix(mTime, 0).Format("2006-01-02") + key = util.Join(targetPath, dateKey, string(sourceKey)[len(sourcePath):]) } - dateKey := time.Unix(mTime, 0).Format("2006-01-02") - return util.Join(targetPath, dateKey, string(sourceKey)[len(sourcePath):]) + + return escapeKey(key) } diff --git a/weed/command/filer_sync_std.go b/weed/command/filer_sync_std.go new file mode 100644 index 000000000..63851eaf8 --- /dev/null +++ b/weed/command/filer_sync_std.go @@ -0,0 +1,7 @@ +// +build !windows + +package command + +func escapeKey(key string) string { + return key +} diff --git a/weed/command/filer_sync_windows.go b/weed/command/filer_sync_windows.go new file mode 100644 index 000000000..3d0c9146e --- /dev/null +++ b/weed/command/filer_sync_windows.go @@ -0,0 +1,12 @@ +package command + +import ( + "strings" +) + +func escapeKey(key string) string { + if strings.Contains(key, ":") { + return strings.ReplaceAll(key, ":", "") + } + return key +} |
