rsync数据同步、备份
定时:rsync +cron定时任务 实时:rsync +sersync(inotify)官方文档
- 远程拷贝 ssh带的scp命令(加密的拷贝)
- 本地拷贝 cp
- 删除功能 rm
Some of the additional features of rsync are: rsync额外特性
- support for copying links, devices, owners, groups, and permissions 支持拷贝特殊文件,如链接、设备等
- exclude and exclude-from options similar to GNU tar 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能
- a CVS exclude mode for ignoring the same files that CVS would ignore
- can use any transparent remote shell, including ssh or rsh 可通过ssh、rsh加密传输(rsync不加密)
- does not require super-user privileges
- pipelining of file transfers to minimize latency costs
- support for anonymous or authenticated rsync daemons (ideal for mirroring) 支持匿名或认证的进程模式传输
rsync可以是一个网络服务(port、socket)
rsync命令是客户端命令rsync三种工作模式
- 第一种工作模式:local
rsync -avz /root/aaa /tmp/ --->cprsync -avz --delete /root/aaa/ /tmp/ --->rm
- 第二种工作模式:remote shell ,一般配合ssh、key免密钥传输,结合定时任务
rsync -avzP -e 'ssh -p 22' /opt/ root@192.168.105.135:/tmp/ pushrsync -avzP -e "ssh -p 22" root@192.168.105.135:/tmp/ /opt/ 带斜线代表获取的是tmp下的文件 pullrsync -avzP -e "ssh -p 22" root@192.168.105.135:/tmp /opt/ 不带斜线代表获取的是tmp这个目录 pull
- 第三种工作模式:rsync daemon 内网不需要,加密性能有损失 vpn(pptp、openvpn,ipsec)
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
关键语法说明:
1,-avz相当于-vzrtopgDl,表示同步时文件和目录属性不变。 2,-P显示同步的过程,可以用--progress替换 3,-e 'ssh -p 22',表示通过ssh的通道传输数据,-p 22可省略 4,root@192.168.105.135:/tmp/ 远程的主机系统用户、地址、路径 5,/opt本地的路径 6,同步一个文件里有变化的内容部分,先比较再同步
参数选项 | 描述 |
---|---|
-v --verbose | 详细模式输出,传输时的进度等信息 |
-z --compress | 传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩 |
-a --archive | 归档模式,表示以递归方式传播文件,并保持所有文档属性,相当于-rlptgoD |
-r --recursive | 对子目录以递归模式,即目录下的所有目录都同样传输 |
-t --times | 保持稳健时间信息 |
-o --owner | 保持文件属主信息 |
-p --perms | 保持文件权限 |
-g --group | 保持文件属组信息 |
-P --progress | 显示同步的过程及传输时的进度等信息 |
-D --devices | 保持设备文件信息 |
-l --links | 保留软链接 |
--delete | 无差异同步(危险) |
--exclude | 排除单个文件a排除多个文件{a,b}、{a..d}排除多个文件--exclude-from |
--partial | 大文件断点续传 |
--bwlimit | --bwlimit=100限速 |
企业应用场景:
- 两台服务器之间数据同步
- 把所有客户端服务器数据同步到备份服务器
- rsync结合inotify的功能做实时的数据同步rsync+inotify或sersync
生产场景集群架构服务器备份方案:
cron+rsync 全网服务器数据备份解决方案提出及负责实施
- 针对公司重要数据备份混乱状况和领导提出备份全网数据的解决方案
- 通过本地打包备份,然后rsync结合inotify应用把全网数据统一备份到一个固定存储服务器,然后存储服务器上通过脚本检查并报警管理员备份结果
- 定期将IDC机房的数据备份到公司内部不同的服务器上,防止机房地震及火灾问题导致数据丢失
rsync优点:
1,增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)
2,远程shell通道模式还可以加密(ssh)传输,socket(daemon)需要加密传输,可以利用vpn服务或ipsec服务rsync缺点:
- 大量小文件同步的时候,比对时间较长,有时候,rsync进程可能会终止
- 同步大文件,10G这样的大文件有时也会出问题,终端,未完整同步完时,会变成一个隐藏文件,可以通过断点续传等参数实现传输 。一次性远程拷贝可以用scp
Rsync备份实战
配置rsync服务端步骤
1,配置服务器,查看当前rsync安装包和版本号
rsync --version rsync-3.0.6-12.el6.x86_64
2,vim /etc/rsyncd.conf 添加配置文件
rsync配置文件官网:
#配置文件详解,更多参数查看man rsyncd.conf#Rsync server#created by hejian 19:50 2019-3-17##rsyncd.conf start##uid = rsync //客户端具备的权限(不存在,需要创建)gid = rsyncuse chroot = no //安全相关max connections = 2000 //客户端连接数timeout = 600 //超时pid file = /var/run/rsyncd.pid #进程ID文件lock file = /var/run/rsync.lock #锁文件log file = /var/log/rsyncd.log #日志文件ignore errors #忽略错误read only = false #可读写list = false #不可以远程列表hosts allow = 192.168.105.0/24hosts deny = 0.0.0.0/32auth users = rsync_backup //虚拟用户secrets file = /etc/rsync.password //存放用户账号密码的文件#####################################[backup] //模块调用#comment = backup by hejian 19:50 2019-3-17path = /backup //共享目录[hejian]path = /hejian
3,创建rsync用户及共享目录/backup,并给目录赋予权限
useradd rsync -s /sbin/nologin -Mid rsyncmkdir /backupchown -R rsync.rsync /backup/
4,创建密码文件
echo "rsync_backup:123" > /etc/rsync.passwordchmod 600 /etc/rsync.password
5,启动rsync服务并查看
rsync --daemonlsof -i :873 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 1647 root 3u IPv4 12479 0t0 TCP *:rsync (LISTEN) rsync 1647 root 5u IPv6 12480 0t0 TCP *:rsync (LISTEN) netstat -tunlp|grep rsync tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1647/rsync tcp 0 0 :::873 :::* LISTEN 1647/rsync ss -tunlp|grep rsync tcp LISTEN 0 5 :::873 :::* users:(("rsync",1647,5)) tcp LISTEN 0 5 *:873 *:* users:(("rsync",1647,3)) ps -ef|grep rsync root 1647 1 0 20:11 ? 00:00:00 rsync --daemon root 1660 1505 0 20:12 pts/0 00:00:00 grep --color=auto rsync
6,加入开机自启动
echo "rsync --daemon" >>/etc/rc.local cat /etc/rc.local
rsync客户端配置步骤
1,创建密码文件,并修改权限
echo "123" > /etc/rsync.password (与服务端密码保持一致,免密登陆)chmod 600 /etc/rsync.password(与服务端密码权限保持一致)ll /etc/rsync.password
2,发送文件rsync(push或pull都是从客户端来操作)
(push)rsync -avz /backup/ rsync_backup@10.0.0.41::backup/ --password-file=/etc/rsync.password(pull)rsync -avz rsync://rsync_backup@10.0.0.41:873/backup/ /backup/ --password-file=/etc/rsync.passwordecho $? = 0 就代表程序运行是正确的
排除推送
rsync -avz --exclude=a /root/test/ rsync_backup@10.0.0.41::backup/ --password-file=/etc/rsync.password
排错
#Rsync server#created by hejian 19:50 2019-3-17##rsyncd.conf start##uid = rsyncgid = rsyncuse chroot = nomax connections = 2000timeout = 600pid file = /var/run/rsyncd.pidlock file = /var/run/rsync.locklog file = /var/log/rsyncd.logignore errorsread only = falselist = falsehosts allow = 192.168.0.0/24hosts deny = 0.0.0.0/32auth users = rsync_backupsecrets file = /etc/rsync.password#####################################[backup]comment = backup by hejian 19:50 2019-3-17path = /backup
虚拟机快照
rsync实战测试准备环境,修改IP,修改主机名,修改主题参数颜色,备份主要配置文件等客户端报错
报错一:
[root@lamp01:/tmp]# rsync -avz /tmp/ raync_backup@192.168.105.136::backup --password-file=rsync.passwordrsync: failed to connect to 192.168.105.136: No route to host (113)rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]
排错:服务端防火墙开启了
报错二:
[root@lamp01:/tmp]# rsync -avz /tmp/ raync_backup@192.168.105.136::backup --password-file=rsync.passwordrsync: could not open password file "rsync.password": No such file or directory (2) Password: @ERROR: auth failed on module backuprsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
第一个错误是路径写错了--password-file=/etc/rsync.password
第二个错误是服务端密码文件和客户端写反了,服务端写账号和密码,客户端只写密码;还有服务端的passwod文件都是root,backup文件用户是rsync;还有一个问题是拼错了一个单词导致一直验证失败