rsync介绍
rsync用来定时备份服务器中的文件或者目录,有三种工作模式,本地复制,使用系统用户认证,守护进程方式,开源高效。同步工具,把一台机器上的文件同步都另一台机器 。默认使用873
端口
选项
-a #归档模式传输, 等于-tropgDl -v #详细模式输出, 打印速率, 文件数量等 -z #传输时进行压缩以提高效率 --delete #让目标目录和源目录数据保持一致 --password-file=xxx #使用密码文件 ------------------- -a 包含 ------------------ -r #递归传输目录及子目录,即目录下得所有目录都同样传输。 -t #保持文件时间信息 -o #保持文件属主信息 -p #保持文件权限 -g #保持文件属组信息 -l #保留软连接 -D #保持设备文件信息 ---------------------------------------------- -L #保留软连接指向的目标文件 -e #使用的信道协议,指定替代rsh的shell程序 --exclude=PATTERN #指定排除不需要传输的文件模式 --exclude-from=file #文件名所在的目录文件 $RSYNC_PASSWORD # 用来存放rsync密码的变量,使用之后可以不使用--password-file=xxx
# 远程传送 复制 scp 源文件 目标 上传到另一台机器 scp yum.log root@10.0.0.41:/root/ 从另一台机器下载 scp root@10.0.0.41:/root/yum.log /root -r 传送目录 推 scp -r /etc root@10.0.0.41:/root/ 拉 scp -r root@10.0.0.41:/root/ /etc http 80 https 443 rsync 873 ftp 21 ssh 22 C/S 架构 client/server
小提示:利用rsync还可以实现删除文件和目录的功能,这又相当于rm命令,一个rsync相当于scp、cp、rm,但是还优于他们的每一个命令。
备份类型
增量备份
基于全部备份,当客户端A中有file1、file2、file3三个文件,服务器中有已经备份的file1,那么这个时候只会备份,file2和file3,在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。
全部备份
会把客户端备份的内容全部备份到,服务器中。
差异备份
假设我们在第一天也进行一次完全备份。第二天差异备份时,会备份第二天和第一天之间的差异数据,而第二天的备份数据是完全备份加第一次差异备份的数据。
rsync的使用方法
# 推 # 没有/的情况是备份整个目录 rsync -avz /etc root@10.0.0.41:/backup # 有/的情况是备份目录里面的内容 rsync -avz /etc/ root@10.0.0.41:/backup # 拉 rsync -avz root@10.0.0.41:/etc/sysconfig/network-scripts/ifcfg-eth* /tmp
rsync的传输模式
本地传输模式
# 语法 rsync [OPTION...] SRC... [DEST] # 复制文件 rsync /tmp/ifcfg-eth1 /opt/ # 拷贝目录 rsync -a /etc /opt/
远程传输模式
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] 拉: rsync [选项] 用户名@主机ip:路径 本地路径 [root@web01 /tmp]# rsync -avz root@10.0.0.41:/etc/hostname ./ Push: rsync [OPTION...] SRC... [USER@]HOST:DEST 推: rsync [选项] 本地文件或者目录 用户名@主机ip:路径
这种模式借助的是ssh协议的22端口,当默认端口更改之后需要使用选项去指定。
守护进程模式
Access via rsync daemon: Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] # 拉: rsync [-avz] zls_bak@10.0.0.41::[模块] 源文件 Push: rsync [OPTION...] SRC... [USER@]HOST::DEST # 推: rsync [-avz] 源文件 zls_bak@10.0.0.41::[模块]
环境准备
主机名 | wanIP | lanIP | 角色 |
---|---|---|---|
web01 | 10.0.0.7 | 172.16.1.7 | 客户端 |
backup | 10.0.0.41 | 172.16.1.41 | 服务端 |
服务端 : 备份的文件放在哪台主机的磁盘谁就是服务端。
1、安装服务端
yum -y install rsync
2、修改配置文件通常以.conf .cfg .cnf 结尾的
[root@web01 /tmp]# vi /etc/rsyncd.conf uid = rsync # 进程启动的用户 gid = rsync # 指定进程启动的gid port = 873 # rsync服务的端口 fake super = yes # 无需让rsync以root的身份运行,允许接收文件的完整属性。 use chroot = no # 禁锢指定的目录path max connections = 200 # 最大连接数 timeout = 600 # 超时时间单位s ignore errors # 忽略错误 read only = false # 不只读,可读写 list = false # 不允许别人查看模块名 auth users = rsync_backup # 传输文件的用户 secrets file = /etc/rsync.passwd # 传输用户的密码文件 log file = /var/log/rsyncd.log # 日志文件 ##################################### [backup] # 模块名 comment = welcome to oldboyedu backup! # 注释 path = /backup # 备份的目录
3、根据配置文件内容创建需要的环境
useradd rsync -s /sbin/nologin -M mkdir /backup chown -R rsync.rsync /backup/ [root@web01 /tmp]# vi /etc/rsync.passwd rsync_backup:123 echo 'rsync_backup:123' > /etc/rsync.passwd chmod 600 /etc/rsync.passwd # 密码文件必须是这个权限
4、启动服务加入开机自启
systemctl start rsyncd systemctl enable rsyncd netstat -lntup |grep 873 ps -ef | grep rsync
5、安装客户端
yum -y install rsync # 客户端不用修改配置文件
6、配置客户端密码文件
echo '123' > /etc/rsync.passwd chmod 600 /etc/rsync.passwd
5、使用
推: rsync -avz /etc/passwd rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.passwd
脚本使用rsync密码变量
export RSYNC_PASSWORD=123 rsync -avz ./ rsync_backup@10.0.0.41::backup
rsync无差异同步
--delete
保证服务器上的内容和本地的内容是一致的,如果服务器上的内容多了会被删除,使用很危险 。
[root@web01 ~]# rsync -avz ./ --delete rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.passwd
rsync限速
--bwlimt
限制对磁盘的I/O
[root@web01 ~]# rsync -avz ./ --bwlimit=1 rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.passwd