Rsync本来是用于替代rcp的一个工具,目前由rsync.samba.org维护,所以rsync.conf文件的格式类似于samba的主
Rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。此外,它在windows平台下
http://rsync.samba.org/ftp/rsync/下载地址
2、 解压解包 # tar zxvf rsync-3.0.9.tar.gz 和补丁
3、 配置 # cd rsync-3.0.9
6、 把上述步骤在客户端和服务器端各执行一遍。
vi /etc/rsyncd.conf
uid = root #rsync运行时的用户ID (关于用户ID和用户组ID的设置只要保证具有读取要同步文件和文
gid = root #rsync运行时的用户组ID
max connections = 0 #同时最大的连接数,0为不限制
pid file = /var/log/rsync/rsyncd.pid #记录rsync运行时的进程ID
lock file = /var/log/rsync/rsync.lock #以文件的方式锁的方式,保证rsync的一次运行
log file = /var/log/rsync/rsyncd.log #rsync日志信息包括启动信息同步信息等
port = 873 #可以指定rsync运行时使用的端口,默认使用873(不指定则使用
use chroot = no #不使用chroot
#同步模块配置
[data] #要同步的文件夹的别名,此处直接写的accounts,只是一个名称方便记忆即可,客户
path = /data #指定要同步的具体文件夹,此处为实际同步的文件夹
comment = backup data #备注信息,主要是一些说明信息,用来帮助记忆等
ignore errors #忽略一些无关的错误信息
read only = false #是否设置以只读的方式运行,本工具支持对外同步和回传哟
list = false #是否允许客户端查看文件列表
hosts allow = 192.168.40.42 #允许同步的客户机IP,多个用","隔开
auth users = test #同步认证时使用的用户名,可以任意指定,但必需存在于下一项的密码文件
secrets file = /root/rsync.passwd #密码认证文件,此文件中包含客户端认证时的用户名和密码的对应关
服务端配置文件:
uid = root
gid = root
max connections = 200
timeout = 600
use chroot = no
read only = no
port = 873
log file=/var/log/rsyncd.log//记录日志
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
path=/data//指定要同步的具体文件夹,此处为实际同步的文件夹
comment=backup data//备注信息,主要是一些说明信息,用来帮助记忆等
ignore errors//忽略一些无关的错误信息防止因为资源不足或其他的通信出错导致严重问题
hosts allow=192.168.40.42//允许同步的客户机IP,多个用","隔开
auth user=test//验证用户,没有这行表示匿名,安全起见请加上这行
secrets file=/root/rsync.passwd//密码认证文件,此文件中包含客户端认证时的用户名和密码的对应关系 ,配置
客户端配置文件
[root@localhost rsync]# cat /etc/rsyncd.conf
uid = root
gid = root
max connections = 200
timeout = 600
use chroot = no
read only = no
port = 873
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
[data]
path=/data
comment=backup data
ignore errors
hosts allow=192.168.40.40
auth users=test
secrets file=/root/rsync.passwd
服务端:
[root@localhost ~]# cat rsync.passwd //这个文件一定要设置为chmod 600不然无法完成RSYNC设置
test:123456
客户端:
[root@localhost ~]# cat rsync.passwd //这个文件一定要设置为chmod 600不然无法完成RSYNC设置
123456
echo "/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf&">>/etc/rc.local//让系统开机运行
客户端:
echo "/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf&">>/etc/rc.local//让系统开机运行
netstat -an |grep 873 查看服务是否开启并监听端口如有监听服务正常
[root@localhost ~]# netstat -an|grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN
tcp 0 0 :::873 :::* LISTEN
unix 3 [ ] STREAM CONNECTED 8873
如果开启的iptables就要
iptables -I INPUT -p tcp --dport 873 -j ACCEPT 命令开启防火墙的873端口
服务端脚本
#!/bin/sh
/usr/local/rsync/bin/rsync -vzrtopg --progress test@192.168.40.42:/data /data --delete
#!/bin/sh
/usr/local/rsync/bin/rsync -vzrtopg --progress --password-file=/root/rsync.passwd /data
解释 --progress 显示传输过程
crontab 设置定时任务同步备份实现自动备份
同步参数
常用参数-avz ,--progress,--delete
-v, --verbose 详细模式输出
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, --links 保留软链结
-L, --copy-links 想对待常规文件一样处理软链结
-H, --hard-links 保留硬链结
-p, --perms 保持文件权限
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息
-D, --devices 保持设备文件信息
-t, --times 保持文件时间信息
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
--delete 删除那些DST中SRC没有的文件
--force 强制删除目录,即使不为空
-timeout=TIME IP超时时间,单位为秒
-I, --ignore-times 不跳过那些有同样的时间和长度的文件
--progress 显示备份过程
-z, --compress 对备份的文件在传输时进行压缩处理
--exclude=PATTERN 指定排除不需要传输的文件模式
--include=PATTERN 指定不排除而需要传输的文件模式
--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件
--version 打印版本信息
--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
--port=PORT 指定其他的rsync服务端口
测试:在42客户端机器上创建一个test目录
[root@localhost data]# ls
1 2 3 333 4 5 6 ggg kkk test
40服务上没有test这个目录
[root@localhost data]# ls
1 2 3 333 4 5 6 ggg kkk
test@192.168.40.42's password:
receiving incremental file list
data/
data/test/
total size is 0 speedup is 0.00
1 2 3 333 4 5 6 ggg kkk test
1.刚开始/data目录的权限问题所以被拒绝了。
2.还有刚开始用/usr/local/rsync/bin/rsync --daemon 启动发现没有配置文件,所以制定配置文件。