2

I'm using Rsync as a backup tool. When I create a new backup, I would like it to look in all the existing backup folders for each file and if it already exists, create a hard link.

From the Rsync man page,

Beginning in version 2.6.4, multiple --link-dest directories may be provided, which will cause rsync to search the list in the order specified for an exact match.

I could create a list with all my backup folders and pass the list to --link-dest, however I suspect that there must be a better solution.

Can I use a wildcard in the DIR argument of --link-dest? (I tried * but it didn't work).

Can I make --link-dest search for files recursively? I tried setting DIR to my top backup folder and using --recursive, but it didn't find the files and it created a new file instead of a hard link.

4

I believe you need --link-dest=$item for each item of your list of backup directories.

If you want those --link-dest= arguments generated from a glob, you can do:

 printf ' --link-dest=%q ' *
  • Thanks, that command helps, but I cannot make it work when my link-dest folder is in a remote location. – Katu Aug 13 '16 at 20:51
  • 1
    @try can you do something like ssh remote sh -c ":; cd target_directory; printf ' --link-dest=%q ' *" to generate the the arguments? – PSkocik Aug 13 '16 at 21:13
  • It's worth noting that multiple --link-dest stops on the first found file. Imagine you backup a file, then modify the file, then backup again, then undo the modification and backup a third time so that the first an third backups are the same. You wll get three files, not two: the first and third won't be hard-linked even though they are the same. – starfry Sep 20 '16 at 15:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.