Rsync介绍
sync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步支持本地复制,或者与其他SSH、rsync主机同步。
特性如下:
1,.可以镜像保存整个目录树和文件系统。
2.可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3.无须特殊权限即可安装。
4.快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 5.在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
6.安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
7.支持匿名传输,以方便进行网站镜象。
关于配置方面比较简单,服务器需要三个文件
rsyncd.conf -------主配置文件
rsyncd.secrets-----用户名密码文件
rsyncd.motd-------欢迎界面文件(可选,用于识别被访主机,本例不提)
客户端一般可以不需做设置
下面是配置服务器
查看或者安装
rpm -qa | grep rsync
rsync-3.0.6-9.el6.x86_64
Vi /etc/rsyncd.conf 配置文件是要手动创建的。
cat /etc/rsyncd.conf
stributed under the terms of the GNU GeneralPublic License v2
#Minimal configuration file for rsync daemon
#See rsync(1) and rsyncd.conf(5) man pages forhelp
# This line is required by the/etc/init.d/rsyncd script
#告诉进程写到 /var/run/rsyncd.pid 文件中
pid file = /var/run/rsyncd.pid
#指定运行端口,默认是873
port = 873
#指定服务器IP地址
address = 192.168.100.210
#服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody。如果用nobody 用户和用户组,可能遇到权限问题
#uid = nobody
#gid = nobody
uid = root
gid = root
#一个安全选项详情自己去查查
use chroot = yes
#read only 是只读选择,也就是说,不让客户端上传文件到服务器上。还有一个 write only选项
read only = yes
#在您可以指定单个IP,也可以指定整个网段,能提高安全性。格式是ip 与ip 之间、ip和网段之间、网段和网段之间要用空格隔开
#limit access to private LANs
hosts allow=192.168.100.0/255.255.255.010.0.1.0/255.255.255.0
hosts deny=*
max connections = 5
motd file = /etc/rsyncd.motd
#This will give you a separate log file
#log file = /var/log/rsync.log
#This will log every file transferred - up to85,000+ per user, per sync
#transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
#指定文件目录所在位置
[home]
path = /home/server
list=yes #是否可以列出目录
ignore errors # #忽略IO错误
#auth users必须是在服务器上存在的真实的系统用户,如果你想用多个用户以,号隔开,比如auth users = easylife,root
auth users = root
secrets file = /etc/rsyncd.secrets
comment = This is RHEL 4 data
可以看到有密码文件在/etc/rsyncd.secrets,也是要手动创建。
cat /etc/rsyncd.secrets
root:123456
这里用的用户名是root 密码是123456
也可以加入多个用户以及密码,格式
root:123456
tom:tom123
创建后此文件权限必须是600 可用chmod 600 /etc/rsyncd.secrets更改。
服务器端启动 rsync –daemon
查看启动服务所用的端口 lsof –I:873
lsof -i:873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 1598 root 5u IPv6 13172 0t0 TCP *:rsync (LISTEN)
这里我之前安装了xinetd保护进程,可以直接用
chkconfig | grep rsync
rsync: 启用
也可以将其加入到系统启动
vi /etc/rc.d/rc.local
/usr/bin/rsync –daemon
保存
服务器已经完毕!
客户端不用启动rsync服务
- 1. 密码文件
- 2. 同步的目录,此处用的
cat /etc/rsyncd.secrets
123456
- 3. 必须更改密码文件权限问600,与服务器端一致
ll /etc/rsyncd.secrets
-rw-------. 1 root root 7 1月 2606:14 /etc/rsyncd.secrets
查看服务器共享的数据源可以看到服务器的同步模块是【home】,在主配置文件中可看到
rsync --list-only [email protected]::
home This is RHEL 4 data
测试同步:
在服务器端
touch/home/server/111
[[email protected] ~]#ls /home/server/
111
客户端执行
rsync [email protected]::home /home/ftp
Password:
receivingincremental file list
./
111
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/2)
sent 76bytes received 146 bytes 63.43 bytes/sec
total size is0 speedup is 0.00
文件111已经同步到客户端本地/home/ftp
ls /home/ftp
111
现在要按时或者定时去让客户端同步服务器文件,用crontab加脚本完成
Vi /tmp/ rsyncd.sh
内容:
cat /tmp/rsyncd.sh
rsync -avzP --delete--password-file=/etc/rsyncd.secrets [email protected]::home /home/ftp/
--delete参数说明:客户端必须和服务端文件一直,多余的数据会被删除,注意务必同步到重要数据的目录或者将数据进行备份
保证密码文件目录正确
crontab -e
*/5 * * * * sh /tmp/rsyncd.sh #第5分钟执行一次同步;
服务端新建222
touch /home/server/222
等时间到了看客户端
ls /home/ftp
111 222
已经实现定时同步功能。
查看crond任务以及状态
crontab -l
*/5 * * * * sh /tmp/rsyncd.sh
service crond status
crond (pid 1954) 正在运行...
crond可以用kill关闭