前言
什么是Rsync
?先贴上一段官方介绍:
Rsync
是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。Rsync
软件适用于unix
/linux
/windows
等多种操作系统平台。
相比较其他类似scp
、cp
以及rm
之类的命令,Rsync
最大的好处就是当你想传输或同步大量文件的时候,她可以通过其独有的quick check
算法,做到仅修改最后变动部分,也就是所谓的”增量改变”,如果遇到数据量大的话就可以节省大把的空间,时间以及流量
基础参数
通过rsync --help
能查看所有关于rsync
的参数,这里说几个我用的比较多的
- 参数
-a
这个参数起到了递归的作用,相当与文件夹移动的-R
- 参数
-v
显示具体传输过程日志 - 参数
-h
以比较友好的方式把传输过程显示出来 - 参数
-z
在传输过程进行压缩,能够节省流量 - 参数
--progress
加了这个参数后能够显示传输进度,更直观 - 参数
--delete
这个参数可以将源文件夹删除的文件同步删除,默认原则是”只增不减” - 参数
-e
主要用在远程来定义远端服务器的非标ssh
端口
我的使用场景
传输同步
- 日常本地传输文件/文件夹
#从/root/1/ 传输到 /var/www/2/ rsync -avhz --progress /root/1/ /var/www/2/
- 日常远程传输文件/文件夹
#从A服务器传输到B服务器 rsync -avhz --progress --delete /root/1/ -e 'ssh -p 端口号' root@B服务器域名:/var/www/3/
- 配合
cron
同步两个文件夹#编辑crontab crontab -e #最后加入要执行的脚本,以下表示每分钟同步1文件夹到2文件夹 * * * * * rsync -avhz /root/1/ /var/www/2/
增量备份
这里使用场景是通过建立一个rsync
服务器来备份我的主服务器,由于是增量备份,备份的速度和硬盘的节省上都是很友好的
服务端建立
- 把默认的
rsync
配置文件复制到/etc
下cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/
- 编辑
/etc/rsyncd.conf
# sample rsyncd.conf configuration file # GLOBAL OPTIONS #motd file=/etc/motd //连接显示公告 #log file=/var/log/rsyncd # for pid file, do not use /var/run/rsync.pid if # you are going to run rsync out of the init.d script. # The init.d script does its own pid file handling, # so omit the "pid file" line completely in that case. # pid file=/var/run/rsyncd.pid port = xxx //自定义端口 syslog facility=local3 //日志级别 #socket options= # MODULE OPTIONS [2233] //模块名字 comment = public archive path = /home/bak //备份存放路径 use chroot = yes max connections=10 //最大连接数 lock file = /var/lock/rsyncd # the default for read only is yes... read only = no list = yes uid = root gid = root # exclude = # exclude from = # include = # include from = # auth users = 2233 //授权用户名 # secrets file = /etc/rsyncd.secrets //授权文件放置处 strict modes = yes # hosts allow = # hosts deny = ignore errors = yes ignore nonreadable = yes transfer logging = yes # log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes. timeout = 600 refuse options = checksum dry-run dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
- 编辑授权文件
vim /etc/rsyncd/rsyncd.secrets //用户名称与密码以冒号分隔,多个用户名和密码可以多行 #例如: joy:123
- 编辑登录公告
vim /etc/rsyncd/rsyncd.mot #例如: ++++++++++++++++++++++++++++++ welcome ++++++++++++++++++++++++++++++
- 启动
rsync
服务器#有两种方式 #第一种: sudo /etc/init.d/rsync start #第二种: service rsync start
- 查看
rsync
服务状态service rsync status
客户端连接
这里我使用的是群晖作为我的客户端,通过hyper backup
套件来使用上述建立的rsync
服务器来实现增量备份。设置如下图:
实测增量备份恢复以及多版本查看都是可以的,增量备份服务器达成!
一些后话
Rsync
的用法其实还有很多,这里只是讲下我自己实际使用的场景。另外我看网上有说要通过xinetd
来守护启动rsync
,并且接管rsync
的端口号,我这里测试下来失败,具体表现为如果先启动xinetd
,则rsync
启动失败,报错原因是监听端口被xinetd
占用;反之如果先启动rsync
,则xinetd
启动失败,报错原因相同,不过我实际使用下来,rsync
是能够一直在线,且服务器重启后也是可以自动启动的,所以这块也就没啥影响了。
发表回复