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
文件,通过刚刚上面的指令进行备份,可以看到成功备份了一份。
log信息输出
如果需要log,增加--log-file=日志路径
命令,但还不够,刚刚上面的测试细心的可能发现并没有任何信息输出,这样会导致我们log创建了也是个空的,还需要配合--progress
命令
命令
rsync -a --delete --progress --log-file=日志路径 目标路径 备份路径
自动全量备份单份
在之前的基础上,我们还可以配合cron定时任务实现自动全量备份。
我这里为了方便测试使用每分钟同步一次
指令
crontab -e
0 * * * * rsync -a --delete --progress --log-file=日志路径 目标路径 备份路径
这里不要忘了开启cron:service crond start
自动全量备份多份
在单次备份的基础上,我们只要通过动态创建备份路径即可
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')