Linux Tools --- rsync
一、概要
1. 环境
(1) Rocky Linux 9.1
(2) rsync 3.2.7
2. 概念
rsync是一个开源的速度很快的数据传输工具。License是GNU(General Public License)
它具备以下功能和优势:
(1) 在本机和远程主机之间复制或同步文件或目录;
(2) 支持复制Linux 链接(links)、设备(devices)、所有者(Owner)、组(Groups)和权限(Permissions);
(3) 相比scp(Secure Copy),rsync拥有更快的速度,主要是因为rsync仅同步源文件/目录和目标文件/目录不同的部分;
(4) 由于在数据发送端/接收端分别使用压缩和解压技术,rsync消耗较少的带宽。
3. 安装
sudo dnf install rsync -y 或者 sudo yum install rsync -y
二、rsync命令
1. 格式
rsync options source destination
(1) options包含:
-r: 递归地(Recursively)复制数据,数据传输过程中并不保存时间戳和权限;
-a: 归档模式,允许递归拷贝数据的同时保存链接、文件权限、所有者用户和组还有时间戳;
-z: 压缩数据;
-v: 增加输出信息的详细程度;
-h: 使输出信息格式的可读性更好;
-e: 指定需要使用的shell;
--progress: 显示数据传输时的进度;
--include "PATTERN": 传输源文件目录中符合PATTERN要求的文件;
--exclude "PATTERN": 过滤掉原文件目录中不符合PATTERN要求的文件,传输剩余文件;
--delete: 删除目标目录下多余的文件。如果源文件目录中有A,B,C三个文件,目标文件目录中有A,C,D三个文件,该参数将会把目标目录中的D文件删除;
--max-size: 最大文件限制,仅传输文件体量小于或等于该值的文件;
--remove-source-files: 同步之后删除源文件;
--bwlimit=RATE: 限制传输的带宽占用小于等于RATE值;
其他参数参考 rsync;
2. 应用(复制/同步)
(1) 本机文件--->本机
rsync -zvh backup.tar.gz /tmp/backups/
复制/同步 backup.tar.gz到/tmp/backups
(2) 本机目录--->本机
rsync -avzh /root/rpmpkgs /tmp/backups/
该命令将会把/root/rpmpkgs目录下所有文件复制到/tem/backups/目录下;
(3) 本机目录--->目标主机
rsync -avzh /root/rpmpkgs root@192.168.0.141:/root/
(4) 目标主机文件--->本机
rsync -avzh root@192.168.0.141:/root/rpmpkgs /tmp/myrpms
(5) SSH 目标主机文件--->本地
rsync -avzhe ssh root@192.168.0.141:/root/anaconda-ks.cfg /tmp
(6) SSH 本地文件--->目标主机
rsync -avzhe ssh backup.tar.gz root@192.168.0.141:/backups/
(7) SSH 本地目录--->目标主机
rsync -avzhe ssh --progress /root/rpmpkgs root@192.168.0.141:/root/rpmpkgs
(8) 指定传输和不传输的文件
rsync -avze ssh --include 'R*' --exclude '*' root@192.168.0.141:/var/lib/rpm/ /root/rpm
该命令将目标主机"/var/lib/rpm/"目录下以R开头的文件复制/同步至本机"/root/rpm"目录;
(9) --delete
touch /root/rpm/test.txt
rsync -avz --delete root@192.168.0.151:/var/lib/rpm/ /root/rpm/
(10) --max-size
rsync -avzhe ssh --max-size='200k' /var/lib/rpm/
(11) --remove-source-files
rsync --remove-source-files -zvh backup.tar.gz
(12) --bwlimit=RATE
rsync --bwlimit=100 -avzhe ssh /var/lib/rpm/ root@192.168.0.151:/root/tmprpm/
三、参考
1. 官方
https://download.samba.org/pub/rsync/rsync.1
2. 其他
https://www.tecmint.com/rsync-local-remote-file-synchronization-commands/
https://www.server-world.info/en/note?os=CentOS_Stream_9&p=rsync
https://www.tecmint.com/sync-two-apache-websites-using-rsync/
https://www.tecmint.com/sync-files-using-rsync-with-non-standard-ssh-port/