aboutsummaryrefslogtreecommitdiff
path: root/weed/command/filer_remote_sync.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/command/filer_remote_sync.go')
-rw-r--r--weed/command/filer_remote_sync.go42
1 files changed, 16 insertions, 26 deletions
diff --git a/weed/command/filer_remote_sync.go b/weed/command/filer_remote_sync.go
index 8b20957e4..41b9c67e8 100644
--- a/weed/command/filer_remote_sync.go
+++ b/weed/command/filer_remote_sync.go
@@ -70,43 +70,33 @@ func runFilerRemoteSynchronize(cmd *Command, args []string) bool {
grpcDialOption := security.LoadClientTLS(util.GetViper(), "grpc.client")
remoteSyncOptions.grpcDialOption = grpcDialOption
+ dir := *remoteSyncOptions.dir
+ filerAddress := *remoteSyncOptions.filerAddress
+
// read filer remote storage mount mappings
- mappings, readErr := filer.ReadMountMappings(grpcDialOption, *remoteSyncOptions.filerAddress)
- if readErr != nil {
- fmt.Printf("read mount mapping: %v", readErr)
+ _, _, remoteStorageMountLocation, storageConf, detectErr := filer.DetectMountInfo(grpcDialOption, filerAddress, dir)
+ if detectErr != nil {
+ fmt.Printf("read mount info: %v", detectErr)
return false
}
filerSource := &source.FilerSource{}
filerSource.DoInitialize(
- *remoteSyncOptions.filerAddress,
- pb.ServerToGrpcAddress(*remoteSyncOptions.filerAddress),
+ filerAddress,
+ pb.ServerToGrpcAddress(filerAddress),
"/", // does not matter
*remoteSyncOptions.readChunkFromFiler,
)
- var found bool
- for dir, remoteStorageMountLocation := range mappings.Mappings {
- if *remoteSyncOptions.dir == dir {
- found = true
- storageConf, readErr := filer.ReadRemoteStorageConf(grpcDialOption, *remoteSyncOptions.filerAddress, remoteStorageMountLocation.Name)
- if readErr != nil {
- fmt.Printf("read remote storage configuration for %s: %v", dir, readErr)
- continue
- }
- fmt.Printf("synchronize %s to remote storage...\n", *remoteSyncOptions.dir)
- if err := util.Retry("filer.remote.sync "+dir, func() error {
- return followUpdatesAndUploadToRemote(&remoteSyncOptions, filerSource, dir, storageConf, remoteStorageMountLocation)
- }); err != nil {
- fmt.Printf("synchronize %s: %v\n", *remoteSyncOptions.dir, err)
- }
- break
+ fmt.Printf("synchronize %s to remote storage...\n", dir)
+ util.RetryForever("filer.remote.sync "+dir, func() error {
+ return followUpdatesAndUploadToRemote(&remoteSyncOptions, filerSource, dir, storageConf, remoteStorageMountLocation)
+ }, func(err error) bool {
+ if err != nil {
+ fmt.Printf("synchronize %s: %v\n", dir, err)
}
- }
- if !found {
- fmt.Printf("directory %s is not mounted to any remote storage\n", *remoteSyncOptions.dir)
- return false
- }
+ return true
+ })
return true
}