一、rsync简介
- 工具简介: rsync是一个开源的快速备份工具,可以在不同主机间镜像同步整个,目录树,支持增量备份,保持链接和权限,采用优化的同步算法,传输前执行压缩,使用预异地备份,镜像服务器等应用
- 相关:
(1)rsync是一款快速增量备份工具
(2)Remote Sync,远程同步
(3)支持本地复制,或者与其他SSH、rsync主机同步
(4)rsync是Linux系统默认安装的基本组件之一
(5)官方网站:http://rsync.samba.org
- 服务器身份区分:
发起端: 负责发起rsync同步操作的客户机(对同步源的文档位置要有读取权限)
同步源: 负责去响应来自客户端rsync同步操作的服务器(负责提供文档的原始位置)
二、使用rysnc工具(进行同步备份)
- 本地备份:
类似与cp命令
举例: rsync /etc/fstab /opt (将本地文件/etc/fstab同步到/opt目录下) - 基本语法: rsync 选项 源位置 目标位置
- 常用选项:
-a :归档模式;保留文件权限、属性等信息,相当于组合选项“-r|ptgoD”
-v :显示同步的详细过程
-H :保留硬链接文件
-A :保留ACL属性信息
-z :传输时进行压缩
--delete :删除目标位置有,而原始位置没有的文件
--checksum :根据校验和来决定是否跳过文件
常用同步命令:
rsync -avz 共享用户名@共享服务器::共享模块名 要同步到的目录名
三、案例
服务器名称 | ip地址 | 扮演角色 |
---|---|---|
rsync1 | 192.168.100.11 | 同步源 |
rsync2 | 192.168.100.12 | 发起端 |
要求: 将服务器rsync1的/var/www/html目录,用备份账户AAA备份到服务器rsync2上面
(1)服务器rsync1的配置
******安装httpd,准备/var/www/html目录
[root@rsync1 ~]# mount /dev/cdrom /media/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@rsync1 ~]# yum -y install httpd (使用yum安装httpd)
。。。。。。
完毕!
[root@rsync1 ~]# echo "aaaaaaaaaaaaaa" > /var/www/html/index.html (在指定文件夹例写入一个新的引导文件)
******建立/etc/rsyncd.conf配置文件
[root@rsync1 ~]# cat <<a>> /etc/rsyncd.conf
(因为/etc/rsyncd.conf中全都是以 # 号开头的注释行,所有直接追加内容即可)
> use chroot = yes (禁锢在源目录)
> address = 192.168.100.11 (监听地址,本机地址)
> port = 873 (监听端口)
> log file = /var/log/rsyncd.log (日志文件)
> pid file = /var/run/rsyncd.pid (pid进程文件)
> hosts allow = 192.168.100.0/24 (允许访问的客户端地址)
> [aaa] (共享模块名)
> path = /var/www/html (需要同步的实际路径,也就是可以同步的目录)
> comment = rsync (描述信息,随便写)
> read only = yes (只读)
> dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 (同步时不在压缩的文件类型)
> auth users = AAA (授权同步的账户)
> secrets file = /etc/rsync_users.db (账户所在的数据文件)
> a
******创建备份账户数据文件
[root@rsync1 ~]# echo "AAA:123.com" > /etc/rsync_users.db(写入账户AAA,密码为123.com)
[root@rsync1 ~]# chmod 600 /etc/rsync_users.db (对数据文件进行权限保护)
******启动rsync服务程序
[root@rsync1 ~]# rsync --daemon (启动)
[root@rsync1 ~]# netstat -anpt | grep rsync (查看rsync服务监听状态,发现成功启动)
tcp 0 0 192.168.100.11:873 0.0.0.0:* LISTEN 1311/rsync
(2)发起端的配置
******实现将rsync1上的/etc/www/html目录中的内容同步到rsync2上的root目录下
[root@rsync2 ~]# rsync -avz AAA@192.168.100.11::aaa /root (AAA是共享账户,aaa是共享模块名,/root是指同步到root目录下)
或者rsync -avz rsync://AAA@192.168.100.11/aaa /root (都得输入密码,效果一样的)
Password: (按照提示输入密码)
receiving incremental file list
./
index.html
sent 46 bytes received 117 bytes 65.20 bytes/sec
total size is 15 speedup is 0.09
[root@rsync2 ~]# ll (发现已经成功同步到root目录下)
总用量 8
-rw-------. 1 root root 1263 10月 8 17:23 anaconda-ks.cfg
-rw-r--r-- 1 root root 15 12月 21 17:59 index.html
至此rsync远程同步完成!!!!
四、扩展(定时备份)
- 要求: 生产环境中需要每天的22:30分对服务器目录做一次同步
(结合crond服务实现)
- 步骤
******前置工作
[root@rsync2 ~]# echo "123.com" > pass (编写一个存放AAA密码的文件)
[root@rsync2 ~]# chmod 600 pass (降低文件权限)
[root@rsync2 ~]# mkdir /beifen (创建一个备份目录)
[root@rsync2 ~]# crontab -e (使用crond工具写入备份命令)
30 22 * * * /usr/bin/rsync -az --delete --password-file=/root/pass AAA@192.168.100.11::aaa /beifen
~
保存退出
[root@rsync2 ~]# systemctl restart crond (重启crond服务)
[root@rsync2 ~]# systemctl enable crond (设置为开机自启)
[root@rsync2 ~]# date -s "2020-12-21 22:29" (利用date命令修改时间)
2020年 12月 21日 星期一 22:29:00 CST
[root@rsync2 ~]# date (查看当前时间,等待到22:30)
2020年 12月 21日 星期一 22:29:02 CST
[root@rsync2 ~]# date (时间到了之后,查看创建的备份目录)
2020年 12月 21日 星期一 22:30:02 CST
[root@rsync2 ~]# ll /beifen/ (发现成功备份)
总用量 4
-rw-r--r-- 1 root root 15 12月 21 17:59 index.html