diff --git a/s3/s3.go b/s3/s3.go index 14542e822..b6cf0aff2 100644 --- a/s3/s3.go +++ b/s3/s3.go @@ -150,9 +150,10 @@ func init() { // Constants const ( - metaMtime = "Mtime" // the meta key to store mtime in - eg X-Amz-Meta-Mtime - listChunkSize = 1024 // number of items to read at once - maxRetries = 10 // number of retries to make of operations + metaMtime = "Mtime" // the meta key to store mtime in - eg X-Amz-Meta-Mtime + listChunkSize = 1024 // number of items to read at once + maxRetries = 10 // number of retries to make of operations + maxSizeForCopy = 5 * 1024 * 1024 * 1024 // The maximum size of object we can COPY ) // Fs represents a remote s3 server @@ -751,6 +752,11 @@ func (o *Object) SetModTime(modTime time.Time) error { } o.meta[metaMtime] = aws.String(swift.TimeToFloatString(modTime)) + if o.bytes >= maxSizeForCopy { + fs.Debug(o, "SetModTime is unsupported for objects bigger than %v bytes", fs.SizeSuffix(maxSizeForCopy)) + return nil + } + // Guess the content type contentType := fs.MimeType(o)