远程数据传输
pull拉取 语法 rsync option user@host:src dest 命令 可选参数 用户名@主机ip:源路径 本地路径 push推送 语法 rsync option src user@host:dest 命令 参数 本地路径 用户@主机ip:目的路径
1.把远程主机的/etc/hosts文件,拷贝到本地/tmp [root@rsync01 ~]# rsync -av -e 'ssh -p 22' [email protected]:/etc/hosts /tmp/ The authenticity of host '10.0.0.40 (10.0.0.40)' can't be established. ECDSA key fingerprint is SHA256:+MXyMm05tl3oyI4urvkWgWG4T30tuY/Irm9nYll9ero. ECDSA key fingerprint is MD5:e4:f4:b4:81:bd:f3:f8:4d:61:a2:cd:2c:e7:e0:bd:c4. Are you sure you want to continue connecting (yes/no)? y Please type 'yes' or 'no': y Please type 'yes' or 'no': yes Warning: Permanently added '10.0.0.40' (ECDSA) to the list of known hosts. [email protected]'s password: receiving incremental file list hosts sent 43 bytes received 243 bytes 21.19 bytes/sec total size is 158 speedup is 0.55 #配置免密登录后,即可不需要输入密码 --参数 -e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步,若是默认22,可以不写该参数 -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性 -v, --verbose 详细模式输出
守护进程传输模式
【拉取语法】
1.拉取模式语法,推荐使用,看清楚参数的符号! rsync 参数 user@host::src (源地址) dest(目标地址) 2.拉取第二种 rsync 参数 rsync://user@host:port/src dest
【推送语法】
1.推送语法 rsync 参数 src user@host::dest 2.推送第二种 rsync 参数 src rsync://user@host:port/dest
想要通过守护传输模式进行复制传输数据,还得额外部署Rsync Daemon服务才行
守护进程传输模式实战
【准备三台linux服务器】
1.准备三台linux机器 10.0.0.30 Nginx web服务器 10.0.0.40 Rsync备份存储服务器 10.0.0.50 NFS存储服务器
【环境部署,Rsync备份服务器】
1.准备linux系统环境 [root@rsync-backup ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@rsync-backup ~]# uname -r #查看内核版本 3.10.0-1160.el7.x86_64 [root@rsync-backup ~]# uname -m #查看内核架构 x86_64 2.是否安装了rsync软件,若是未安装可以yum安装即可 [root@rsync-backup ~]# rpm -qa rsync rsync-3.1.2-12.el7_9.x86_64
【配置需求】
在Rsync备份机器上以rsync守护进程的方式部署Rsync服务,使得所有Rsync节点的客户端主机,可以把本地数据通过rsync命令备份数据到BACKUP服务器上。
【备份架构拓扑图】
以Rsync守护进程模式部署架构,并且以远程数据同步方式由客户端节点向服务器端推送数据
Rsync服务端部署
步骤 | 举例 | Rsync步骤 |
---|---|---|
1 | 确认是否有个房间可以当做仓库 | 确认Rsync程序是否安装 |
2 | 装修改造房间为仓库 | 修改Rsync配置文件信息 |
3 | 确认仓库的管理员 | 创建负责Rsync服务的虚拟用户 |
4 | 仓库中有柜子可以存储,管理员可以打开柜子 | 创建Rsync服务备份数据的目录,进行对虚拟用户授权 |
5 | 仓库要提升安全,上个锁 | 配置Rsync服务安全相关密钥,且对密钥文件授权600 |
6 | 确认仓库可以用了 | 启动Rsync服务,让其可以工作 |
7 | 确定仓库每天开门工作 | 设置Rsync服务开机启动 |
【第一步,修改rsyncd.conf配置文件】
Rsync守护进程配置在BACKUP服务器上
1.修改配置文件,默认是 /etc/rsyncd.conf uid = rsync gid = rsync fake super = yes use chroot = no max connections = 200 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors read only = false list = false hosts allow = 10.0.0.0/24 hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file = /etc/rsync.password [backup] comment = This is rsync backup! path = /backup/
【第二步,配置数据备份的目录】
1.根据rsyncd.conf中定义的目录,创建目录、用户 [root@rsync-backup ~]# useradd -s /sbin/nologin -M rsync [root@rsync-backup ~]# mkdir /backup [root@rsync-backup ~]# chown -R rsync.rsync /backup/ 2.配置用于Rsync复制的账户、密码、文件权限,在Rsync备份服务端创建 [root@rsync-backup ~]# echo "rsync_backup:123456" > /etc/rsync.password [root@rsync-backup ~]# chmod 600 /etc/rsync.password ##检查密码文件,权限 [root@rsync-backup ~]# ll /etc/rsync.password -rw-------. 1 root root 20 May 17 11:55 /etc/rsync.password [root@rsync-backup ~]# cat /etc/rsync.password rsync_backup:123456 3.启动rsync服务,开机自启 [root@rsync-backup ~]# systemctl start rsyncd [root@rsync-backup ~]# systemctl enable rsyncd Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service. [root@rsync-backup ~]# systemctl status rsyncd 4.检查Rsync服务进程、端口 [root@rsync-backup ~]# netstat -tunlp|grep rsync tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1329/rsync tcp6 0 0 :::873 :::* LISTEN 1329/rsync [root@rsync-backup ~]# ps -ef |grep rsync|grep -v grep root 1329 1 0 11:58 ? 00:00:00 /usr/bin/rsync --daemon --no-detach [root@rsync-backup ~]# ps -aux |grep rsync|grep -v grep root 1329 0.0 0.1 114852 1140 ? Ss 11:58 0:00 /usr/bin/rsync --daemon --no-detach
Rsync客户端(nfs01)配置
1.确认rsync命令是否有 2.创建和rsync服务端连接的账户密码文件,且授权 3.注意Rsync客户端要和服务端的配置区别开
配置过程
1.安装rsync [root@nfs ~]# rpm -qa rsync rsync-3.1.2-12.el7_9.x86_64 2.创建密码文件,和服务端相同 [root@nfs ~]# echo "123456" > /etc/rsync.password 3.授权文件 [root@nfs ~]# chmod 600 /etc/rsync.password 4.验证文件密码、权限 [root@nfs ~]# cat /etc/rsync.password 123456 [root@nfs ~]# ll /etc/rsync.password -rw-------. 1 root root 7 May 21 09:41 /etc/rsync.password 5.配置特殊变量RSYNC_PASSWORD,可以替代密码文件 [root@nfs ~]# export RSYNC_PASSWORD=123456 #临时生效 [root@nfs ~]# echo "export RSYNC_PASSWORD=123456" >> /etc/bashrc #永久生效 6.验证密码变量 [root@nfs ~]# tail -1 /etc/bashrc export RSYNC_PASSWORD=123456 [root@nfs ~]# echo $RSYNC_PASSWORD 123456
至此Rsync守护进程方式,服务端、客户端都配置完毕
测试数据同步
拉取:服务端同步文件给客户端
报错一:failed to connect 连接失败,检查服务器防火墙是否关闭
rsync: failed to connect to 10.0.0.40 (10.0.0.40): No route to host (113) rsync error: error in socket IO (code 10) at clientserver.c(126) [Receiver=3.1.2]
报错二:权限不足,检查服务器selinux是否关闭,setenforce 0关闭
receiving incremental file list rsync: failed to read xattr user.rsync.%stat for "." (in backup): Permission denied (13) rsync: opendir "." (in backup) failed: Permission denied (13)
报错三:
[root@nfs ~]# rsync -avzP [email protected]::backup/ /opt/ --password-file=/etc/rsync.password @ERROR: auth failed on module backup rsync error: error starting client-server protocol (code 5) at main.c(1656) [Receiver=3.1.2] ##检查/var/log/rsyncd.log日志,发现可能是连接了不知道的虚拟用户 2023/05/21 10:38:45 [1609] params.c:Parameter() - Ignoring badly formed line in config file: ignore errors 2023/05/21 10:38:45 [1609] name lookup failed for 10.0.0.50: Name or service not known 2023/05/21 10:38:45 [1609] connect from UNKNOWN (10.0.0.50) 2023/05/21 10:38:45 [1609] auth failed on module backup from UNKNOWN (10.0.0.50) for rsync-backup: no matching rule
连接成功
1.同步到服务端Rsync指定的目录(/bakcup)下,拉取到客户端的/opt/目录 [root@nfs ~]# rsync -avzP [email protected]::backup /opt/ --password-file=/etc/rsync.password receiving incremental file list ./ hhhhhhhh.txt 0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=1/3) sent 46 bytes received 156 bytes 404.00 bytes/sec total size is 0 speedup is 0.00 2.也可以直接使用密码变量,进行同步
rsync -avzP [email protected]::backup /opt/ --password-file=/etc/rsync.password -a 保持文件原有属性 -v 显示传输细节情况 -z 对传输数据压缩传输 -P 显示文件传输的进度信息 /opt/ 要拉取的本地目录,注意backup/ 表示拉取该目录下内容 [email protected]::backup ##验证rsync服务端参数 grep "auth user" /etc/rsyncd.conf auth users = rsync_backup 同步数据的虚拟认证用户 ##backup是服务器配置文件中定义的模块名 @10.0.0.40::backup 要推送的目的地ip地址以及模块名称 --password-file=/etc/rsync.password #指定密码文件
推送:客户端同步文件给服务端
1.从客户端/opt目录下同步文件到服务端rsync指定的目录/backup下 [root@nfs ~]# rsync -avzP /opt/ [email protected]::backup --password-file=/etc/rsync.password sending incremental file list ./ test_rsync.txt 0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/4) sent 172 bytes received 38 bytes 420.00 bytes/sec total size is 0 speedup is 0.00
标签:Rsync,数据,rsync,etc,复制,root,password,backup From: https://www.cnblogs.com/junwured/p/17410796.html