两台服务器:
rsync_server : 192.168.0.238
rsync_client : 192.168.0.239
系统版本:
CentOS5.4_x64
客户端和服务端安装rsync服务(yum安装省略)
yum -y install rsync
rsync安装后默认没有配置文件,需要手动建立。主要建立的文件有如下三个:
rsyncd.conf 服务主要配置文件。
rsyncd.secrets 存放登陆密码文件。
rsyncd.motd 定义的用户登录信息。
配置步骤:
一:服务端操作:
1.创建rsync配置文件存放目录
mkdir /etc/rsyncd
2.创建主配置文件
vim /etc/rsyncd/rsyncd.conf
pid file = /var/run/rsyncd.pid
port = 888
address = 192.168.0.238 #服务端地址
#uid = nobody
#gid = nobody
uid = root # 默认使用的nobody用户,但是在同步的时候,会遇到权限的问题。使用root并非安全,可以尝试使用acl对要同步数据目录做单独权限分析。
gid = root
use chroot = yes # chroot顾名思义就是把用户锁在一个目录里,比较安全。但是如果该目录下存在连接文件,那么同步的时候无法同步连接的文件数据。
read only = no # 只读,禁止用户上传。
hosts allow=192.168.0.0/255.255.255.0 # 允许访问的地址列表,也可以使用单个地址。
hosts deny=*
max connections = 5 #客户端的最大连接数
#motd file = /etc/rsyncd/rsyncd.motd #存放显示信息,也可以不创建。若不创建要注释!
#log file = /var/log/rsync.log # 日志,如果开启,去掉#号。
#transfer logging = yes # 是否记录传输日志
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[data] #类似模块,只对下面的配置生效
path = /data
list=yes
ignore errors
auth users = user1 # 这个用户必须是系统用户
secrets file = /etc/rsyncd/rsyncd.secrets # 存放密码的文件
comment = data source
exclude = FIle1/ FIle2/ #意思是除了这两个目录,其他的都同步
[data2]
path = /data2
list=no
ignore errors
comment = data2 source
auth users = user2
secrets file = /etc/rsyncd/rsyncd.secrets
3.创建数据目录;
mkdir /data /data2
4.创建用户和密码对应文件;
vim /etc/rsyncd/rsyncd.secrets
user1:user1
user2:user2 ----> 注意: 这里使用的密码要避免使用系统用户的密码。笔者给的密码是虚拟的。
5.启动rsync服务;
如果开启防火墙,需要关闭,或者开启防火墙规则:
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
rsync --daemon --config=/etc/rsyncd/rsyncd.conf :启动服务
netstat -tnlp |grep rsync : 查看状态
tcp 0 0 192.168.0.238:888 0.0.0.0:* LISTEN 4971/rsync
二: 客户端操作
客户端只需要使用rsync命令直接同步即可!
rsync命令使用:
rsync -[options] 用户@服务端主机地址::服务端对应模块 客户端存放位置
[options]
-r 是递归
-l 是链接文件,意思是拷贝链接文件;
-p 表示保持文件原有权限;
-t 保持文件原有时间;
-g 保持文件原有用户组;
-o 保持文件原有属主;
-D 相当于块设备文件;
-a 等同于-rlptgoD集合;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,可以和-P一同使用;
mkdir /rsync_client_data
rsync -azPv [email protected]::data /rsync_client_data
-> :注意这里需要输入密码,这个密码就是上面设置的虚拟密码
如果不想输入密码,可以写在配置文件中;
touch /etc/rsync.password
chmod 600 /etc/rsync.password
echo "user1"> /etc/rsync.password
rsync -azPv --password-file=/etc/rsync.password [email protected]::data /rsync_client_data # 此时就不需要输入密码了
三: 写入任务计划,定期执行;
crontab -e
0 0 * * * rsync -azPv --password-file=/etc/rsync.password [email protected]::data /rsync_client_data