X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=link-by-hash.diff;fp=link-by-hash.diff;h=a7bb6a55526bcf533b30ab129b633a27a6714efb;hb=db3ea6b52c56105409ca2ba8b5ad29675af7f32b;hp=f160ae4549172002fef0a440657e302e54666fbd;hpb=e8b1377d95f0d75e9da2f3884f31f82cc246ef20;p=rsync-patches.git diff --git a/link-by-hash.diff b/link-by-hash.diff index f160ae4..a7bb6a5 100644 --- a/link-by-hash.diff +++ b/link-by-hash.diff @@ -12,7 +12,7 @@ To use this patch, run these commands for a successful build: ./configure make -based-on: 6b8db0f6440b28d26ef807d17517715c47e62bd9 +based-on: c3b553a93f7090bcbb89c08405f1a5f1c175c864 diff --git a/Makefile.in b/Makefile.in --- a/Makefile.in +++ b/Makefile.in @@ -236,7 +236,7 @@ diff --git a/options.c b/options.c OPT_NO_D, OPT_APPEND, OPT_NO_ICONV, OPT_INFO, OPT_DEBUG, OPT_BLOCK_SIZE, - OPT_USERMAP, OPT_GROUPMAP, OPT_CHOWN, OPT_BWLIMIT, OPT_STDERR, + OPT_USERMAP, OPT_GROUPMAP, OPT_CHOWN, OPT_BWLIMIT, OPT_STDERR, OPT_LINK_BY_HASH, - OPT_OLD_COMPRESS, OPT_NEW_COMPRESS, OPT_NO_COMPRESS, + OPT_OLD_COMPRESS, OPT_NEW_COMPRESS, OPT_NO_COMPRESS, OPT_OLD_ARGS, OPT_STOP_AFTER, OPT_STOP_AT, OPT_REFUSED_BASE = 9000}; @@ -737,6 +739,7 @@ static struct poptOption long_options[] = { @@ -257,7 +257,7 @@ diff --git a/options.c b/options.c if (am_daemon) { #ifdef ICONV_OPTION if (!*lp_charset(module_id)) -@@ -1845,6 +1851,20 @@ int parse_arguments(int *argc_p, const char ***argv_p) +@@ -1852,6 +1858,20 @@ int parse_arguments(int *argc_p, const char ***argv_p) return 0; #endif @@ -278,7 +278,7 @@ diff --git a/options.c b/options.c case OPT_STOP_AFTER: { long val; arg = poptGetOptArg(pc); -@@ -2208,6 +2228,8 @@ int parse_arguments(int *argc_p, const char ***argv_p) +@@ -2215,6 +2235,8 @@ int parse_arguments(int *argc_p, const char ***argv_p) tmpdir = sanitize_path(NULL, tmpdir, NULL, 0, SP_DEFAULT); if (backup_dir) backup_dir = sanitize_path(NULL, backup_dir, NULL, 0, SP_DEFAULT); @@ -287,7 +287,7 @@ diff --git a/options.c b/options.c } if (daemon_filter_list.head && !am_sender) { filter_rule_list *elp = &daemon_filter_list; -@@ -2877,6 +2899,12 @@ void server_options(char **args, int *argc_p) +@@ -2884,6 +2906,12 @@ void server_options(char **args, int *argc_p) args[ac++] = "--no-W"; } @@ -303,7 +303,7 @@ diff --git a/options.c b/options.c diff --git a/rsync.1.md b/rsync.1.md --- a/rsync.1.md +++ b/rsync.1.md -@@ -419,6 +419,7 @@ detailed description below for a complete description. +@@ -423,6 +423,7 @@ has its own detailed description later in this man page. --compare-dest=DIR also compare destination files relative to DIR --copy-dest=DIR ... and include copies of unchanged files --link-dest=DIR hardlink to files in DIR when unchanged @@ -311,13 +311,13 @@ diff --git a/rsync.1.md b/rsync.1.md --compress, -z compress file data during the transfer --compress-choice=STR choose the compression algorithm (aka --zc) --compress-level=NUM explicitly set compression level (aka --zl) -@@ -2399,6 +2400,50 @@ your home directory (remove the '=' for that). - specified (or implied by `-a`). You can work-around this bug by avoiding - the `-o` option when sending to an old rsync. +@@ -2498,6 +2499,50 @@ your home directory (remove the '=' for that). + this bug by avoiding the `-o` option (or using `--no-o`) when sending to an + old rsync. +0. `--link-by-hash=DIR` + -+ This option hard links the destination files into `DIR`, a link farm ++ This option hard links the destination files into _DIR_, a link farm + arranged by MD5 file hash. The result is that the system will only store + (usually) one copy of the unique contents of each file, regardless of the + file's name (it will use extra files if the links overflow the available @@ -328,7 +328,7 @@ diff --git a/rsync.1.md b/rsync.1.md + this if you don't care about preserving those extra file attributes (or if + they are always the same for identical files). + -+ The DIR is relative to the destination directory, so either specify a full ++ The _DIR_ is relative to the destination directory, so either specify a full + path to the hash hierarchy, or specify a relative path that puts the links + outside the destination (e.g. "../links"). + @@ -400,9 +400,9 @@ diff --git a/rsync.h b/rsync.h diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md --- a/rsyncd.conf.5.md +++ b/rsyncd.conf.5.md -@@ -354,6 +354,23 @@ the values of parameters. See the GLOBAL PARAMETERS section for more details. +@@ -357,6 +357,23 @@ the values of parameters. See the GLOBAL PARAMETERS section for more details. is 0, which means no limit. A negative value disables the module. See - also the "lock file" parameter. + also the "[lock file](#)" parameter. +0. `link by hash dir` +