Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,所以传输时间降低相对很多。
rsync语法
[root@liukai ~]#rsync [-avrlptgoD] [-e ssh] [user@host:/dir] [/local/path]
选项和参数
-v:查看模式,可以列出更多的信息,包括镜像的文件名等
-q:与-v相反,安静模式,略过正常信息,仅显示错误信息
-r:递归复制。可以针对目录来处理。
-u:仅更新,若文件较新,则保留新文件不会覆盖
-l:复制链接文件的属性,而非链接的目标源文件内容
-p:复制时,连同属性permission一并复制
-g:保存源文件的属组
-o:保存源文件的属主
-D:保存源文件的设备属性device
-t:保存源文件的时间参数
-I:忽略更新时间属性,文件对比会比较快速
-z:在数据传输时,加上压缩参数
-e:使用的协议,例如使用ssh通道,则是-e ssh
-a:相当于-rlptgoD,所以比较常用
rsync的三种传输方式
1、在本机直接运行,用法如cp命令一样,如
rsync /root/shiyan /root/shiyan2 //将shiyan中的内容备份到shiyan2中
2、通过rsh或ssh的信道在server\client之间进行数据传输备份,如
rsync -av /root -e ssh root@39.105.28.110:/root/shiyan
//将本机的/root备份到root@39.105.28.110的/root/shiyan下
rsync -av -e ssh root@39.105.28.110:/root /root/shiyan
//将root@39.105.28.110的/root被分到本机的/root/shiyan下
3、直接通过人rsync提供的服务daemon传输,需要rsync启动873 port
①必须在serer端启动rsync
②必须编辑/etc/rsync.conf配置文件
③必须设置定义Client端的连接密码
rsync -av user@hostname::/dir/path /local/path
案例:定时将服务器39.105.28.110中/root备份到本机的/root/beifen中,反之亦可。
1、需要配置ssh免密登录,参照上一篇文件
2、编写脚本
vim rsync.sh
#!/bin/bash
localdir="/root/beifen"
sourcedir="/root"
sourceip="root@39.105.28.110"
name="$(date +%Y%m%d)"
mkdir ${localdir}
for dir in ${sourcedir}
do
rsync -av -e ssh ${sourceip}:${sourcedir} ${localdir}
done
tar -cvf $name.tar ${localdir}
:wq
配置crontab进行计划任务
crontab
vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
0 0 * * * root /root/beifen.sh //添加