什么是 Rsync
Rsync 是一个开源的快速备份工具,是 Linux 和 Unix 操作系统默认安装的组件之一,可以在不同主机之间镜像同步整个目录,并支持增量备份文件传输,保持链接和权限,采用优化的同步算法,传输前执行压缩,适用于异地备份,镜像服务器等应用。
Rsync 官网地址:https:///rsync.samba.org/
配置 rsync 源服务器
在远程同步任务中,复杂发起 rsync 同步操作的客户端称为 发起端
,复杂响应来自客户端的 rsync 同步操作的服务器称为 同步源
。
通不过程中,同步源负责提供文档的原始位置,发起端应对该位置具有读取权限。
- 关闭 selinux,开通防火墙放行端口或者关闭防火墙
1 | setenforce 0 |
- 配置 /etc/rsyncd.conf 文件
1 | # cat /etc/rsyncd.conf |
- 启动 rsyncd 服务
1 | systemctl enable --now rsyncd |
- 创建 /etc/rsync.password 文件,并调整文件权限
1 | echo "rsync_backup:123456" >/etc/rsync.password |
- 查看服务监听端口
1 | netstat -anptl |grep rsync |
- 创建 rsync 需要同步的目录
1 | tree -L 2 /home/wanwu/GitHub/ |
使用 rsync 备份工具
rsync 命令的基本用法
大多数的备份程序要求制定原始位置,目标位置,rsync 命令其实跟 cp 命令相似。
rsync 命令格式
1 | 基本格式: rsync [选项] 原始位置 目标位置 |
常用备份选项
- -r: 表示递归整个目录;
- -l: 表示备份链接文件;
- -v: 显示同步过程的详细信息;
- -p: 保留文件的权限标记;
- -t: 保留文件的时间标记;
- -g: 保留文件的属组标记(仅限超级用户使用)
- -o: 保留文件的属主标记(仅限超级用户使用)
- -D: 保留设备文件及其他特殊文件
- -a: 归档模式,保留文件的权限,属性等信息,组合选项等于
-rlptgoD
; - -z: 在传输文件时进行压缩;
- -H: 保留硬链接文件;
- -A: 保留 ACL 属性信息;
- –delete: 删除目标位置有而原始位置没有的文件;
- –checksum: 根据校验和(而不是文件大小,修改时间)来决定是否跳过文件。
配置源的表示方法
执行同步任务时,rsync 命令需要指定同步源服务器中的资源位置
两种表示方法
1 | username@host::共享模块名 (两个冒号分隔形式) |
使用真实用户测试 rsync 服务
如果 ssh 端口修改了,需要加上端口。
- 命令格式: rsync -param filename -e ‘ssh -p port’ username@ip:dir_path
1 | rsync -avz 59izt.github.io '-e ssh -p 22' wanwu@192.168.200.173:~/GitHub |
关于 sshd 服务不使用默认的 22 端口,需要在用户家目录配置 ~/.ssh/config 文件,否则可能会提示连接超时
1 | Host 120.xxx.xxx.xxx |
在实际生产环境中的备份工作,通常都是重复性的,那么我们可以设置个定时任务来完成备份操作。比如每天凌晨 04:00 对服务器的 /tmp 共享模块同步,并下载到本地 /mnt/backup 目录下。通过 crond 服务来完成,这种同步过程中,我们不想输入密码,那么需要创建一个密码文件,保存 rsync_backup 用户密码。在执行同步时使用选项 –password-file=/etc/rsync.password 指定。
1 | # crontab -e |