Hi, 

I couldn't figure out how to get rsync 2.4.6 to do this, so I added a
--ignore-existing option that ignores existing files on the destination
system (patch attached with this mail). It would be helpful to know if
there's a canonical way of doing this (ie. without having to patch rsync).

best,
vipul.

-- 

Vipul Ved Prakash         |   "I almost died, but I made it, so I'm not so
Software Design Artist    |    serious about formal-wear anymore."
http://vipul.net/         |                         -- Gene Boggs

Only in rsync-2.4.6-hacked/: Makefile
Only in rsync-2.4.6-hacked/: config.cache
Only in rsync-2.4.6-hacked/: config.h
Only in rsync-2.4.6-hacked/: config.log
Only in rsync-2.4.6-hacked/: config.status
diff -u rsync-2.4.6/generator.c rsync-2.4.6-hacked/generator.c
--- rsync-2.4.6/generator.c     Tue Sep  5 19:46:43 2000
+++ rsync-2.4.6-hacked/generator.c      Sat Oct 13 07:53:10 2001
@@ -27,6 +27,7 @@
 extern int preserve_devices;
 extern int preserve_hard_links;
 extern int update_only;
+extern int ignore_existing;
 extern int whole_file;
 extern int block_size;
 extern int csum_length;
@@ -343,6 +344,12 @@
                if (!dry_run) send_sums(NULL,f_out);    
                return;
        }
+
+    if (ignore_existing && fnamecmp == fname) { 
+           if (verbose > 1)
+                       rprintf(FINFO,"%s exists\n",fname);
+               return;
+    } 
 
        if (update_only && cmp_modtime(st.st_mtime,file->modtime)>0 && fnamecmp == 
fname) {
                if (verbose > 1)
Common subdirectories: rsync-2.4.6/lib and rsync-2.4.6-hacked/lib
diff -u rsync-2.4.6/options.c rsync-2.4.6-hacked/options.c
--- rsync-2.4.6/options.c       Tue Sep  5 19:46:43 2000
+++ rsync-2.4.6-hacked/options.c        Sat Oct 13 08:06:07 2001
@@ -65,6 +65,7 @@
 int bwlimit=0;
 int delete_after=0;
 int only_existing=0;
+int ignore_existing=0;
 int max_delete=0;
 int ignore_errors=0;
 #ifdef _WIN32
@@ -141,6 +142,7 @@
   rprintf(F,"     --rsync-path=PATH       specify path to rsync on the remote 
machine\n");
   rprintf(F," -C, --cvs-exclude           auto ignore files in the same way CVS 
does\n");
   rprintf(F,"     --existing              only update files that already exist\n");
+  rprintf(F,"     --ignore-existing       ignore files that already exist on the 
+receiving side\n");
   rprintf(F,"     --delete                delete files that don't exist on the 
sending side\n");
   rprintf(F,"     --delete-excluded       also delete excluded files on the receiving 
side\n");
   rprintf(F,"     --delete-after          delete after transferring, not before\n");
@@ -188,7 +190,7 @@
       OPT_LOG_FORMAT, OPT_PASSWORD_FILE, OPT_SIZE_ONLY, OPT_ADDRESS,
       OPT_DELETE_AFTER, OPT_EXISTING, OPT_MAX_DELETE, OPT_BACKUP_DIR, 
       OPT_IGNORE_ERRORS, OPT_BWLIMIT, OPT_BLOCKING_IO,
-      OPT_MODIFY_WINDOW};
+      OPT_MODIFY_WINDOW, OPT_IGNORE_EXISTING};
 
 static char *short_options = "oblLWHpguDCtcahvqrRIxnSe:B:T:zP";
 
@@ -197,6 +199,7 @@
   {"server",      0,     0,    OPT_SERVER},
   {"sender",      0,     0,    OPT_SENDER},
   {"existing",    0,     0,    OPT_EXISTING},
+  {"ignore-existing", 0, 0,    OPT_IGNORE_EXISTING},
   {"delete",      0,     0,    OPT_DELETE},
   {"delete-excluded", 0, 0,    OPT_DELETE_EXCLUDED},
   {"force",       0,     0,    OPT_FORCE},
@@ -359,6 +362,10 @@
                        only_existing = 1;
                        break;
 
+        case OPT_IGNORE_EXISTING: 
+            ignore_existing = 1;
+            break;
+
                case OPT_DELETE_AFTER:
                        delete_after = 1;
                        break;
@@ -745,6 +752,9 @@
 
        if (only_existing && am_sender)
                args[ac++] = "--existing";
+
+    if (ignore_existing && am_sender) 
+        args[ac++] = "--ignore-existing";
 
        if (tmpdir) {
                args[ac++] = "--temp-dir";
Common subdirectories: rsync-2.4.6/packaging and rsync-2.4.6-hacked/packaging
diff -u rsync-2.4.6/rsync.1 rsync-2.4.6-hacked/rsync.1
--- rsync-2.4.6/rsync.1 Tue Sep  5 19:46:43 2000
+++ rsync-2.4.6-hacked/rsync.1  Sat Oct 13 08:02:47 2001
@@ -274,6 +274,7 @@
      --rsync-path=PATH       specify path to rsync on the remote machine
  -C, --cvs-exclude           auto ignore files in the same way CVS does
      --existing              only update files that already exist
+     --ignore-existing       ignore files that already exist on the receiving side
      --delete                delete files that don\'t exist on the sending side
      --delete-excluded       also delete excluded files on the receiving side
      --delete-after          delete after transferring, not before
@@ -513,6 +514,10 @@
 .IP "\fB--existing\fP" 
 This tells rsync not to create any new files -
 only update files that already exist on the destination\&.
+.IP
+.IP "\fB--ignore-existing\fP" 
+This tells rsync not to update files that already exist on 
+the destination. 
 .IP 
 .IP "\fB--max-delete=NUM\fP" 
 This tells rsync not to delete more than NUM
Common subdirectories: rsync-2.4.6/zlib and rsync-2.4.6-hacked/zlib

Reply via email to