rsync 远程同步
-
rsync(Remote Sync,远程同步) 是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
-
在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文件的原始位置,发起端应对该位置具有读取权限。
配置rsync源服务器
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/rsyncd.conf
----------------------------------------------------------------------------------------------------
uid = root
gid = root
use chroot = yes
address = 192.168.13.10
port = 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.13.0/24
dont compress = *.gz *.tgz *.zip *.z *.Z
[wwwroot]
path = /var/www/html
comment= Document Root of www.wang.com
read only = yes
auth only = backuper
secrets file =/etc/rsyncd_users.db
----------------------------------------------------------------------------------------------------
vim /etc/rsyncd_users.db
----------------------------------------------------------------------------------------------------
backuper:abc123
----------------------------------------------------------------------------------------------------
[root@localhost ~]# chmod 600 /etc/rsyncd_users.db
[root@localhost ~]# vim /etc/rsyncd_users.db
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# chmod +r /var/www/html/
[root@localhost ~]# ls -ld /var/www/html/
[root@localhost ~]# netstat -anpt | grep rsync
####关闭服务
[root@localhost ~]# kill $(cat /var/run/rsyncd.pid)
[root@localhost ~]# rm -rf /var/run/rsyncd.pid
基本格式
基本格式:rsync [选项] 原始位置 目标位置
选项 | 作用 |
---|---|
-r | 递归模式,包含目录及子目录中的所有文件。 |
-l | 对于符号链接文件仍然复制为符号链接文件。 |
-v | 显示同步过程的详细(verbose)信息。 |
-z | 在传输文件时进行压缩(compress)。 |
-a | 归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgoD”。 |
-p | 保留文件的权限标记。 |
-t | 保留文件的时间标记。 |
-g | 保留文件的属组标记(仅超级用户使用)。 |
-o | 保留文件的属主标记(仅超级用户使用)。 |
-H | 保留硬连接文件。 |
-A | 保留 ACL 属性信息。 |
-D | 保留设备文件及其他特殊文件。 |
–delete | 删除目标位置有而原始位置没有的文件。 |
–checksum | 根据校验和(而不是文件大小、修改时间)来决定是否跳过文件。 |
将指定的资源下载到本地/opt 目录下进行备份。
格式一:
rsync -avz backuper@192.168.13.10::wwwroot /opt/ #密码abc123
格式二:
rsync -avz rsync://backuper@192.168.13.10/wwwroot /opt/
免交互配置
[root@localhost ~]# echo "abc123" > /etc/server.pass
[root@localhost ~]# chmod 600 /etc/server.pass
[root@localhost ~]# crontab -e
crontab: installing new crontab
----------------------------------------------------------------------------------------------------
30 22 * * * /usr/bin/rsync -az --delete
--password-file=/etc/server.pass backuper@192.168.13.10::wwwroot /opt/
###为了在同步过程中不用输入密码,需要创建一个密码文件,保存 backuper 用户的密码,如 /etc/server.pass。在执行 rsync 同步时使用选项 “--password-file=/etc/server.pass” 指定即可。
[root@localhost ~]# systemctl restart crond
[root@localhost ~]# systemctl enable crond
使用rsync来实现快速删除大量文件
假如要在linux下删除大量文件,比如100万、1000万,像/usr/local/nginx/proxy_temp的nginx缓存等,那么rm -rf * 可能就不好使了,因为要等待很长一段时间。在这种情况下我们可以使用rsync来巧妙处理。rsync实际用的是替换原理。
[root@localhost ~]# mkdir /home/blank
[root@localhost ~]# rsync --delete-before -a -H -v --progress --stats /home/blank/ /usr/local/nginx/proxy_temp
参数 | 说明 |
---|---|
–delete-before | 接收者在传输进行删除操作 |
-a | 归档模式,表示以递归方式传输文件,并保持所有文件属性 |
-H | 保持硬连接的文件 |
-v | 详细输出模式 |
–progress | 在传输时显示传输过程 |
–stats | 给出某些文件的传输状态 |