rsync数据备份

rsync算是项目中经常使用的文件同步工具, 其实大部分情况下, 用rsync做数据备份可能会更好一点, 增量备份, 节省空间, 同步快

本地备份

rsync -av src dest

-a: 递归, 并同步元信息(比如修改时间、权限等)
-v: 将结果输出到终端
src: 源目录
dest: 目标目录

可以看到和cp -r用法类似

远程备份

将本地同步到远程

rsync -av src user@remote_host:/dest

将远程同步到本地

rsync -av user@remote_host:/src dest

这里不举例了, 用法类似scp -r,

如果需要指定端口号可以使用参数-e

rsync -av 'ssh -p 12722' user@remote_host:/src dest

实际使用场景

通常我们备份的文件比较重要, 想要先调试一下, 确认结果无误后再去备份, 这里可以使用参数-n

rsync -av -n src dest

可以看到文件并没有被同步, 只是显示可能同步的文件日志

有的时候, 我们不想备份一些文件, 比如.git, node_modules, 可以使用--exclude

rsync -av --exclude '.git' src dest

可以看到net.d文件夹没有被同步, 如果想忽略多个文件或文件夹, 可以配置多个--exclude或者使用{}

rsync -av --exclude 'dir01' --exclude 'dir02' src dest
rsync -av --exclude {'dir01', 'dir02'} src dest

备份文件时, 如果源文件夹有文件删除操作, 备份文件默认是不会不做同步删除操作, 如果我们想保持两者一致性, 可以使用--delete

可以看到, 当增加--delete参数时, 备份文件也会同步删除

注意点

  1. 如果使用远程同步方式, 注意服务端和客户端都需要安装rsync
  2. rsync默认是通过ssh方式同步文件的, 注意开启相关的端口(默认22)
  3. 建议通过crond组件, 配置定时任务, 从而达到备份的目的
展示评论