linux rsync定时备份(增量&全量),快速实践

Posted by JJput on 06-27,2023

rsync常用命令

命令 描述
-a 全量数据
-v 显示具体的过程信息
-z 文件在压缩后进行传输,一般用在不同服务器之间传输
–delete 删除目标目录有而源目录中没有的文件
–exclude 排除某些文件或目录–exclude=“*.txt” 排除所有的.txt文件
–exclude-from 从文件中读取排除规则,一行一条规则,以";“或”#"开头的行为注释行
–include 指定必须包含的文件或目录,通常和-exclude结合使用
–link-dest 指定一个目录作为基准目录,源目录与基准目录比较,只有更新的内容才备份到目标目录中,其它的内容只是在目标目录中生成一个链接到基准目录的硬链接。该选项主要用于保留不同时间点的备份
-n 模拟执行,和-v一起使用,只输出执行信息但并不真的执行操作
-u 跳过在目标目录中修改时间比源目录中要新的文件
–progress 显示传输进度信息
–log-file 将输出信息记录到文件中

备份

通过简单的指令即可实现备份效果

rsync -a 目标路径 备份路径

如果只是简单的实现从A备份到B的话,加上--delete,这样就可以保证两边数据一致性了。

rsync -a --delete 目标路径 备份路径

路径请优先使用绝对路径
目标路径可以是目录也可以是文件
备份路径只能是目录

下面对其指令进行详细讲解和演示

测试

我现在在test目录下分别创建了要备份的目录source和备份存放的目录backup,同时创建了test.txt文件,通过刚刚上面的指令进行备份,可以看到成功备份了一份。
image-1687849407861

log信息输出

如果需要log,增加--log-file=日志路径命令,但还不够,刚刚上面的测试细心的可能发现并没有任何信息输出,这样会导致我们log创建了也是个空的,还需要配合--progress命令
image-1687849795901

命令

rsync -a --delete --progress --log-file=日志路径 目标路径 备份路径

自动全量备份单份

在之前的基础上,我们还可以配合cron定时任务实现自动全量备份。
我这里为了方便测试使用每分钟同步一次
指令

crontab -e
0 * * * * rsync -a --delete --progress --log-file=日志路径 目标路径 备份路径

这里不要忘了开启cron:service crond start

自动全量备份多份

在单次备份的基础上,我们只要通过动态创建备份路径即可
image-1687850871590

rsync -a --delete --progress --log-file=/root/test/backup/logs/$(date +'%Y-%m-%d_%Hh%Mm').log /root/test/source/ /root/test/backup/back-$(date +'%Y-%m-%d_%H-%M')

我们可以看到成功的备份了文件并动态根据时间创建了备份目录,下面只要将指令加入cron即可,但这里要注意,cron中%是特殊符号需要\进行转译

0 * * * * rsync -a --delete --progress --log-file=/root/test/backup/logs/$(date +'\%Y-\%m-\%d_\%Hh\%Mm').log /root/test/source/ /root/test/backup/back-$(date +'\%Y-\%m-\%d_\%H-\%M')