rsync
rsync是linux下的数据备份工具,支持远程同步、本地复制。
这是一篇rsync简单的使用文章,很多rsync的认识不足,更多的rsync知识请
到rsync官网研读:
rsyrsync是系统自带的(至少2.6内核是这样的),如果不是自己编译的内核应该是自带。
检查一个安装 rpm -qa | grep rsync
如果没有安装,自己下载rpm包或者使用yum安装,这里就不演示。
配置rsync服务
vim /etc/xinetd.d/rsync
把disable的yes改成no
设置rsync开机自启
chkconfig --level 35 rsync on
rsync的两种同步方式
一种是单次同步
一种是多次(每天定时同步)
单次同步只要服务器和客户端都开启rsync服务
使用rsync命令去同步
例如:
输入15.5的root密码
这就把15.5服务器的rsync.sh的数据给同步过来了
这和scp相类似
每天定时同步的是下面的设置
cd /etc/
mkdir rsyncd
touch rsyncd.conf //rsync的主配置文件
touch rsyncd.motd //rsync的欢迎信息
touch rsyncd.secrets //rsync用户的密码文件
vim rsyncd.secrets //文件把用户和密码写入用:分隔
kingvon:test
chmod 600 rsyncd.secrets
配置rsync的主配置文件
vim /etc/rsyncd/rsyncd.conf
前半部分是全局设置
port //设置rsync的端口
uid //运行rsync的守护进程的用户
gid //运行rsync的守护进程的组
use chroot //不使用chroot
strict modes //是否检查口令
read only //是否只读
lock file //指定支持最大并发量参数的锁文件。
log file //日志文件
pid file //守护进程的pid文件
后面是模块设置
[tmp] //这里认证模块的名字,在client端需要指定
path/ //需要同步的目录
ignore errors //忽略一些无关的io错误
auth users //认证的用户名,此用户与系统无关不用去useradd
hosts allow //允许的主机或网段
hosts deny //禁止的主机或网段
secrets file //rsync用户密码文件
配置好rsyncd.conf后
还要做一个连接
ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf
因为rsync只会去查找/etc/rsyncd.conf文件
如果原来就存在/etc/rsyncd.conf,且文件里面有数据
rsync会以/etc/rsyncd.conf为准
如果不建立这个连接rsync找不到配置文件
使用rsync同步时会提示错误
rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(759) [receiver=3.0.6]
关闭或配置iptabeles
开启873端口或直接关闭iptables
因为我这是一个samba服务器,使用的是内部网络所以我之前就关闭了iptables
客户端的设置
安装好rsync
设置rsync开机启动
编辑用户密码文件
vim /etc/rsyncd/ryncd.secrets
kingvon:test
下面是rsync命令的一些常用的参数
-a 归档模式,以递归方式传输文件并保持属性
-r 对子目录以递归模式处理
-R 使用相对路径
-p 保持文件的权限
-o owner文件的所有者
-g group文件的所属组
-t time保持文件的时间(atime,ctime)
-z 对文件传输时进行压缩传输
--progress 传输时实现传输过程
--password-file 密码文本的参数
-h 显示帮助
更多参数请自行google
使用rsync命令去同步
/usr/bin/rsync -azrtopg --progress --delete kingvon@172.16.15.55::tmp /opt/ --password-file=/etc/rsyncd/rsyncd.secrets
写个脚本去自动执行
vim /root/backup.sh
#!/bin/bash
/usr/bin/rsync -azrtopg --progress --delete kingvon@172.16.15.55::tmp /opt/ --password-file=/etc/rsyncd/rsyncd.secrets
chmod 755 backup.sh
crontab -e
去设置执行的时间
* 1 * * * /root/backup.sh
每天1点自动执行同步