Rsync是linux/Unix文件同步和传送工具。用于替代rcp的一个工具,rsync可以通过rsh或ssh使用,也能以daemon模式去运行,在以daemon方式运行时rsync server会开一个873端口,等待客户端去连接。连接时rsync server会检查口令是否相符,若通过口令查核,则可以通过进行文件传输,第一次连通完成时,会把整份文件传输一次,以后则就只需进行增量备份。
yum 安装
epel源安装
1 | cat > /etc/yum.repos.d/epel.repo << EOF |
安装
## centos 7.5 已经安装了3.1.2 版本
yum install rsync
## 查看当前rsync版本
rsync --version
编译安装:
下载rsync源码
# wget https://download.samba.org/pub/rsync/rsync-3.1.3.tar.gz
解压
# tar -zxvf rsync-3.1.3.tar.gz
进入目录
# cd rsync-3.1.3
查看编译配置参数
# ./configure --help
编译安装, 安装时同步保存日志,这种编译
# ./configure --prefix=/usr
编译好二进制rsync程序会放在/usr/bin目录下,即/usr/bin/rsync
编译可以带如下参数
--with-rsyncd-conf=/etc/rsyncd.conf # 默认/etc/rsyncd.conf
--without-included-zlib # 此开关使用系统安装的zlib库进行编译。
# make
# make install | tee make_install.log
出于安全原因,鼓励将rsync服务器作为非特权用户和组运行。
如果您打算将rsync作为后台进程运行,请使用root用户颁发的以下命令创建rsyncd用户和组:
# groupadd -g 80 rsyncd
# useradd -c "rsyncd Daemon" -d /home/rsync -g rsyncd -s /sbin/nologin -u 80 rsyncd
最后需要手动添加配置文件:
rsyncd服务器配置
rsyncd systemd配置文件
1 |
|
rsyncd 启动配置文件
1 |
|
[conf] #自定义模块
path = /usr/local/nginx/conf #用来指定要备份的目录
comment = Nginx conf
ignore errors #可以忽略一些IO错误
read only = no #设置no,客户端可以上传文件,yes是只读
write only = no #no为客户端可以下载,yes不能下载
hosts allow = 192.168.2.0/24 #可以连接的IP
hosts deny = * #禁止连接的IP
list = false #客户请求时,使用模块列表
uid = root
gid = root
auth users = backup #连接用户名,和linux系统用户名无关系
secrets file = /etc/rsyncd.pass #验证密码文件
rsyncd 密匙文件和提示文件
1 |
|
rsyncd 启动用户
1 |
|
rsyncd 文件目录
1 |
|
客户端部署
## 确认rsync 安装
rpm -qa |grep rsync
yum install rsync
添加密码文件,不需要用户名
mkdir /etc/rsyncd.d
echo "rsync_9391" >>/etc/rsyncd.d/rsync.password
chmod 600 /etc/rsyncd.d/rsync.password
测试数据传输
rsync -azHAX --port=55873 /data/test rsync_backup@200.200.200.222::wwwroot --password-file=/etc/rsyncd.d/rsync.password
rsync -azHAX --delete --port=55873 --bwlimit=10240 /data/test rsync_backup@200.200.200.222::wwwroot --password-file=/etc/rsyncd.d/rsync.password
## 注意同步目录(/data/test/),
后面加/表示同步目录下的文件及子文件夹, 与目标服务器的目录下的所有文件和文件夹一致,多余的会被删除。
不加/表示同步/data/test目录,目标服务器的目录下会创建对应的test目录。而且只有test目录下的文件和文件夹一致,不会理会test目录外的文件或文件夹
客户端直接通过ssh同步两个目录,不经服务端
## 注意源目录后面加了/, 下面/data/test和/data/wwwroot 目录下的内容将会保持一致,/data/wwwroot下面多余内容将删除
sudo rsync -azHAX --delete -e "ssh " /data/test/ root@200.200.200.222:/data/wwwroot
rsync 选项
-V : --verbose 传输时显示详细信息和进度.
-z : --compress 传输进行压缩以提高传输效率, --compress-leve=NUM 可按级别压缩
-n : 执行空运行,模拟执行,显示更改。执行rsync操作前先执行空运行,以确保重要的文件不会被覆盖或删除.
-a : --archive 代表存档模式,相当于使用了-rlptgoD这一坨选项,默认已同步符号连接,但硬连接除外。同时不会同步高级文件全限(ACL 和 SELinux上下文),同步ACL需要启用-A 选项,同步SElinux上下文启用-X(大写)选项.
-r : --recursive 递归同步整个目录树
-l : --links 同步符号连接
-p : --perms 保留权限
-t : --time,保留时间信息
-g : --group 保留组所有权
-o : --owner 保留文件所有者
-D : --devices 同步设备文件, 保留设备文件信息
-P : --progress 大写的P,显示同步的过程以及传输时的进度等信息
-H : 保留硬连接。
-A, --acls preserve ACLs (implies --perms)
-X, --xattrs preserve extended attributes,保留selinux特性
-S : 对稀疏文件进行特殊处理以节省DST的空间
-e : --rsh=COMMAND 使用ssh信道协议
--bwlimit=KBPS : 限制传输速度,用于传输大文件时,单位kb/s
rsync六种不同的工作模式:
1.拷贝本地文件,将/home/coremail目录下的文件拷贝到/cmbak目录下。
rsync -avSH /home/coremail/ /cmbak/
2.拷贝本地机器的内容到远程机器。
rsync -av /home/coremail/ 192.168.11.12:/home/coremail/
3.拷贝远程机器的内容到本地机器。
rsync -av 192.168.11.11:/home/coremail/ /home/coremail/
4.拷贝远程rsync服务器(daemon形式运行rsync)的文件到本地机。
rsync -av root@172.16.78.192::www /databack
5.拷贝本地机器文件到远程rsync服务器(daemon形式运行rsync)中。当DST路径信息包含”::”分隔符时启动该模式。
rsync -av /databack root@172.16.78.192::www
6.显示远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
rsync -v rsync://192.168.11.11/data