最近系统开发完成,要做系统资料以及数据的备份。备份策略就是把正式服务器的文件和数据定时备份并同步到备份服务器上。在此记录学习使用 rsync 备份资料以及数据。
1. Rsync 是什么
Rsync 针对的对象是文件系统的数据,用于文件同步,是一款可以实现增量备份的工具。可用于:
1.1 本地文件系统上的同步备份
一般很少用,如果都在本地上的备份,直接cp就可以实现了
1.2 本地和远程的同步备份(远程 shell 方式)
利用远程shell技术,本地和远程主机建立起数据传输通道,然后可以实现本地到远程或者远程到本地的文件数据同步备份功能
1.3 本地和远程的同步备份(rsync service)
这是在服务端启动一个rsync服务,监听一个端口,由客户端和服务端利用socket建立起数据传输的通道
2. Rsync 安装
# Debian
$ sudo apt-get install rsync
# Red Hat
$ sudo yum install rsync
# Arch Linux
$ sudo pacman -S rsync
3. Rsync 基本用法
rsync 命令参数
-a :归档模式,表示递归传输并保持文件属性。等同于"-rtopgDl"
-v :显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。
-z :传输时进行压缩提高效率。
-e :指定所要使用的远程shell程序,默认为ssh。
--exclude :指定排除规则来排除不需要传输的文件。
--delete :如果存在目标主机有,而源主机没有的文件,目标主机的文件会被删掉,即目标主机向源主机看齐,保证一致性。
-b --backup :对目标上已存在的文件做一个备份,备份的文件名后默认使用"~"做后缀。
--backup-dir :指定备份文件的保存路径。不指定时默认和待备份文件保存在同一目录下。
--port :连接daemon时使用的端口号,默认为873端口。
--password-file :daemon模式时的密码文件,可以从中读取密码实现非交互式。注意,这不是远程shell认证的密码,而是rsync模块认证的密码
--link-dest 参数用来指定同步时的基准目录
其他更多的用法,可以使用命令: rsync --help 查看 本地和远程的同步备份,举例:
#由于早期 rsync 不使用 SSH 协议,需要用`-e`参数指定协议,后来才改的。所以,下面`-e ssh`可以省略
rsync -avzr -e "ssh -p 22" local/path 10.86.***.**:/home/**/file/
4. Rsync 增量备份
rsync 的最大特点就是它可以完成增量备份;
# 增量备份
rsync -a --delete --link-dest /compare/path /source/path /target/path
# 远程增量备份
rsync -a --delete --link-dest remote_username@remote_ip:compare/path source/path remote_username@remote_ip:/target/path
--link-dest
参数指定基准目录/compare/path
,然后源目录/source/path
跟基准目录进行比较,找出变动的文件,将它们拷贝到目标目录/target/path
参考: www.ruanyifeng.com/blog/2020/0… www.jianshu.com/p/e19d3af28…