New --ignore-existing option, patch previously distributed with
authorMartin Pool <mbp@samba.org>
Fri, 25 Jan 2002 10:42:23 +0000 (10:42 +0000)
committerMartin Pool <mbp@samba.org>
Fri, 25 Jan 2002 10:42:23 +0000 (10:42 +0000)
Vipul's Razor.  (Debian #124286)

NEWS
generator.c
options.c
rsync.yo

diff --git a/NEWS b/NEWS
index 2550a0c..cc8a300 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -34,3 +34,6 @@ rsync 2.5.2 (???)
 
     * Improvements to batch mode support.  This is still experimental
       but testing would be welcome.   (Jos Backus)
+    * New --ignore-existing option, patch previously distributed with
+      Vipul's Razor.  (Debian #124286)
index 9617c92..303b18e 100644 (file)
@@ -31,6 +31,7 @@ extern int am_root;
 extern int preserve_devices;
 extern int preserve_hard_links;
 extern int update_only;
+extern int opt_ignore_existing;
 extern int whole_file;
 extern int block_size;
 extern int csum_length;
@@ -383,6 +384,12 @@ void recv_generator(char *fname,struct file_list *flist,int i,int f_out)
                return;
        }
 
+       if (opt_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)
                        rprintf(FINFO,"%s is newer\n",fname);
index 922965a..612eafd 100644 (file)
--- a/options.c
+++ b/options.c
@@ -65,6 +65,7 @@ int size_only=0;
 int bwlimit=0;
 int delete_after=0;
 int only_existing=0;
+int opt_ignore_existing=0;
 int max_delete=0;
 int ignore_errors=0;
 #ifdef _WIN32
@@ -208,6 +209,7 @@ void usage(enum logcode F)
   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");
@@ -262,7 +264,7 @@ enum {OPT_VERSION = 1000, OPT_SUFFIX, OPT_SENDER, OPT_SERVER, OPT_EXCLUDE,
       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_READ_BATCH, OPT_WRITE_BATCH};
+      OPT_MODIFY_WINDOW, OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_IGNORE_EXISTING};
 
 static struct poptOption long_options[] = {
   /* longName, shortName, argInfo, argPtr, value, descrip, argDesc */
@@ -276,6 +278,7 @@ static struct poptOption long_options[] = {
   {"one-file-system", 'x', POPT_ARG_NONE,   &one_file_system},
   {"delete",           0,  POPT_ARG_NONE,   &delete_mode},
   {"existing",         0,  POPT_ARG_NONE,   &only_existing},
+  {"ignore-existing",  0,  POPT_ARG_NONE,   &opt_ignore_existing},
   {"delete-after",     0,  POPT_ARG_NONE,   &delete_after},
   {"delete-excluded",  0,  POPT_ARG_NONE,   0,              OPT_DELETE_EXCLUDED},
   {"force",            0,  POPT_ARG_NONE,   &force_delete},
@@ -691,6 +694,9 @@ void server_options(char **args,int *argc)
        if (only_existing && am_sender)
                args[ac++] = "--existing";
 
+       if (opt_ignore_existing && am_sender) 
+               args[ac++] = "--ignore-existing";
+
        if (tmpdir) {
                args[ac++] = "--temp-dir";
                args[ac++] = tmpdir;
index 145ae71..3a54b8e 100644 (file)
--- a/rsync.yo
+++ b/rsync.yo
@@ -1,5 +1,5 @@
 mailto(rsync-bugs@samba.org)
-manpage(rsync)(1)(14 Dec 2001)()()
+manpage(rsync)(1)(25 Jan 2002)()()
 manpagename(rsync)(faster, flexible replacement for rcp)
 manpagesynopsis()
 
@@ -245,6 +245,7 @@ verb(
      --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
@@ -452,6 +453,10 @@ contents of only one filesystem.
 dit(bf(--existing)) This tells rsync not to create any new files -
 only update files that already exist on the destination.
 
+dit(bf(--ignore-existing))
+This tells rsync not to update files that already exist on 
+the destination. 
+
 dit(bf(--max-delete=NUM)) This tells rsync not to delete more than NUM
 files or directories. This is useful when mirroring very large trees
 to prevent disasters.