RSYNC软件介绍:
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下:
- 可以镜像保存整个目录树和文件系统。
- 可以很容易做到保持原来文件的权限、时间、软硬链接等等。
- 无须特殊权限即可安装。
- 优化的流程,文件传输效率高。
- 可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
- 支持匿名传输,以方便进行网站镜象。
rysnc的主页地址为:
http://rsync.samba.org/
目前最新版本为2.4.6。可以选择从原始网站下载:
http://rsync.samba.org/ftp/rsync/
一、下载、安装rsync
1 | tar zxvf rsync-2.6.9.tar.gz |
正常安装RH的时候是带RSYNC的,运行文件放在/usr/bin/rsync
二、配置rsync server
1、启动RSYNCvi /etc/xinetd.d/rsync
1 | service rsync |
随系统启动RSYNCchkconfig rsync on
2、配置/etc/rsyncd.conf
(需要手动生成)
rsyncd.conf的参数写在上边就是全局参数和写在模块里的就是模块参数vi /etc/rsyncd.conf
【全局参数】
1 | uid = root //运行RSYNC守护进程的用户 |
【模块参数】
1 | [backup] //这里是认证的模块名,在client端需要指定 |
3、配置rsync密码(在上边的配置文件中已经写好路径) /etc/rsync.pas
(名字随便写,只要和上边配置文件里的一致即可),格式(一行一个用户)
账号:密码vi /etc/rsync.pas
例子:Hening:111111
权限:因为rsync.pas存储了rsync服务的用户名和密码,所以非常重要。要将rsync.pas设置为root拥有, 且权限为600。
1 | cd /etc |
3.rsyncd.motd(配置欢迎信息,可有可无)vi /etc/rsyncd.motd
rsyncd.motd记录了rsync服务的欢迎信息,你可以在其中输入任何文本信息,如:
Welcome to use the rsync services!
4、让配置生效service xinetd restart
如果报错:xinetd: 未被识别的服务
,执行:yum -y install xinetd
三、启动rsync server
RSYNC服务端启动的两种方法
1、启动rsync服务端(独立启动)/usr/bin/rsync --daemon
2、启动rsync服务端 (有xinetd超级进程启动)/etc/rc.d/init.d/xinetd reload
(reload一般只是从新读取一次配置文件。restart则是把进程停掉,从头启动一次。restart自然也就reload了。但是对于大型服务,restart可能不方便。)
四、加入rc.local
在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时把rsync --daemon
加载进去。vi /etc/rc.local
加入一行/usr/bin/rsync --daemon
五、检查rsync
1 | netstat -a | grep rsync |
六、配置rsync client
1、设定密码vi /etc/rsync.pas
111111
修改权限
1 | cd /etc |
2、client连接SERVER
从SERVER端取文件/usr/bin/rsync -vzrtopg --progress --delete hening@192.168.0.217::backup /home/backup --password-file=/etc/rsync.pas
向SERVER端上传文件/usr/bin/rsync -vzrtopg --progress --password-file=/root/rsync.pas /home/backup hening@192.168.0.217::backup
这个命令将把本地机器/home/backup
目录下的所有文件(含子目录)全部备份到RSYNC SERVER(172.20.0.6)的backup模块的设定的备份目录下。
请注意如果路径结束后面带有”/“,表示备份该目录下的东东,但不会创建该目录,如不带”/“则创建该目录。
RSYNC用法:
1 | rsync [OPTION]... [USER@]HOST::SRC [DEST] #从RSYNC SERVER备份文件到本地机器 |
3、自动运行
1)vi /usr/local/rsync/time.sh //制作脚本文件
把下边的内容复制进去
1 |
|
- 定时执行
1 | crontab -e |
七、iptables
iptables -A INPUT -p tcp -s ! 11.22.33.44 --dport 873 -j DROP
如此, 只有 11.22.33.44 这个 client IP 能进入这台 rsync server。
命令介绍:-rvlHpogDtS
rsync命令参数
1 | -v表示verbose详细显示 |
示例:
1 | hening@192.168.0.217::backup |
hening
是指server端指定认证的用户192.168.0.217
是指服务器端的ip::backup
表示服务器端需要同步的模块名称;/home/quack/backup/$DATE
是同步后的文件指存放在本机的目录地址。/var/log/rsync.$DATE
是同步后的日志文件存放在本机的目录地址。
注意:
不放/
则目录名也包含mirror,放/
则只有目录里面的东西mirror了
详见:http://blog.csdn.net/moqiang02/article/details/37938059
实例总结流程:
1.配置主控端
1 | # vim /etc/rsyncd.conf |
主控配置完成。
2.客户端配置
1 | # vim /etc/rsyncd.pw |
注意:
1.这里的backup名字为主控conf配置里面的[backup]
,一定要同名
2.bakweb为主控conf配置里面的bakweb,可以随意命名,不是系统用户。
配置完了之后,可能会遇到一些权限问题。以下就一些常见的权限问题进行解答:
问题一:
1 | @ERROR: chroot failed |
原因:
服务器端的目录不存在或无权限。
创建目录并修正权限可解决问题。
问题二:
1 | @ERROR: auth failed on module tee |
原因:
服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。
提供正确的用户名密码解决此问题。
问题三:
1 | @ERROR: Unknown module ‘tee_nonexists’ |
原因:
服务器不存在指定模块。
提供正确的模块名或在服务器端修改成你要的模块以解决问题。
测试
都配置完毕之后就是测试了。在FreeBSD机器上,输入命令rsync -vzrtop --delete /home/andrewy/etc test@192.168.21.41::backup --password-file=/etc/rsyncd.password
查看同步效果。
注意:我这里是直接以root进行操作。rsync以delete操作时要注意,它会完全同步这边的目录与服务器的目录中的文件,这样会产生一个后果,它会删掉服务器中多余的文件,这样做很危险,如果是线上机器,请慎之又慎,切记!