mirror of
https://github.com/rclone/rclone.git
synced 2024-11-22 14:51:48 +08:00
s3: make SetModTime work for GLACIER while syncing - Fixes #3224
Before this change rclone would fail with Failed to set modification time: InvalidObjectState: Operation is not valid for the source object's storage class when attempting to set the modification time of an object in GLACIER. After this change rclone will re-upload the object as part of a sync if it needs to change the modification time. See: https://forum.rclone.org/t/suspected-bug-in-s3-or-compatible-sync-logic-to-glacier/10187
This commit is contained in:
parent
ec4e7316f2
commit
1a2fb52266
|
@ -1736,6 +1736,9 @@ func (o *Object) SetModTime(modTime time.Time) error {
|
|||
if o.fs.opt.SSEKMSKeyID != "" {
|
||||
req.SSEKMSKeyId = &o.fs.opt.SSEKMSKeyID
|
||||
}
|
||||
if o.fs.opt.StorageClass == "GLACIER" || o.fs.opt.StorageClass == "DEEP_ARCHIVE" {
|
||||
return fs.ErrorCantSetModTime
|
||||
}
|
||||
if o.fs.opt.StorageClass != "" {
|
||||
req.StorageClass = &o.fs.opt.StorageClass
|
||||
}
|
||||
|
|
|
@ -268,6 +268,11 @@ files whose local modtime is newer than the time it was last uploaded.
|
|||
The modified time is stored as metadata on the object as
|
||||
`X-Amz-Meta-Mtime` as floating point since the epoch accurate to 1 ns.
|
||||
|
||||
If the modification time needs to be updated rclone will attempt to perform a server
|
||||
side copy to update the modification if the object can be copied in a single part.
|
||||
In the case the object is larger than 5Gb or is in Glacier or Glacier Deep Archive
|
||||
storage the object will be uploaded rather than copied.
|
||||
|
||||
### Multipart uploads ###
|
||||
|
||||
rclone supports multipart uploads with S3 which means that it can
|
||||
|
|
Loading…
Reference in New Issue
Block a user