公司有一台服务器上有四个站,资源严重不足,直到今天硬盘开始满了,于是需要迁移一个网站到另外一台服务器上,而linux rsync 是不二的选择,本例在本机上的两台虚拟机上成功实现此功能。
1. 两台服务器
1.1 centos6.5 192.168.16.218 要备份的资源服务器
1.2 centos6.5 192.168.16.45 备份服务器
2. 在192.68.16.218这台服务器上安装rsync服务
2.1 yum -y install rsync ( 也可以编译安装,版本地址列表 http://rsync.samba.org/ftp/rsync/src/ )
2.2 修改rsync配置文件
vi /etc/xinetd.d/rsync # default: off # description: The rsync server is a good addition to an ftp server, as it \ # allows crc checksumming etc. service rsync { disable = yes #z 将此至更改为no flags = IPv6 socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
2.3 disable = yes 改成 disable = no
2.4 配置 /etc/rsyncd.conf 此文件默认没有,需要手动添加,本例代码如下
# vi /etc/rsyncd.conf pid file = /var/run/rsyncd.pid port = 873 #端口号 address = 192.168.16.218 #本机ip uid = root #运行RSYNC守护进程的用户 gid = root #运行RSYNC守护进程的组 use chroot = no read only = no max connections =20 lock file = /var/run/rsync.lock log file = /var/log/rsync.log motd file = /etc/rsyncd.motd #此文件需要单独配置,填写的是欢迎文字 timeout = 300 [web] #可以有多个[*]块 path = /home/www/redshu #本机要备份的文件地址 comment = rsync files ignore errors read only = no list = no hosts allow = 192.168.16.45 # 允许登陆的ip auth users = web secrets file = /etc/rsyncd.secrets # 密匙文件,需要手动创建
2.5 配置 /etc/rsyncd.mod
# vi /etc/rsyncd.motd welcome the rsync services!
2.6 配置 /etc/rsyncd.secrets
# vi /etc/rsyncd.secrets web:x13966498715
2.7 chmod 600 /etc/rsyncd.secrets //修改权限为600
2.8 配置防火墙 vi /etc/sysconfig/iptables 添加 873 端口监听
# vi /etc/sysconfig/iptables # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
2.9 rsync 两种启动方式
# /usr/bin/rsync --daemon # 独立启动 # service xinetd restart # 由xinetd超级进程启动 即2.2 中配置的配置文件 如果没有xinetd 服务,则安装 yum install -y xinetd 即可
2.10 查看该服务是否监听
# netstat -ano | grep 873 tcp 0 0 192.168.16.218:873 0.0.0.0:* LISTEN off (0.00/0/0)
3. 配置 192.168.16.45 服务器
3.1 安装 yum -y install rsync
3.2 不需要配置 /etc/rsyncd.conf 只需要建立一个空文件就可以了
vi /etc/rsyncd.conf
3.3 配置 iptables 加上873 端口!同上。
3.4 启动rsync 服务
# /usr/bin/rsync --daemon
3.5 建立密码文件
# vi /etc/rsyncd.passwd x13966498715 # chmod 600 /etc/rsyncd.passwd # 密码文件属性必须为600
3.6 测试是否可以连通
# /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.passwd web@192.168.16.218::web /home/www welcome the rsync services! Password:
3.7 如果指定了--password-file则不会出现Password这个了。否则填写对应的密码 (第一个web 是第一台服务器配置的用户名,第二个web是第一台服务器配置的web段名称)
3.7 传输参数说明
-a 参数,相当于-rlptgoD,
-r 是递归
-l 是链接文件,意思是拷贝链接文件;
-p 表示保持文件原有权限;
-t 保持文件原有时间;
-g 保持文件原有用户组;
-o 保持文件原有属主;
-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;
--partial阻止rsync在传输中断时删除已拷贝的部分(如果在拷贝文件的过程中,传输被中断,rsync的默认操作是撤消前操作,即从目标机上
删除已拷贝的部分文件。)
--progress是指显示出详细的进度情况
--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。
--exclude不包含/ins目录
--size-only 这个参数用在两个文件夹中的差别仅是源文件夹中有一些新文件,不存在重名且被修改过的文件,因为这种文件有可能会因为内容被修改可大小一样,而被略过。这个参数可以大大地提高同步的效率,因为它不需要检查同名文件的内容是否相同。
--password-file来指定密码文件,内容包含server端指定认证用户的密码。这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。
4.常见错误
1. rsync: opendir "." (in backup) failed: Permission denied (13) 关闭selinux 检查备份目录是否755属性
结束语
本文有任何错误,或有任何疑问,欢迎留言说明。
网友最新评论