Difference between revisions of "Linux command: rsync"
Jump to navigation
Jump to search
Rafahsolis (talk | contribs) (Created page with "== Create backups == rsync -av --delete /Directory1/ /Directory2/ The code above will synchronize the contents of Directory1 to Directory2, and leave no differences between t...") |
Rafahsolis (talk | contribs) Tag: visualeditor |
||
| (25 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
| − | == Create backups == | + | ==Create local backups== |
| − | rsync - | + | rsync -avzXAS --delete /Origen/ /Destino/ |
| + | Note: if origin ends with '/' it will copy the contents of the directory else it will copy the directory | ||
| + | |||
The code above will synchronize the contents of Directory1 to Directory2, and leave no differences between the two. <br /> | The code above will synchronize the contents of Directory1 to Directory2, and leave no differences between the two. <br /> | ||
If rsync finds that Directory2 has a file that Directory1 does not, it will delete it. <br /> | If rsync finds that Directory2 has a file that Directory1 does not, it will delete it. <br /> | ||
If rsync finds a file that has been changed, created, or deleted in Directory1, it will reflect those same changes to Directory2. | If rsync finds a file that has been changed, created, or deleted in Directory1, it will reflect those same changes to Directory2. | ||
| + | |||
| + | |||
| + | *-a – The archive option = -rlptgoD | ||
| + | **-r – (recursive into directories) | ||
| + | **-l – copy symlinks as symlinks | ||
| + | **-p – preserve permissions | ||
| + | **-t – preserve modification times | ||
| + | **-g – preserve group | ||
| + | **-o – preserve owner | ||
| + | **-D – preserve device files and special files | ||
| + | *-v – increase verbosity | ||
| + | *-z – compress file data during the transfer | ||
| + | *-X – preserve extended attributes | ||
| + | *-A – preserve ACLs (implies -p option) | ||
| + | *-S – handle sparse files efficiently | ||
| + | *--delete – if the file is deleted from the source directory, delete it from the target directory | ||
| + | |||
| + | ==From your local machine== | ||
| + | rsync -chavzP --stats user@remote.host:/path/to/copy /path/to/local/storage | ||
| + | |||
| + | *-c, --checksum skip based on checksum, not mod-time & size | ||
| + | *-h, --human-readable output numbers in a human-readable format | ||
| + | |||
| + | ==From your local machine with a non standard ssh port== | ||
| + | rsync -avz -e "ssh -p $portNumber" user@remote.host:/path/to/copy /local/path | ||
| + | |||
| + | ==Or from the remote host== | ||
| + | rsync -chavzP --stats /path/to/copy user@host.remoted.from:/path/to/local/storage | ||
| + | |||
| + | ==Remote backups== | ||
| + | rsync -av –delete -e ssh /Origen/ user@192.168.11.21:/Destino/ | ||
| + | |||
| + | ===With private key authentication=== | ||
| + | <syntaxhighlight lang="bash"> | ||
| + | rsync --progress -avz -e "ssh -i /home/rafa/.ssh/id_rsa" /home/rafa/git-master/ ubuntu@example.com:/home/ubuntu/git-master/ | ||
| + | |||
| + | rsync --progress -avz -e "ssh -i /home/rafa/.ssh/RecoverAccess.pem" ubuntu@ec2-54-154-200-219.eu-west-1.compute.amazonaws.com:/mnt/backup/ nf-es/ | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ==with password and port settings== | ||
| + | rsync -av –delete -e 'ssh -p 12345' /Origen/ user@192.168.235.137:/Destino/ | ||
| + | |||
| + | ==Changing permissions and ownership== | ||
| + | pgrep -f "rsync -avz --chown=turing:www-data --chmod=Du=rwx,Dgo=rx,Fu=rw,Fog=r --log-file=${LOG_FILE}" > /dev/null || rsync -avz --chown=tur$│ | ||
| + | ==Remove source files after succesfull transfer== | ||
| + | rsync --remove-source-files -azv /path/to/Download/*.avi laptop:~/Download | ||
| + | <syntaxhighlight lang="bash"> | ||
| + | find . -regex '.*\(avi\|mp4\|mkv\)$' -exec rsync --remove-source-files -azv {} morpheus.lan:/media/video/classification_pending/ \; | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ==Follow symlyncs (-L)== | ||
| + | rsync -L /path/to/Download/*.avi ~/Download | ||
| + | |||
| + | ==Exclude== | ||
| + | rsync -avz --exclude 'dir1' source/ destination/ | ||
| + | rsync -avz --exclude 'dir*' source/ destination/ | ||
| + | |||
| + | ==Arguments with spaces== | ||
| + | <syntaxhighlight lang="bash"> | ||
| + | rsync -avxP --protect-args "xe50582@jupyter.rra.lan:/home/xe50582/Notebooks/Rafael Herrero/Text Clustering/news/*" . | ||
| + | </syntaxhighlight> | ||
Latest revision as of 21:53, 18 March 2020
Create local backups[edit]
rsync -avzXAS --delete /Origen/ /Destino/
Note: if origin ends with '/' it will copy the contents of the directory else it will copy the directory
The code above will synchronize the contents of Directory1 to Directory2, and leave no differences between the two.
If rsync finds that Directory2 has a file that Directory1 does not, it will delete it.
If rsync finds a file that has been changed, created, or deleted in Directory1, it will reflect those same changes to Directory2.
- -a – The archive option = -rlptgoD
- -r – (recursive into directories)
- -l – copy symlinks as symlinks
- -p – preserve permissions
- -t – preserve modification times
- -g – preserve group
- -o – preserve owner
- -D – preserve device files and special files
- -v – increase verbosity
- -z – compress file data during the transfer
- -X – preserve extended attributes
- -A – preserve ACLs (implies -p option)
- -S – handle sparse files efficiently
- --delete – if the file is deleted from the source directory, delete it from the target directory
From your local machine[edit]
rsync -chavzP --stats user@remote.host:/path/to/copy /path/to/local/storage
- -c, --checksum skip based on checksum, not mod-time & size
- -h, --human-readable output numbers in a human-readable format
From your local machine with a non standard ssh port[edit]
rsync -avz -e "ssh -p $portNumber" user@remote.host:/path/to/copy /local/path
Or from the remote host[edit]
rsync -chavzP --stats /path/to/copy user@host.remoted.from:/path/to/local/storage
Remote backups[edit]
rsync -av –delete -e ssh /Origen/ user@192.168.11.21:/Destino/
With private key authentication[edit]
rsync --progress -avz -e "ssh -i /home/rafa/.ssh/id_rsa" /home/rafa/git-master/ ubuntu@example.com:/home/ubuntu/git-master/
rsync --progress -avz -e "ssh -i /home/rafa/.ssh/RecoverAccess.pem" ubuntu@ec2-54-154-200-219.eu-west-1.compute.amazonaws.com:/mnt/backup/ nf-es/
with password and port settings[edit]
rsync -av –delete -e 'ssh -p 12345' /Origen/ user@192.168.235.137:/Destino/
Changing permissions and ownership[edit]
pgrep -f "rsync -avz --chown=turing:www-data --chmod=Du=rwx,Dgo=rx,Fu=rw,Fog=r --log-file=${LOG_FILE}" > /dev/null || rsync -avz --chown=tur$│
Remove source files after succesfull transfer[edit]
rsync --remove-source-files -azv /path/to/Download/*.avi laptop:~/Download
find . -regex '.*\(avi\|mp4\|mkv\)$' -exec rsync --remove-source-files -azv {} morpheus.lan:/media/video/classification_pending/ \;
Follow symlyncs (-L)[edit]
rsync -L /path/to/Download/*.avi ~/Download
Exclude[edit]
rsync -avz --exclude 'dir1' source/ destination/ rsync -avz --exclude 'dir*' source/ destination/
Arguments with spaces[edit]
rsync -avxP --protect-args "xe50582@jupyter.rra.lan:/home/xe50582/Notebooks/Rafael Herrero/Text Clustering/news/*" .