一、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