2

On my RHEL6 pair of servers, I tested the rsync from server-1 to Server-2 with SSH. Everything was good as expected. However, when I moved a file under A directory, A/x.file to B/ of /home/user on Server-1, repeated the same rsync with --delete (or similar options) did not remove x.file on A/ and backup x.file to B/ on Server-2. Here is the rsync script:

rsync -avhu -e ssh --delete home/user/ remote_user@remote_host:/home/user/. 

ssh was set up without passphrase. I tried different order of those options, none of them work, meaning that x.file was still under A/ at destination (server-2), not on B/. What went wrong?

1
  • 1
    Can you include the first few lines of the log output from rsync? It occasionally skips deletion if anything was amiss with the transfer.
    – alienth
    CommentedSep 3, 2015 at 22:14

2 Answers 2

2

Here's some general guidance on how to get rsync to do what you'd like it to do using the options you've selected in your script:

To copy the contents of a directory from the source directory to a remote destination directory (the first time), you can do:

 rsync --archive --verbose --human-readable source -e ssh username@servername:/home/user/ . 

Once you've made some changes to the source directory that you'd like to sync with your destination directory, do:

 rsync --archive --verbose --human-readable --delete source/ -e ssh username@servername:/home/user/source . 

Take note:

  • When you first copy a source directory to a destination directory, you do not need to follow source with a / (forward slash).

  • When you sync a source directory to a destination directory, you do need to follow source with a / (forward slash).This / means the content of the source directory, and not the directory itself.

You can test drive your script with this option: --dry-run .

4
  • Isn't the destination missing in the first command?
    – sebix
    CommentedSep 4, 2015 at 18:41
  • The omission is intentional @sebix. In this case, rsync will create a directory called source in /home/user on the remote server.
    – marshki
    CommentedSep 4, 2015 at 19:37
  • Okay, but you wrote to a remote *destination* directory. Now you say source = destination.
    – sebix
    CommentedSep 4, 2015 at 19:56
  • That's a fair point @sebix, and one I overlooked. I'll amend my initial proposal accordingly.
    – marshki
    CommentedSep 4, 2015 at 20:04
1

This slightly modified code works for me:

rsync -avhu -e ssh --delete /home/user/ remote_user@remote_host:/home/user/. 

If your production code really does reference home/user/ instead of /home/user/ then that could easily be a reason it's failing. You would also be getting an error rsync: change_dir "/home/user//home/user" failed: No such file or directory (2)

    You must log in to answer this question.

    Start asking to get answers

    Find the answer to your question by asking.

    Ask question

    Explore related questions

    See similar questions with these tags.