Iterations
Data transfers consist of consecutive iterations. Each iteration passes the source and destination buckets once. At each iteration, Object Storage performs the following steps:-
Makes a
ListObjectsrequest for every 1000 objects in the source bucket. -
Makes
HeadObjectrequests to both the source and destination buckets for every listed object, and then determines which objects need to be transferred:- If you allow overwriting destination objects, a source object that is newer than its destination pair (based on the
Last-Modifiedheader) overwrites it. If you also allow overwriting unmanaged objects, the same applies to objects in the destination that weren’t transferred at previous iterations. - After the first successful iteration, source objects that were last modified before the last successful iteration are skipped to reduce synchronization costs (unless the source object’s pair in the destination is now older than the object itself and overwriting objects is allowed).
- If you allow overwriting destination objects, a source object that is newer than its destination pair (based on the
-
For every object that needs to be transferred:
-
If the object is less than 100 MB, makes a single
GetObjectrequest to the source bucket and a singlePutObjectrequest to the destination bucket. -
For larger objects, makes the following requests:
CreateMultipartUploadto the destination bucket.GetObjectto the source bucket andUploadPartto the destination bucket for every approximately 50 MB of the object.CompleteMultipartUploadto the destination bucket after uploading all parts.
-
If the object is less than 100 MB, makes a single
Number of iterations and empty iterations
You can configure a data transfer to stop after one iteration or after a number of consecutive empty iterations or to continue indefinitely. An empty iteration is an iteration where no data is transferred because the following conditions are met:- All objects in the source are unchanged since the last successful iteration (this doesn’t apply to deleted objects).
- If overwriting destination objects is allowed, all objects in the destination (including objects that weren’t transferred at previous iterations, if overwriting unmanaged objects is allowed) were last modified at the same time as their pairs in the source.
Costs
The cost of a data transfer consists of the costs for the source and destination buckets. The data transfer itself doesn’t incur additional costs.| Destination: Nebius | Destination: external | |
|---|---|---|
| Source: Nebius |
|
|
| Source: external |
| Not supported |