scp patch to delete source files after copy

This is a discussion on scp patch to delete source files after copy within the OpenSSH Development forums, part of the Networking and Network Related category; At work we have a large collection of scripts to move log and config files around. These depend on commercial (...


Go Back   Usenet Forums > Networking and Network Related > OpenSSH Development

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 05-14-2006
adam@skullslayer.rod.org
 
Posts: n/a
Default scp patch to delete source files after copy

At work we have a large collection of scripts to move log
and config files around. These depend on commercial (F-Secure)
ssh/scp, as it supports the -u option to delete the source file
after (successful) copying. That is the sole reason we can't
run openssh on our 150+ unix boxes.

I have attached a patch below, which adds the -u option to
delete the source file after copying, provided there were no
errors. I would appreciate any feedback on this patch, with
an aim to seeing it included in future releases.

Adam



*** scp.c 2006-01-31 22:11:38.000000000 +1100
--- scp.c.new 2006-05-14 18:11:14.000000000 +1000
***************
*** 99,104 ****
--- 99,107 ----
/* This is set to zero if the progressmeter is not desired. */
int showprogress = 1;

+ /* Delete the source after copying. */
+ int delete_source = 0;
+
/* This is the program to execute for the secured connection. ("ssh" or -S) */
char *ssh_program = _PATH_SSH_PROGRAM;

***************
*** 278,284 ****
addargs(&args, "-oClearAllForwardings yes");

fflag = tflag = 0;
! while ((ch = getopt(argc, argv, "dfl:prtvBCc:i:P:q1246S:o:F:")) != -1)
switch (ch) {
/* User-visible flags. */
case '1':
--- 281,287 ----
addargs(&args, "-oClearAllForwardings yes");

fflag = tflag = 0;
! while ((ch = getopt(argc, argv, "dfl:prtuvBCc:i:P:q1246S:o:F:")) != -1)
switch (ch) {
/* User-visible flags. */
case '1':
***************
*** 315,320 ****
--- 318,326 ----
case 'S':
ssh_program = xstrdup(optarg);
break;
+ case 'u':
+ delete_source = 1;
+ break;
case 'v':
addargs(&args, "-v");
verbose_mode = 1;
***************
*** 373,381 ****
remin = remout = -1;
do_cmd_pid = -1;
/* Command to be executed on remote system using "ssh". */
! (void) snprintf(cmd, sizeof cmd, "scp%s%s%s%s",
verbose_mode ? " -v" : "",
iamrecursive ? " -r" : "", pflag ? " -p" : "",
targetshouldbedirectory ? " -d" : "");

(void) signal(SIGPIPE, lostconn);
--- 379,388 ----
remin = remout = -1;
do_cmd_pid = -1;
/* Command to be executed on remote system using "ssh". */
! (void) snprintf(cmd, sizeof cmd, "scp%s%s%s%s%s",
verbose_mode ? " -v" : "",
iamrecursive ? " -r" : "", pflag ? " -p" : "",
+ delete_source ? " -u" : "",
targetshouldbedirectory ? " -d" : "");

(void) signal(SIGPIPE, lostconn);
***************
*** 651,659 ****
haderr = errno;
fd = -1;
}
! if (!haderr)
(void) atomicio(vwrite, remout, "", 1);
! else
run_err("%s: %s", name, strerror(haderr));
(void) response();
}
--- 658,672 ----
haderr = errno;
fd = -1;
}
! if (!haderr) {
! if (delete_source) {
! if (verbose_mode) {
! fprintf(stderr, "Deleting source: %s\n", name);
! }
! unlink(name);
! }
(void) atomicio(vwrite, remout, "", 1);
! } else
run_err("%s: %s", name, strerror(haderr));
(void) response();
}
***************
*** 1084,1090 ****
usage(void)
{
(void) fprintf(stderr,
! "usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]\n"
" [-l limit] [-o ssh_option] [-P port] [-S program]\n"
" [[user@]host1:]file1 [...] [[user@]host2:]file2\n");
exit(1);
--- 1097,1103 ----
usage(void)
{
(void) fprintf(stderr,
! "usage: scp [-1246BCpqruv] [-c cipher] [-F ssh_config] [-i identity_file]\n"
" [-l limit] [-o ssh_option] [-P port] [-S program]\n"
" [[user@]host1:]file1 [...] [[user@]host2:]file2\n");
exit(1);
*** scp.1 2006-01-20 11:31:47.000000000 +1100
--- scp.1.new 2006-05-14 18:59:35.000000000 +1000
***************
*** 20,26 ****
.Sh SYNOPSIS
.Nm scp
.Bk -words
! .Op Fl 1246BCpqrv
.Op Fl c Ar cipher
.Op Fl F Ar ssh_config
.Op Fl i Ar identity_file
--- 20,26 ----
.Sh SYNOPSIS
.Nm scp
.Bk -words
! .Op Fl 1246BCpqruv
.Op Fl c Ar cipher
.Op Fl F Ar ssh_config
.Op Fl i Ar identity_file
***************
*** 188,193 ****
--- 188,195 ----
The program must understand
.Xr ssh 1
options.
+ .It Fl u
+ Deletes the source file after copying.
.It Fl v
Verbose mode.
Causes

_______________________________________________
openssh-unix-dev mailing list
openssh-unix-dev@mindrot.org
http://www.mindrot.org/mailman/listi...enssh-unix-dev
Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 07:14 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0