1 Greetings, and thanks for all of your work on the wonderful rsync!
3 I recently had the need to transfer files only with different mod
4 dates (and to *not* transfer them based on file size differences).
5 This is because I'm backing up files remotely on an untrusted machine,
6 so I'm encrypting them with gpg before transfer. I discovered that
7 rsync didn't already have a --date-only flag, so I added one and am
8 enclosing the diffs in case you (as I hope) decide to include this
9 option in future releases.
16 [Patched update to have context and apply to latest CVS source.]
18 --- generator.c 10 Feb 2004 22:56:16 -0000 1.75
19 +++ generator.c 24 Feb 2004 19:17:31 -0000
21 extern int always_checksum;
22 extern char *compare_dest;
24 +extern int date_only;
27 /* choose whether to skip a particular file */
28 static int skip_file(char *fname, struct file_struct *file, STRUCT_STAT *st)
31 + return cmp_modtime(st->st_mtime,file->modtime) == 0;
32 if (st->st_size != file->length) {
35 --- options.c 22 Feb 2004 08:56:43 -0000 1.139
36 +++ options.c 24 Feb 2004 19:17:31 -0000
38 int safe_symlinks = 0;
39 int copy_unsafe_links = 0;
44 int only_existing = 0;
46 rprintf(F," --timeout=TIME set I/O timeout in seconds\n");
47 rprintf(F," -I, --ignore-times turn off mod time & file size quick check\n");
48 rprintf(F," --size-only ignore mod time for quick check (use size)\n");
49 + rprintf(F," --date-only ignore size for quick check (use mod time)\n");
50 rprintf(F," --modify-window=NUM compare mod times with reduced accuracy\n");
51 rprintf(F," -T --temp-dir=DIR create temporary files in directory DIR\n");
52 rprintf(F," --compare-dest=DIR also compare destination files relative to DIR\n");
54 {"password-file", 0, POPT_ARG_STRING, &password_file, 0, 0, 0 },
55 {"ignore-times", 'I', POPT_ARG_NONE, &ignore_times, 0, 0, 0 },
56 {"size-only", 0, POPT_ARG_NONE, &size_only, 0, 0, 0 },
57 + {"date-only", 0, POPT_ARG_NONE, &date_only, 0, 0, 0 },
58 {"modify-window", 0, POPT_ARG_INT, &modify_window, OPT_MODIFY_WINDOW, 0, 0 },
59 {"one-file-system", 'x', POPT_ARG_NONE, &one_file_system, 0, 0, 0 },
60 {"delete", 0, POPT_ARG_NONE, &delete_mode, 0, 0, 0 },
64 args[ac++] = "--size-only";
67 + args[ac++] = "--date-only";
69 if (modify_window_set) {
70 if (asprintf(&arg, "--modify-window=%d", modify_window) < 0)
71 --- rsync.1 2 Feb 2004 18:23:09 -0000 1.163
72 +++ rsync.1 24 Feb 2004 19:17:32 -0000
74 --timeout=TIME set I/O timeout in seconds
75 -I, --ignore-times turn off mod time & file size quick check
76 --size-only ignore mod time for quick check (use size)
77 + --date-only ignore size for quick check (use mod time)
78 --modify-window=NUM compare mod times with reduced accuracy
79 -T --temp-dir=DIR create temporary files in directory DIR
80 --compare-dest=DIR also compare received files relative to DIR
82 regardless of timestamp\&. This is useful when starting to use rsync
83 after using another mirroring system which may not preserve timestamps
86 +.IP "\fB--date-only\fP"
87 +Normally rsync will skip any files that are
88 +already the same size and have the same modification time-stamp\&. With the
89 +--date-only option, files will be skipped if they have the same
90 +timestamp, regardless of size\&. This may be useful when the remote
91 +files have passed through a size-changing filter, e\&.g\&. for encryption\&.
93 .IP "\fB--modify-window\fP"
94 When comparing two timestamps rsync treats
95 --- rsync.yo 2 Feb 2004 18:23:09 -0000 1.147
96 +++ rsync.yo 24 Feb 2004 19:17:33 -0000
98 --timeout=TIME set I/O timeout in seconds
99 -I, --ignore-times turn off mod time & file size quick check
100 --size-only ignore mod time for quick check (use size)
101 + --date-only ignore size for quick check (use mod time)
102 --modify-window=NUM compare mod times with reduced accuracy
103 -T --temp-dir=DIR create temporary files in directory DIR
104 --compare-dest=DIR also compare received files relative to DIR
106 regardless of timestamp. This is useful when starting to use rsync
107 after using another mirroring system which may not preserve timestamps
110 +dit(bf(--date-only)) Normally rsync will skip any files that are
111 +already the same size and have the same modification time-stamp. With the
112 +--date-only option, files will be skipped if they have the same
113 +timestamp, regardless of size. This may be useful when the remote
114 +files have passed through a size-changing filter, e.g. for encryption.
116 dit(bf(--modify-window)) When comparing two timestamps rsync treats
117 the timestamps as being equal if they are within the value of