rsync远程传输
# 同一个区域网下增量拷贝 -- rsync
rsync既是一个命令,又是一个服务,支持全量备份和增量备份,不支持差异备份,可以实时备份(inotyfi+rsync),也可以定时定点备份(cron + rsync)
监听端口: 873
rsync运行模式:C/S,客户端/服务端
系统 所有用户 都可以使用rsync的 作为客户端或者服务端
**服务端**:我们把备份的文件放在谁磁盘上,谁就是服务端,(客户端推,服务端拉)
备份文件的格式:2020-05-06_web01_etc.tar.gz
企业采用客户端 推 的方式减少服务端的负载,备份到服务器,#再隐藏到云服务器异地备份
-a :
-v :显示传输的过程
-z :传输的时候使用gzip 压缩,传输完成立即 解压
-e 'ssh -p 80' :指定传输的端口
--delete #让目标目录和源目录数据保持一致,可以实现数据的清空
--password-file=xxx #使用密码文件(虚拟用户 bck:密码)
export RSYNC_PASSWORD=123 (export使命令行的密码立即生效 )
------------------- -a 包含 ------------------
-r #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t #保持文件时间信息
-o #保持文件属主信息
-p #保持文件权限
-g #保持文件属组信息
-l #保留软连接
-D #保持设备文件信息
--------------------- 不包含 -------------------------
-L #保留软连接指向的目标文件(默认只拷贝链接文件)
-e #使用的信道协议,指定替代ssh的shell程序,'ssh -p 80' :指定传输的端口
--exclude=PATTERN #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--bwlimit=100 #限速传输(限制磁盘的I/O)
--partial #断点续传
--delete #让目标目录和源目录数据保持一致
--password-file=xxx #指定 密码文件
# rsync 的传输模式:
(/etc是指/etc目录,/etc/是指 /etc目录下所有文件或目录)
本地方式---------------------------------------------相当于cp命令
## 拷贝文件
[root@backup ~]# rsync /root/3 /usr/local/src/
## 拷贝目录
[root@backup ~]# rsync -a /etc /usr/local/src/
远程方式------------------------------相当于scp命令,存在普通用户权限不足的情况,存在ssh不安全的情况
# 推:rsync [选项...] 本地文件或目录 用户名@主机IP:路径
rsync -avz /etc root@10.0.0.41:/root # 推
# 拉:rsync [选项...] 用户名@主机IP:路径 本地文件或目录
rsync -avz root@10.0.0.41:/root /etc
同步中科大镜像站,rsync rsync://rsync.mirrors.ustc.edu.cn/repo/ .
守护进程方式-------------------------------------------服务,#不存在普通用户权限不足的情况,不存在不安全的情况(使用22号端口), 守护进程方式只能客户端 推或拉
推:rsrnc -avz 文件或目录 用户@IP或域名::模块
拉:rsync -avz 用户@IP或域名::模块 文件或目录
#服务端(小心注释)-----------------------------------备份的文件放在哪,谁就是服务端
1.[root@web01 ~]# yum install -y rsync
[root@web01 ~]# rpm -q rsync
rsync-3.1.2-10.el7.x86_64 #包名,版本,发布次数,适用系统,架构
[root@web01 ~]# rpm -qc rsync
/etc/rsyncd.conf #配置文件
/etc/sysconfig/rsyncd #从配置文件
[root@web01 ~]# rpm -ql rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd
/usr/bin/rsync #启动程序存放路径,在环境变量里面,可以tab,可以不加绝对路径执行
/usr/lib/systemd/system/rsyncd.service #可以使用systemctl来管理
/usr/lib/systemd/system/rsyncd.socket
[root@web01 ~]# cat /etc/passwd|grep rsync #查看rsync用户身份是否存在
[root@web01 ~]# id rsync || echo 不存在
id: rsync: no such user
2.修改配置文件(一般来说是以.conf 或 .cnf 或 .cfg结尾),
[root@web01 ~]# vim /etc/rsyncd.conf #先删除,再拷贝
#################################### 服务相关配置 ###########################
uid = www
#指定rsync进程启动的用户(打工的)---------useradd
gid = www
#指定rsync进程启动的组
port = 873
#指定rsync使用的监听端口(默认873端口,可以改)
fake super = yes
#无需让rsync以root身份运行,允许接收文件的 完整属性(属主属组不变)
use chroot = no
#禁锢指定的目录(只能推到指定的目录,不紧固的话随便推)
max connections = 200
#最大连接数(同时连接的主机数,减少服务端负载)
timeout = 600
#超时时间
ignore errors
#忽略报错
read only = false
#不只读(可读可写)
list = false
#不允许别人查看模块名
#################################### 命令相关配置 ###########################
auth users = bck
#传输文件的用户(相当于密码,没有实际意义)---------
secrets file = /etc/rsync.passwd
#传输用户文件的密码文件------------vim或echo/600
log file = /var/log/rsyncd.log
#日志文件,使用了rsync之后才会生成
[backupmk]
#模块名,可以随便改,小心大写字母,空格,数字,多模块对应多主机(随便推?)
comment = welcome to oldboyedu backup!
#注释(废物)
path = /backup
#备份的目录-------mkdir/权限属主属组
3.根据配置文件的内容,创建出来需要的用户,目录,密码文件
[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M
[root@web01 ~]# mkdir /backup
[root@web01 ~]# ll /backup
drwxr-xr-x 2 root root 6 May 6 20:40 backup
[root@web01 ~]# chown www.www /backup/
[root@web01 ~]# ll /backup/ -d
drwxr-xr-x 2 www www 6 May 6 20:40 /backup/
[root@web01 ~]# vim /etc/rsync.passwd
backupmk:123
或
[root@web01 ~]# echo backupmk:123 >/etc/rsync.passwd (虚拟用户名:密码,必须要做)
或
esport RSYNC_PASSWORD=123
#修改传输文件的密码文件的权限
[root@web01 ~]# chmod 600 /etc/rsync.passwd
[root@web01 ~]# ll -d /etc/rsync.passwd
-rw------- 1 root root 18 May 6 20:44 /etc/rsync.passwd
4.启动服务,并且加入开机自启
[root@web01 ~]# systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
[root@web01 ~]# systemctl start rsyncd
[root@web01 ~]# systemctl status rsyncd
[root@web01 ~]# netstat -lntup|grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1483/rsync
tcp6 0 0 :::873 :::* LISTEN 1483/rsync
[root@web01 ~]# ps -ef|grep rsync
root 1483 1 0 20:49 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
root 1493 1117 0 20:51 pts/0 00:00:00 grep --color=auto rsync
#客户端 -------------------------------------------------
rsync客户端不需要修改配置文件,有的服务需要修改客户端配置文件
#方法一
1.安装rsync
[root@backup ~]# yum install -y rsync
2.客户端需要创建一个密码文件
[root@backup ~]# vim /etc/rsync.pass
123
或
[root@backup ~]# echo 123 > /etc/rsync.passwd
3.修改密码文件的权限为600
[root@backup ~]# chmod 600 /etc/rsync.pass # 必须
[root@web01 ~]# systemctl enable rsyncd
[root@web01 ~]# systemctl start rsyncd
[root@web01 ~]# systemctl status rsyncd
4.从客户端往服务端推送重要备份文件
rsync [-avz] 源文件 bck@10.0.0.41::[模块]
rsync -avz /etc rsync_bck@10.0.0.41::backupmk --password-file=/etc/rsync.pass
# 方式二:脚本中使用,强烈推荐方式
[root@nfs01 ~]# export RSYNC_PASSWORD=zls
客户端 拉取Rsync
服务端 backupmk 模块数据至本地客户端的 /123目录
[root@nfs01 ~]# export RSYNC_PASSWORD=123 # 临时,密码可以是字母,立即生效
[root@nfs01 ~]# vim /etc/profile.d/rsync.ps.sh #永久,需要重新加载(bash)
export RSYNC_PASSWORD=123
或
[root@nfs01 ~]# echo export RSYNC_PASSWORD=123 >/etc/profile.d/rsync.ps.sh #bash
[root@nfs01 ~]# rsync -avz /etc rsync_backup@172.16.1.41::backup
Rsync
实现数据 无差异 同步 (两边一样,有空目录就完了),可以利用 --delete 实现删除的目的
一定要看好 推拉的目标
推的时候,无论全量备份还是增量备份,是推一次同名覆盖一次
拉的时候,无论全量备份还是增量备份,是拉一次同名覆盖一次,除非拉到别的目录
#拉取远端数据:远端与本地保持一致,远端没有本地有会被删除, 造成客户端数据丢失
[root@nfs01 ~]# export RSYNC_PASSWORD=123
[root@nfs01 ~]# rsync -avz --delete bck@172.16.1.41::backupmk /data/
#推送数据至远端:本地与远端保持一致, 本地没有远端会被删除, 造成服务器端数据丢失
[root@nfs01 ~]# export RSYNC_PASSWORD=zls
[root@nfs01 ~]# rsync -avz --delete /data/ rsync_backup@172.16.1.41::backupmk
# 如果推的目录是空目录的话,服务端也被清空了,如果客户端某个重要文件被误删除了,服务端里的相应的数据也被删除了
#企业差异备份和无差异备份可能混合使用
[root@nfs01 ~]# rsync -avz /data/ rsync_backup@172.16.1.41::backupmkbackupmk
[root@nfs01 ~]# rsync -avz --delete /data/ rsync_backup@172.16.1.41::backupmk
Rsync
的Limit限速(限制磁盘吞吐量 I/O)
#企业案例: 某DBA使用rsync拉取备份数据时,由于文件过大导致内部交换机带宽被沾满,导致用户的请求无法响应
[root@nfs01 ~]# export RSYNC_PASSWORD=zls
[root@nfs01 ~]# rsync -avz --bwlimit=1 rsync_backup@172.16.1.41::backup/ /data/
rsync总结
服务端
1.安装rsync
[root@backup ~]# yum install -y rsync
2.修改配置文件
[root@backup ~]# vim /etc/rsyncd.conf
3.创建www用户
[root@backup ~]# groupadd www -g 666
[root@backup ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M
4.创建密码文件
[root@backup ~]# echo 'bck:123' > /etc/rsync.passwd
或 export RSYNC_PASSWD=123
5.给密码文件授权600,不让其他用户看到用户名和密码(选做)
[root@backup ~]# chmod 600 /etc/rsync.passwd
6.创建备份目录
[root@backup ~]# mkdir /backup
7.授权备份目录的属组和属组为www
[root@backup ~]# chown www.www /backup/
8.启动服务并加入开机自启
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd
9.检查端口
[root@backup ~]# netstat -lntup|grep 873
10.检查进程
[root@backup ~]# ps -ef|grep [r]sync
rsync客户端
# 安装rsync服务
[root@web01 ~]# yum install -y rsync
[root@web01 ~]# exprot RSYNC_PASSWD=123
# 设置开机自启动
[root@web01 ~]# systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
[root@web01 ~]# systemctl start rsyncd
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步