diff --git a/weed/command/filer_remote_sync.go b/weed/command/filer_remote_sync.go index 84d2f0e91..f1b5ef01d 100644 --- a/weed/command/filer_remote_sync.go +++ b/weed/command/filer_remote_sync.go @@ -14,6 +14,7 @@ import ( type RemoteSyncOptions struct { filerAddress *string + storageClass *string grpcDialOption grpc.DialOption readChunkFromFiler *bool timeAgo *time.Duration @@ -45,6 +46,7 @@ func init() { cmdFilerRemoteSynchronize.Run = runFilerRemoteSynchronize // break init cycle remoteSyncOptions.filerAddress = cmdFilerRemoteSynchronize.Flag.String("filer", "localhost:8888", "filer of the SeaweedFS cluster") remoteSyncOptions.dir = cmdFilerRemoteSynchronize.Flag.String("dir", "", "a mounted directory on filer") + remoteSyncOptions.storageClass = cmdFilerRemoteSynchronize.Flag.String("storageClass", "None", "override amz storage class, empty to delete") remoteSyncOptions.readChunkFromFiler = cmdFilerRemoteSynchronize.Flag.Bool("filerProxy", false, "read file chunks from filer instead of volume servers") remoteSyncOptions.timeAgo = cmdFilerRemoteSynchronize.Flag.Duration("timeAgo", 0, "start time before now, skipping previous metadata changes. \"300ms\", \"1.5h\" or \"2h45m\". Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\"") remoteSyncOptions.clientId = util.RandomInt32() diff --git a/weed/command/filer_remote_sync_dir.go b/weed/command/filer_remote_sync_dir.go index 6f061bda8..288b89a5a 100644 --- a/weed/command/filer_remote_sync_dir.go +++ b/weed/command/filer_remote_sync_dir.go @@ -37,6 +37,12 @@ func followUpdatesAndUploadToRemote(option *RemoteSyncOptions, filerSource *sour var lastLogTsNs = time.Now().UnixNano() processEventFnWithOffset := pb.AddOffsetFunc(func(resp *filer_pb.SubscribeMetadataResponse) error { + storageClass := *option.storageClass + if storageClass == "" { + delete(resp.EventNotification.NewEntry.Extended, s3_constants.AmzStorageClass) + } else if storageClass != "None" { + resp.EventNotification.NewEntry.Extended[s3_constants.AmzStorageClass] = []byte(storageClass) + } processor.AddSyncJob(resp) return nil }, 3*time.Second, func(counter int64, lastTsNs int64) error { diff --git a/weed/command/filer_sync_jobs.go b/weed/command/filer_sync_jobs.go index 50428a3ad..9d2ba75d5 100644 --- a/weed/command/filer_sync_jobs.go +++ b/weed/command/filer_sync_jobs.go @@ -54,7 +54,7 @@ func (t *MetadataProcessor) AddSyncJob(resp *filer_pb.SubscribeMetadataResponse) // if is the oldest job, write down the watermark isOldest := true - for t, _ := range t.activeJobs { + for t := range t.activeJobs { if resp.TsNs > t { isOldest = false break