in oss/lib/cp.go [2143:2178]
func (cc *CopyCommand) skipUpload(spath string, bucket *oss.Bucket, objectName string, destURL CloudURL, srcModifiedTime int64) (bool, error) {
if cc.cpOption.startTime > 0 && srcModifiedTime < cc.cpOption.startTime {
return true, nil
}
if cc.cpOption.endTime > 0 && srcModifiedTime > cc.cpOption.endTime {
return true, nil
}
if cc.cpOption.snapshotPath != "" || cc.cpOption.update {
if cc.cpOption.snapshotPath != "" {
tstr, err := cc.cpOption.snapshotldb.Get([]byte(spath), nil)
if err == nil {
t, _ := strconv.ParseInt(string(tstr), 10, 64)
if t == srcModifiedTime {
return true, nil
}
}
}
if cc.cpOption.update {
if props, err := cc.command.ossGetObjectStatRetry(bucket, objectName, cc.cpOption.payerOptions...); err == nil {
destt, err := time.Parse(http.TimeFormat, props.Get(oss.HTTPHeaderLastModified))
if err == nil && destt.Unix() >= srcModifiedTime {
return true, nil
}
}
}
} else if !cc.cpOption.force {
if _, err := cc.command.ossGetObjectMetaRetry(bucket, objectName, cc.cpOption.payerOptions...); err == nil {
if !cc.confirm(CloudURLToString(destURL.bucket, objectName)) {
return true, nil
}
}
}
return false, nil
}