* rsync软件介绍
rsync是类unix系统下的数据镜像备份工具,它的特性如下:
- 可以镜像保存整个目录树和文件系统。
- 可以很容易做到保持原来文件的权限、时间、软硬链接等等。
- 无须特殊权限即可安装。
- 优化的流程,文件传输效率高。
- 可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
- 支持匿名传输,以方便进行网站镜象。
软件下载 rysnc的主页地址为:http://rsync.samba.org/
* rsync下载安装
tar zxvf rsync-3.0.8.tar.gz
cd rsync-3.0.8
./configure --prefix=/usr/local/rsync
make
make install
注:其实CentOS5.5默认都会安装该软件,如果不是特定版本需求,不必自行安装。
* rsync服务端配置
二、配置rsync server
1. 配置/etc/rsyncd.conf(需要手动创建一个)
#全局参数
uid = root #运行RSYNC守护进程的用户
gid = root #运行RSYNC守护进程的组
use chroot = no #不使用chroot
max connections = 4 #最大连接数为4
strict modes =yes #是否检查口令文件的权限
port = 873 #默认端口873
#模块参数 : 要同步的目录等相关项说明。
[releases] #这里是认证的模块名,在client端需要指定
path = /usr/local/releases/ #需要做镜像的目录,不可缺少!
comment = This is a test #这个模块的注释信息
ignore errors #可以忽略一些无关的IO错误
read only = yes # 只读
list = no #不允许列文件
auth users = coco #认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
secrets file = /etc/rsync.pas //密码和用户名对比表,密码文件自己生成
hosts allow = 192.168.1.1,10.10.10.10 #允许主机
hosts deny = 0.0.0.0/0 #禁止主机
#transfer logging = yes
2、配置rsync密码
上面配置如果说明了auth users和secrets file两个选项,则需要配置scretes file项指定的文件,内容如下(一行一个用户):
coco:2011
因为rsync.pas存储了rsync服务的用户名和密码,所以非常重要。要将rsync.pas设置为root拥有, 且权限为600。
cd /etc
chown root.root rsync.pas
chmod 600 rsync.pas
三、启动rsync服务器
#/usr/local/rsync/bin/rsync --daemon
四.检查rsync
netstat -a | grep rsync
tcp 0 0 *:rsync *:* LISTEN
tcp 0 0 *:rsync *:* LISTEN
* rsync客户端配置
一.配置rsync client
如果匿名访问,此步省略。设定密码文件使命令行访问不提示密码输入:编辑/etc/rsync.pas (文件名和目录随意,关键是内容),内容是密码明文(与服务器端密码相同,但不可以输入用户名)
2011
修改文件权限(必须地,否则每次访问都要求输入密码)
cd /etc
chown root.root rsync.pas
chmod 600 rsync.pas
二. 连接服务器
1. 从服务器下载文件
/usr/local/rsync/bin/rsync -vzrtopg --progress --delete [email protected]::releases /usr/releases --password-file=/etc/rsync.pas
2. 上传客户端文件到服务器
/usr/local/rsync/bin/rsync -vzrtopg --progress --password-file=/etc/rsync.pas /usr/releases
[email protected]::releases
三. 自动运行(可选)
1. vi /usr/local/rsync/time.sh //制作脚本文件内容如下
#!/bin/bash
/usr/local/rsync/bin/rsync -vzrtopg --progress --delete [email protected]::releases /usr/releases --password-file=/etc/rsync.pass
2 crontab -e
加入55 * * * * /usr/local/rsync/time.sh //每55分运行一次time.sh脚本文件
* 其他
I. 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命令参数
-v表示verbose详细显示
-z表示压缩
-r表示recursive递归
-t表示保持原文件创建时间
-o表示保持原文件属主
-p表示保持原文件的参数
-g表示保持原文件的所属组
-a存档模式
-P表示代替-partial和-progress两者的选项功能
-e ssh建立起加密的连接。
--partial阻止rsync在传输中断时删除已拷贝的部分(如果在拷贝文件的过程中,传输被中断,rsync的默认操作是撤消前操作,即从目标机上
删除已拷贝的部分文件。)
--progress是指显示出详细的进度情况
--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。
--exclude不包含/ins目录
--size-only 这个参数用在两个文件夹中的差别仅是源文件夹中有一些新文件,不存在重名且被修改过的文件,因为这种文件有可能会因为内容被修改可大小一样,而被略过。这个参数可以大大地提高同步的效率,因为它不需要检查同名文件的内容是否相同。
--password-file来指定密码文件,内容包含server端指定认证用户的密码。
这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。
[email protected]::releases
coco是指server端指定认证的用户
192.168.2.100是指服务器端的ip
::backup 表示服务器端需要同步的模块名称;
/home/quack/backup/$DATE是同步后的文件指存放在本机的目录地址。
/var/log/rsync.$DATE是同步后的日志文件存放在本机的目录地址。
注意
不放/ 则目录名也包含mirror,放 / 则只有目录里面的东西mirror了