Browse Source

filer.backup: escape colon from path on windows

fix https://github.com/chrislusf/seaweedfs/issues/2084
pull/2104/head
Chris Lu 4 years ago
parent
commit
2d7b4e5bb6
  1. 23
      weed/command/filer_sync.go
  2. 7
      weed/command/filer_sync_std.go
  3. 12
      weed/command/filer_sync_windows.go

23
weed/command/filer_sync.go

@ -359,16 +359,19 @@ func genProcessFunction(sourcePath string, targetPath string, dataSink sink.Repl
return processEventFn 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() { 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)
} }

7
weed/command/filer_sync_std.go

@ -0,0 +1,7 @@
// +build !windows
package command
func escapeKey(key string) string {
return key
}

12
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
}
Loading…
Cancel
Save