I had a situation where I needed to remove a file locally after I
transferred it to a remote machine. I modified rsync and added the
--delete-local option.
I am now submitting my changes back to the community in case anyone else
needs this option. enjoy
p.s. I am not subscribed to the list but you can reply to me directly at
[EMAIL PROTECTED]
-Dave
--
Dave Seff <[EMAIL PROTECTED]>
IT Manager
Advisen Ltd.
diff -Nur rsync-2.5.6/lib/dummy rsync-dave/lib/dummy
--- rsync-2.5.6/lib/dummy 1969-12-31 19:00:00.000000000 -0500
+++ rsync-dave/lib/dummy 2003-09-19 13:33:56.000000000 -0400
@@ -0,0 +1,2 @@
+This is a dummy file to ensure that the lib directory gets created
+by configure when a VPATH is used.
diff -Nur rsync-2.5.6/options.c rsync-dave/options.c
--- rsync-2.5.6/options.c 2003-01-27 22:11:57.000000000 -0500
+++ rsync-dave/options.c 2003-09-19 13:53:58.000000000 -0400
@@ -49,6 +49,7 @@
int local_server=0;
int ignore_times=0;
int delete_mode=0;
+int delete_local=0;
int delete_excluded=0;
int one_file_system=0;
int remote_version=0;
@@ -238,6 +239,7 @@
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");
+ rprintf(F," --delete-local delete the local files after transferring\n");
rprintf(F," --ignore-errors delete even if there are IO errors\n");
rprintf(F," --max-delete=NUM don't delete more than NUM files\n");
rprintf(F," --partial keep partially transferred files\n");
@@ -288,7 +290,7 @@
OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_STATS, OPT_PARTIAL, OPT_PROGRESS,
OPT_COPY_UNSAFE_LINKS, OPT_SAFE_LINKS, OPT_COMPARE_DEST, OPT_LINK_DEST,
OPT_LOG_FORMAT, OPT_PASSWORD_FILE, OPT_SIZE_ONLY, OPT_ADDRESS,
- OPT_DELETE_AFTER, OPT_EXISTING, OPT_MAX_DELETE, OPT_BACKUP_DIR,
+ OPT_DELETE_AFTER, OPT_DELETE_LOCAL, OPT_EXISTING, OPT_MAX_DELETE, OPT_BACKUP_DIR,
OPT_IGNORE_ERRORS, OPT_BWLIMIT, OPT_BLOCKING_IO,
OPT_NO_BLOCKING_IO, OPT_WHOLE_FILE, OPT_NO_WHOLE_FILE,
OPT_MODIFY_WINDOW, OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_IGNORE_EXISTING};
@@ -306,6 +308,7 @@
{"delete", 0, POPT_ARG_NONE, &delete_mode , 0, 0, 0 },
{"existing", 0, POPT_ARG_NONE, &only_existing , 0, 0, 0 },
{"ignore-existing", 0, POPT_ARG_NONE, &opt_ignore_existing , 0, 0, 0 },
+ {"delete-local", 0, POPT_ARG_NONE, 0, OPT_DELETE_LOCAL, 0, 0 },
{"delete-after", 0, POPT_ARG_NONE, 0, OPT_DELETE_AFTER, 0, 0 },
{"delete-excluded", 0, POPT_ARG_NONE, 0, OPT_DELETE_EXCLUDED, 0, 0 },
{"force", 0, POPT_ARG_NONE, &force_delete , 0, 0, 0 },
@@ -490,6 +493,10 @@
delete_mode = 1;
break;
+ case OPT_DELETE_LOCAL:
+ delete_local = 1;
+ break;
+
case OPT_DELETE_EXCLUDED:
delete_excluded = 1;
delete_mode = 1;
diff -Nur rsync-2.5.6/sender.c rsync-dave/sender.c
--- rsync-2.5.6/sender.c 2002-04-09 02:03:50.000000000 -0400
+++ rsync-dave/sender.c 2003-09-19 14:46:37.000000000 -0400
@@ -104,6 +104,7 @@
struct stats initial_stats;
extern int write_batch; /* dw */
extern int read_batch; /* dw */
+ extern int delete_local;
int checksums_match; /* dw */
int buff_len; /* dw */
char buff[CHUNK_SIZE]; /* dw */
@@ -281,6 +282,16 @@
if (verbose > 2)
rprintf(FINFO,"sender finished %s\n",fname);
+
+ /* here is where I delete the file locally after I have sent it. */
+ if (delete_local)
+ {
+ if (robust_unlink(f_name(file)) != 0) {
+ rprintf(FERROR,"delete_one: unlink %s: %s\n",f_name(file),strerror(errno));
+ } else if (verbose) {
+ rprintf(FINFO,"deleting %s\n",f_name(file));
+ }
+ }
}
if (verbose > 2)
@@ -297,6 +308,3 @@
}
-
-
-
diff -Nur rsync-2.5.6/zlib/dummy rsync-dave/zlib/dummy
--- rsync-2.5.6/zlib/dummy 1969-12-31 19:00:00.000000000 -0500
+++ rsync-dave/zlib/dummy 2003-09-19 13:33:59.000000000 -0400
@@ -0,0 +1,2 @@
+This is a dummy file to ensure that the lib directory gets created
+by configure when a VPATH is used.
--
To unsubscribe or change options: http://lists.samba.org/mailman/listinfo/rsync
Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html