rsync
The delta algorithm is not used when copying to a local filesystem.
本地使用 rsync 同步、复制文件时,差分算法不会起作用。因为经过测试发现,直接复制的速度比使用差分算法再复制更快。
rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。
http://man.linuxde.net/rsync
https://linux.die.net/man/1/rsync
1 2 3 4 5 6
| rsync [OPTION]... SRC DEST rsync [OPTION]... SRC [USER@]host:DEST rsync [OPTION]... [USER@]HOST:SRC DEST rsync [OPTION]... [USER@]HOST::SRC DEST rsync [OPTION]... SRC [USER@]HOST::DEST rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
|
1 2 3 4
| rsync -vzrtopgs --progress -e ssh --delete work@172.16.78.192:/www/* /databack/experiment/rsync
rsync -vzrtopgs --progress -e "ssh -p 8022" --delete work@172.16.78.192:/www/* /databack/experiment/rsync rsync -vzrtopgs --progress -e "ssh -p 8022" --delete ./somefile.py u0_a111@192.168.1.45:~/storage/shared/dir/
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| rsync -avS --update --delete --partial --progress /source.txt /destination.txt
rsync -avSP --update --delete /source.txt /destination.txt
rsync -avcuSP u0_a111@192.168.1.45::/storage/0/tencent /未命名/TencentFilesBackup
rsync\ -avcuSP\ --numeric-ids\ -e 'ssh -T -o Compression=no -x -p 8022'\ --exclude='*.log' --exclude 'MicroMsg'\ --exclude 'msflogs'\ --exclude 'wtlogin'\ --exclude 'tbs_live_log'\ --exclude 'tbs'\ --exclude 'tbs_audio_data'\ --exclude 'Midas'\ --exclude 'beacon'\ --exclude 'TMAssistantSDK'\ --exclude 'blob'\ --exclude 'MobileQQ/bless'\ --exclude 'MobileQQ/.pendant'\ --exclude 'MobileQQ/.gift'\ --skip-compress=$RSYNC_SKIP_COMPRESS\ u0_a212@192.168.0.16:~/storage/shared/tencent/ /Volumes/未命名/TencentFilesBackup
rsync -avcuSP --numeric-ids --exclude 'MicroMsg' --port=8033 data1user@10.0.112.36::qq /Volumes/未命名/TencentFilesBackup
|
- [local -> remote] 上传文件到 Server
1 2 3 4 5 6 7 8 9 10 11 12 13
| rsync\ -avcuSP\ --delete\ --numeric-ids\ -e 'ssh -p 31802'\ --exclude='.git'\ --exclude='.idea'\ --exclude='*.db'\ --exclude='__pycache__'\ --exclude='.vscode'\ --exclude='venv'\ --exclude='.gitignore'\ ~/Documents/ProjectPersonal/Folder root@13.18.19.21:/custom/Folder
|
- rsync 一次性同步多个目录到远程同一个目录下,直接写多个源文件/目录就可以,rsync可以识别多个源文件或者目录。需要注意的是,这种情况下同步过后远程的目录结构。
1 2 3
| # https://unix.stackexchange.com/a/368216/555309 rsync -a /etc/fstab /home/user/download remote_dir # 同步过后远程的目录结构为:bkp/fstab bkp/download 和单独同步一个目录是一样的。
|
rsync -a 选项释义 archive mode
https://www.baeldung.com/linux/rsync-archive-mode
rsync 权限设置
1 2
| export RSYNC_SKIP_COMPRESS=3fr/3g2/3gp/3gpp/7z/aac/ace/amr/apk/appx/appxbundle/arc/arj/arw/asf/avi/bz2/cab/cr2/crypt[5678]/dat/dcr/deb/dmg/drc/ear/erf/flac/flv/gif/gpg/gz/iiq/iso/jar/jp2/jpeg/jpg/k25/kdc/lz/lzma/lzo/m4[apv]/mef/mkv/mos/mov/mp[34]/mpeg/mp[gv]/msi/nef/oga/ogg/ogv/opus/orf/pef/png/qt/rar/rpm/rw2/rzip/s7z/sfx/sr2/srf/svgz/t[gb]z/tlz/txz/vob/wim/wma/wmv/xz/zip/z rsync --skip-compress=$RSYNC_SKIP_COMPRESS .....
|
- rsync 限制速度
参数:--bwlimit
,单位 KBPS
例如:--bwlimit=1000
rsync 选项
1 2
| rsync --exclude='a.txt' rsync --exclude='/workingdir/a.txt'
|
参考:https://stackoverflow.com/a/36548449/8884704
- 排除根目录的文件或者文件夹
例:排除根目录下的 abc 文件夹
假如运行的rsync命令是 rsync /remote/somefolder /local/destfolder
那么,同步的结果就是会将somefolder
同步到本地的/local/destfolder
文件夹下面;
如果远程目录下面有个abc
文件夹我们不想同步,那么需要加上这个选项--exclude "/somefolder/abc"
排除文件的选项以/
开头,则是一个绝对路径,这个绝对路径是同步过程中目录的绝对路径。如果只写/abc
是不行的。
需要写/somefolder/abc
。
猜测:rsync同步/remote/somefolder
的时候先chroot
到了/remote
目录。这样rsync运行过程中远程根目录就变成了/remote
;对应目标的目的目录 rsync chroot到了/local/destfolder
这个目录。
目录同步规则
**注意,同步/RsyncFolder ==> /RsyncFolder
与同步/RsyncFolder/ ==> /RsyncFolder
是不同的。
/RsyncFolder ==> /RsyncFolder
:将源/RsyncFolder
同步到目标/RsyncFolder
中,最后同步完成的目录结构为/RsyncFolder/RsyncFolder
/RsyncFolder/ ==> /RsyncFolder
:将源/RsyncFolder/
的内容同步到目标/RsyncFolder
中,最后同步完成的目录结构为/RsyncFolder/
**
参考并区分: cp命令的目录结构复制规则,以及 tar、zip 命令的目录结构规则。
rsync 文件和目录匹配规则
注意:/
的位置影响目录规则匹配
1 2
| rsync --exclude '/tbs_live_log' root@192.168.0.117:~/storage/shared/tencent/ /backups rsync --exclude '/tbs_live_log' root@192.168.0.117:~/storage/shared/tencent /backups
|
rsync PATTERN 匹配规则
使用rsyncd服务
https://segmentfault.com/a/1190000000444614
参考
- rsync(一):基本命令和用法