实验:Rsync镜像同步,可以通过rsync、crontab配合ssh定时备份重要数据到另一台服务器

椰子ya Linux 2020-09-06

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      //添加
PREV
实验:ssh免密码登录
NEXT
建立回收站机制delete