Delay the renaming of all the temp files until the end of the transfer.
---- orig/options.c 2005-01-24 01:43:10
-+++ options.c 2005-01-23 07:27:59
+--- orig/options.c 2005-01-25 03:26:51
++++ options.c 2005-01-25 03:28:41
@@ -101,6 +101,7 @@ int modify_window = 0;
int blocking_io = -1;
int checksum_seed = 0;
long block_size = 0; /* "long" because popt can't set an int32. */
-@@ -276,6 +277,7 @@ void usage(enum logcode F)
- rprintf(F," --rsync-path=PATH specify path to rsync on the remote machine\n");
- rprintf(F," --existing only update files that already exist\n");
- rprintf(F," --ignore-existing ignore files that already exist on receiving side\n");
+@@ -288,6 +289,7 @@ void usage(enum logcode F)
+ rprintf(F," --max-size=SIZE don't transfer any file larger than SIZE\n");
+ rprintf(F," --partial keep partially transferred files\n");
+ rprintf(F," --partial-dir=DIR put a partially transferred file into DIR\n");
+ rprintf(F," --delay-renames renames transferred files into place at end\n");
- rprintf(F," --delete delete files that don't exist on the sending side\n");
- rprintf(F," --delete-before receiver deletes before transfer, not during\n");
- rprintf(F," --delete-after receiver deletes after transfer, not during\n");
-@@ -401,6 +403,7 @@ static struct poptOption long_options[]
+ rprintf(F," --numeric-ids don't map uid/gid values by user/group name\n");
+ rprintf(F," --timeout=TIME set I/O timeout in seconds\n");
+ rprintf(F," -I, --ignore-times turn off mod time & file size quick check\n");
+@@ -407,6 +409,7 @@ static struct poptOption long_options[]
{"progress", 0, POPT_ARG_NONE, &do_progress, 0, 0, 0 },
{"partial", 0, POPT_ARG_NONE, &keep_partial, 0, 0, 0 },
{"partial-dir", 0, POPT_ARG_STRING, &partial_dir, 0, 0, 0 },
{"ignore-errors", 0, POPT_ARG_NONE, &ignore_errors, 0, 0, 0 },
{"blocking-io", 0, POPT_ARG_VAL, &blocking_io, 1, 0, 0 },
{"no-blocking-io", 0, POPT_ARG_VAL, &blocking_io, 0, 0, 0 },
-@@ -955,11 +958,15 @@ int parse_arguments(int *argc, const cha
+@@ -995,11 +998,15 @@ int parse_arguments(int *argc, const cha
bwlimit_writemax = 512;
}
return 0;
}
keep_partial = 0;
-@@ -1198,6 +1205,8 @@ void server_options(char **args,int *arg
+@@ -1236,6 +1243,8 @@ void server_options(char **args,int *arg
if (partial_dir && am_sender) {
args[ac++] = "--partial-dir";
args[ac++] = partial_dir;
if (delete_after && recurse && !local_name && flist->count > 0)
delete_files(flist);
---- orig/rsync.yo 2005-01-24 01:43:10
-+++ rsync.yo 2005-01-23 07:28:13
-@@ -342,6 +342,7 @@ verb(
- --rsync-path=PATH specify path to rsync on the remote machine
- --existing only update files that already exist
- --ignore-existing ignore files that already exist on receiver
+--- orig/rsync.yo 2005-01-25 03:26:51
++++ rsync.yo 2005-01-25 03:28:30
+@@ -353,6 +353,7 @@ verb(
+ --max-size=SIZE don't transfer any file larger than SIZE
+ --partial keep partially transferred files
+ --partial-dir=DIR put a partially transferred file into DIR
+ --delay-renames renames transferred files into place at end
- --delete delete files that don't exist on sender
- --delete-before receiver deletes before xfer, not during
- --delete-after receiver deletes after transfer, not during
-@@ -545,9 +546,9 @@ or appended data, and also on systems th
+ --numeric-ids don't map uid/gid values by user/group name
+ --timeout=TIME set I/O timeout in seconds
+ -I, --ignore-times turn off mod time & file size quick check
+@@ -549,9 +550,9 @@ or appended data, and also on systems th
bound.
The option implies --partial (since an interrupted transfer does not delete
WARNING: The file's data will be in an inconsistent state during the
transfer (and possibly afterward if the transfer gets interrupted), so you
-@@ -1003,6 +1004,17 @@ environment and then just use the -P opt
+@@ -1036,6 +1037,17 @@ environment and then just use the -P opt
does not look for this environment value is when --inplace was also
specified (since --inplace conflicts with --partial-dir).