X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/8d9dc9f99db13d42272b7c150f2e6849331ccdc1..c95da96a0c51c66c8cb2eff97b768a717d9e0c79:/options.c diff --git a/options.c b/options.c index 11dbcbea..10c27733 100644 --- a/options.c +++ b/options.c @@ -55,6 +55,8 @@ int am_sender=0; int recurse = 0; int am_daemon=0; int am_client=0; +int do_stats=0; +int keep_partial=0; int block_size=BLOCK_SIZE; @@ -74,55 +76,70 @@ void usage(int F) { rprintf(F,"rsync version %s Copyright Andrew Tridgell and Paul Mackerras\n\n", VERSION); - rprintf(F,"Usage:\t%s [options] src user@host:dest\nOR",RSYNC_NAME); - rprintf(F,"\t%s [options] user@host:src dest\n\n",RSYNC_NAME); - rprintf(F,"Options:\n"); - rprintf(F,"-v, --verbose increase verbosity\n"); - rprintf(F,"-c, --checksum always checksum\n"); - rprintf(F,"-a, --archive archive mode (same as -rlptDog)\n"); - rprintf(F,"-r, --recursive recurse into directories\n"); - rprintf(F,"-R, --relative use relative path names\n"); - rprintf(F,"-b, --backup make backups (default ~ extension)\n"); - rprintf(F,"-u, --update update only (don't overwrite newer files)\n"); - rprintf(F,"-l, --links preserve soft links\n"); - rprintf(F,"-L, --copy-links treat soft links like regular files\n"); - rprintf(F,"-H, --hard-links preserve hard links\n"); - rprintf(F,"-p, --perms preserve permissions\n"); - rprintf(F,"-o, --owner preserve owner (root only)\n"); - rprintf(F,"-g, --group preserve group\n"); - rprintf(F,"-D, --devices preserve devices (root only)\n"); - rprintf(F,"-t, --times preserve times\n"); - rprintf(F,"-S, --sparse handle sparse files efficiently\n"); - rprintf(F,"-n, --dry-run show what would have been transferred\n"); - rprintf(F,"-W, --whole-file copy whole files, no incremental checks\n"); - rprintf(F,"-x, --one-file-system don't cross filesystem boundaries\n"); - rprintf(F,"-B, --block-size SIZE checksum blocking size\n"); - rprintf(F,"-e, --rsh COMMAND specify rsh replacement\n"); - 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," --delete delete files that don't exist on the sending side\n"); - rprintf(F," --force force deletion of directories even if not empty\n"); - rprintf(F," --numeric-ids don't map uid/gid values by user/group name\n"); - rprintf(F," --timeout TIME set IO timeout in seconds\n"); - rprintf(F,"-I, --ignore-times don't exclude files that match length and time\n"); - rprintf(F,"-T --temp-dir DIR create temporary files in directory DIR\n"); - rprintf(F,"-z, --compress compress file data\n"); - rprintf(F," --exclude FILE exclude file FILE\n"); - rprintf(F," --exclude-from FILE exclude files listed in FILE\n"); - rprintf(F," --suffix SUFFIX override backup suffix\n"); - rprintf(F," --version print version number\n"); - rprintf(F," --daemon run as a rsync daemon\n"); - rprintf(F," --config FILE specify alternate rsyncd.conf file\n"); - rprintf(F," --port PORT specify alternate rsyncd port number\n"); + + rprintf(F,"rsync is a file transfer program capable of efficient remote update\nvia a fast differencing algorithm.\n\n"); + + rprintf(F,"Usage: rsync [OPTION]... SRC [USER@]HOST:DEST\n"); + rprintf(F," or rsync [OPTION]... [USER@]HOST:SRC DEST\n"); + rprintf(F," or rsync [OPTION]... SRC DEST\n"); + rprintf(F," or rsync [OPTION]... [USER@]HOST::SRC DEST\n"); + rprintf(F," or rsync [OPTION]... SRC [USER@]HOST::DEST\n"); + rprintf(F,"\nOptions\n"); + rprintf(F," -v, --verbose increase verbosity\n"); + rprintf(F," -c, --checksum always checksum\n"); + rprintf(F," -a, --archive archive mode\n"); + rprintf(F," -r, --recursive recurse into directories\n"); + rprintf(F," -R, --relative use relative path names\n"); + rprintf(F," -b, --backup make backups (default ~ extension)\n"); + rprintf(F," -u, --update update only (don't overwrite newer files)\n"); + rprintf(F," -l, --links preserve soft links\n"); + rprintf(F," -L, --copy-links treat soft links like regular files\n"); + rprintf(F," -H, --hard-links preserve hard links\n"); + rprintf(F," -p, --perms preserve permissions\n"); + rprintf(F," -o, --owner preserve owner (root only)\n"); + rprintf(F," -g, --group preserve group\n"); + rprintf(F," -D, --devices preserve devices (root only)\n"); + rprintf(F," -t, --times preserve times\n"); + rprintf(F," -S, --sparse handle sparse files efficiently\n"); + rprintf(F," -n, --dry-run show what would have been transferred\n"); + rprintf(F," -W, --whole-file copy whole files, no incremental checks\n"); + rprintf(F," -x, --one-file-system don't cross filesystem boundaries\n"); + rprintf(F," -B, --block-size=SIZE checksum blocking size\n"); + rprintf(F," -e, --rsh=COMMAND specify rsh replacement\n"); + 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," --delete delete files that don't exist on the sending side\n"); + rprintf(F," --partial keep partially transferred files\n"); + rprintf(F," --force force deletion of directories even if not empty\n"); + rprintf(F," --numeric-ids don't map uid/gid values by user/group name\n"); + rprintf(F," --timeout=TIME set IO timeout in seconds\n"); + rprintf(F," -I, --ignore-times don't exclude files that match length and time\n"); + rprintf(F," -T --temp-dir=DIR create temporary files in directory DIR\n"); + rprintf(F," -z, --compress compress file data\n"); + rprintf(F," --exclude=PATTERN exclude file FILE\n"); + rprintf(F," --exclude-from=PATTERN exclude files listed in FILE\n"); + rprintf(F," --include=PATTERN don't exclude file FILE\n"); + rprintf(F," --include-from=PATTERN don't exclude files listed in FILE\n"); + rprintf(F," --suffix=SUFFIX override backup suffix\n"); + rprintf(F," --version print version number\n"); + rprintf(F," --daemon run as a rsync daemon\n"); + rprintf(F," --config=FILE specify alternate rsyncd.conf file\n"); + rprintf(F," --port=PORT specify alternate rsyncd port number\n"); + rprintf(F," --stats give some file transfer stats\n"); + rprintf(F," -h, --help show this help screen\n"); rprintf(F,"\n"); rprintf(F,"the backup suffix defaults to %s\n",BACKUP_SUFFIX); rprintf(F,"the block size defaults to %d\n",BLOCK_SIZE); + + rprintf(F,"\nPlease see the rsync(1) and rsyncd.conf(5) man pages for full documentation\n"); + rprintf(F,"See http://samba.anu.edu.au/rsync/ for updates and bug reports\n"); } enum {OPT_VERSION,OPT_SUFFIX,OPT_SENDER,OPT_SERVER,OPT_EXCLUDE, OPT_EXCLUDE_FROM,OPT_DELETE,OPT_NUMERIC_IDS,OPT_RSYNC_PATH, - OPT_FORCE,OPT_TIMEOUT,OPT_DAEMON,OPT_CONFIG,OPT_PORT}; + OPT_FORCE,OPT_TIMEOUT,OPT_DAEMON,OPT_CONFIG,OPT_PORT, + OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_STATS, OPT_PARTIAL}; static char *short_options = "oblLWHpguDCtcahvrRIxnSe:B:T:z"; @@ -135,6 +152,8 @@ static struct option long_options[] = { {"numeric-ids", 0, 0, OPT_NUMERIC_IDS}, {"exclude", 1, 0, OPT_EXCLUDE}, {"exclude-from",1, 0, OPT_EXCLUDE_FROM}, + {"include", 1, 0, OPT_INCLUDE}, + {"include-from",1, 0, OPT_INCLUDE_FROM}, {"rsync-path", 1, 0, OPT_RSYNC_PATH}, {"one-file-system",0, 0, 'x'}, {"ignore-times",0, 0, 'I'}, @@ -165,6 +184,8 @@ static struct option long_options[] = { {"temp-dir", 1, 0, 'T'}, {"compress", 0, 0, 'z'}, {"daemon", 0, 0, OPT_DAEMON}, + {"stats", 0, 0, OPT_STATS}, + {"partial", 0, 0, OPT_PARTIAL}, {"config", 1, 0, OPT_CONFIG}, {"port", 1, 0, OPT_PORT}, {0,0,0,0}}; @@ -180,8 +201,9 @@ void parse_arguments(int argc, char *argv[]) switch (opt) { case OPT_VERSION: - printf("rsync version %s protocol version %d\n", + printf("rsync version %s protocol version %d\n\n", VERSION,PROTOCOL_VERSION); + printf("Written by Andrew Tridgell and Paul Mackerras\n"); exit_cleanup(0); case OPT_SUFFIX: @@ -213,11 +235,19 @@ void parse_arguments(int argc, char *argv[]) break; case OPT_EXCLUDE: - add_exclude(optarg); + add_exclude(optarg, 0); + break; + + case OPT_INCLUDE: + add_exclude(optarg, 1); break; case OPT_EXCLUDE_FROM: - add_exclude_file(optarg,1); + add_exclude_file(optarg,1, 0); + break; + + case OPT_INCLUDE_FROM: + add_exclude_file(optarg,1, 1); break; case 'h': @@ -351,6 +381,14 @@ void parse_arguments(int argc, char *argv[]) am_daemon = 1; break; + case OPT_STATS: + do_stats = 1; + break; + + case OPT_PARTIAL: + keep_partial = 1; + break; + case OPT_CONFIG: config_file = optarg; break; @@ -446,6 +484,9 @@ void server_options(char **args,int *argc) if (delete_mode) args[ac++] = "--delete"; + if (keep_partial) + args[ac++] = "--partial"; + if (force_delete) args[ac++] = "--force";