综合架构学习笔记-2---rsync-实战

综合架构学习笔记-2---rsync-实战

实战1

rsync守护进程部署

测试环境--虚拟机环境

ip10.0.1.0

网关10.0.1.2

子网掩码 255.255.255.0

步骤

服务端




第一步:下载安装软件
	 [root@localhost ~]# yum install -y rsync
	 
	 
	 第二步:编写配置文件 把原来的配置文件删除
	 
	 [root@localhost ~]# vim /etc/rsyncd.conf
	 uid=rsync                               
     gid=rsync                               
     port=873                                
     fake super = yes                        
     use chroot = no                         
     max connections= 200                    
     timeout = 300                           
     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 =             
     auth users = rsync_backup               
     secrets file = /etc/rsync.password      
     [backup]                                
     comment =" welcome to RSYNC backup"
     path = /backup 

启动配置rsyncd
     [root@master ~]# systemctl restart rsyncd




配置注解:

     uid=rsync       用户                        
     gid=rsync          组                     
     port=873             端口                   
     fake super = yes        虚拟机用户 伪装管理员                
     use chroot = no                         安全
     max connections= 200                    同时200个客户端连接
     timeout = 300                           超时300秒
     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 =                        
     auth users = rsync_backup            认证用户-rsync——backup   
     secrets file = /etc/rsync.password      密码信息
     [backup]                                指定备份目录
     comment =" welcome to RSYNC backup"
     path = /backup 



     uid=rsync                               
     gid=rsync                               
     port=873                                
     fake super = yes                        
     use chroot = no                         
     max connections= 200                    
     timeout = 300                           
     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.1.0/24             
     #hosts deny =             
     auth users = rsync_backup               
     secrets file = /etc/rsync.password      
     [backup]                                
     comment =" welcome to RSYNC backup"
     path = /backup               




















这是一个用于rsync守护进程(rsync服务器)的配置文件,通常命名为`rsyncd.conf`。让我们逐项解析所指定的选项:

- `uid=rsync`:设置rsync服务运行时的用户ID为rsync。
- `gid=rsync`:设置rsync服务运行时的组ID为rsync。
- `port=873`:rsync服务监听的端口号为873。
- `fake super = yes`:允许rsync模拟超级用户权限进行文件同步操作(在chroot环境之外)。
- `use chroot = no`:不使用chroot环境,即不对rsync客户端进行目录级别的隔离。
- `max connections= 200`:最大同时连接数为200个。
- `timeout = 300`:设定超时时间为300秒(5分钟),超过这个时间无数据传输将断开连接。
- `pid file = /var/run/rsyncd.pid`:rsync服务的进程ID文件位置。
- `lock file = /var/run/rsync.lock`:rsync服务的锁文件位置。
- `log file = /var/log/rsyncd.log`:rsync服务的日志记录文件路径。
- `ignore errors`:忽略某些可能发生的错误继续运行。
- `read only = false`:允许对共享模块进行读写操作,而非只读。
- `list = false`:禁止列出所有可用的共享模块。
- `hosts allow = 10.0.0.0/24`:仅允许来自10.0.0.0网段的IP地址访问rsync服务。
- `#hosts deny =`:这一行被注释掉了,但若取消注释则可用来设置拒绝哪些IP或IP段访问。
- `auth users = rsync_backup`:定义了授权用户列表,此处仅有rsync_backup一个用户有权连接。
- `secrets file = /etc/rsync.password`:密码文件位置,其中存储了授权用户的登录密码。
- `[backup]`:定义了一个名为"backup"的共享模块。
- `comment =" welcome to RSYNC backup"`:给"backup"模块添加描述信息。
- `path = /backup`:设置"backup"模块对应的本地同步路径为"/backup"。








     
  
     
     第三步:创建rsync服务虚拟用户
	 [root@localhost ~]# useradd rsync -M -s /sbin/nologin
	 第四步:创建rsync服务的认证密码文件并修改权限
	 [root@localhost ~]# echo "rsync_backup:123456">/etc/rsync.password
	 [root@localhost ~]# chmod 600 /etc/rsync.password 
	 第五步:创建备份文件所需的目录并修改用户文件的属主和属组
	 [root@localhost ~]# mkdir /backup
	 [root@localhost ~]# chown rsync.rsync /backup -R
	 	 
	 	 
	 	 命令注解
	 `chown rsync.rsync /backup -R` 这条命令是用来更改目录 `/backup` 及其子目录下所有文件和目录的所有权的。

- `chown` 是 Linux 系统中更改文件或目录所有权的命令。
- `rsync.rsync` 表示新的所有者和所属组,即将所有者改为用户 `rsync`,所属组改为组 `rsync`。
- `/backup` 是需要更改所有权的目录路径。
- `-R` 或 `--recursive` 参数表示递归地处理目录下的所有文件和子目录,也就是说不仅更改 `/backup` 目录本身的所有权,也更改其下所有层级的文件和目录的所有权。

这条命令的作用是确保 `/backup` 目录及其内容的所有权都属于 `rsync` 用户和 `rsync` 组,这与上面的 rsyncd 配置相呼应,因为在 rsync 服务配置中指定了以 `rsync` 用户和组运行服务。这样可以保证 rsync 服务有正确的权限来访问和管理 `/backup` 目录中的文件。



	 
	 
     第六步:启动备份rsync服务
	 [root@localhost ~]# systemctl start rsyncd
     [root@localhost ~]# systemctl enable rsyncd
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     客户端配置
     
     
     客户端部署(网站服务器):rsync  配置文件不用改默认即可
     第一步:下载安装软件
	 [root@localhost ~]# yum install -y rsync
	 第二步:创建一个密码文件
	 [root@localhost ~]# echo "123456" >/etc/rsync.password
	 [root@localhost ~]# chmod 600 /etc/rsync.password
     第三步:测试用免交互方式同步文件
	 [root@localhost ~]# rsync -avz /oldboy/* rsync_backup@10.0.0.25::backup --password-file=/etc/rsync.password
	 
	 
	 
	 
	 自己的实现演示
	[root@node ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5      lb01
172.16.1.6      lb02
172.16.1.7      web01
172.16.1.8      web02
172.16.1.9      web03
172.16.1.51     db01
172.16.1.31     nfs01
172.16.1.41     backup
172.16.1.61     m01
那就备份这个文件吧 

一次备份需要输入密码
[root@node ~]# rsync -avz /etc/hosts rsync_backup@10.0.1.134::backup 
Password: 
sending incremental file list
hosts

sent 215 bytes  received 43 bytes  46.91 bytes/sec
total size is 352  speedup is 1.36


直接制定密码文件 前提是你必须有账户和密码,我们前面的配置文件已经有账户和密码了 只不过这是虚拟账户而已
	 [root@node ~]# rsync -avz /etc/hosts rsync_backup@10.0.1.134::backup --password-file=/etc/rsync.password
sending incremental file list
hosts

sent 215 bytes  received 43 bytes  103.20 bytes/sec
total size is 352  speedup is 1.36
	 
	 
	 备份结果
	 
	 
	 [root@master backup]# ls
hosts
[root@master backup]# cat hosts 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5      lb01
172.16.1.6      lb02
172.16.1.7      web01
172.16.1.8      web02
172.16.1.9      web03
172.16.1.51     db01
172.16.1.31     nfs01
172.16.1.41     backup
172.16.1.61     m01





	
    
    
	 如果出现报错 
	 1.检查防火墙
	 2.检查selinux
	 3.检查rsync配置文件是否出错 例如ip段是否符合
	 4.命令是否出错
	 5.rsync服务是否正确运行
	 
	 实验过程中如果发现还是无法正确备份  你在测试过程中可以重来 ,但是生产环境中一定要仔细仔细再仔细 认真认真再认真 
	 事先准备 梳理流程 比什么都重要
	 
	 
	 
	
	
    ps:
	 也可以使用服务器的root用户备份一下看一下
	 rsync -avz /oldboy/* root@10.0.0.25:/backup
	 rsync:依然是使用的rsync命令行工具。

-avz:保持不变,仍代表归档模式(保留文件属性和递归同步)、详细输出模式(显示同步过程详情)以及压缩模式(传输时启用压缩节省带宽)。

/oldboy/*:源目录及通配符,表示从本地机器的 /oldboy 目录下同步所有的文件和子目录。

root@10.0.0.25:/backup:目标地址改为了用户名(root)+ 主机地址(10.0.0.25)+ 目标路径(/backup),表明将同步到远程主机10.0.0.25上root用户家目录下的/backup目录


	 
	 
	 
	 
	 
	 命令注解
	 
	 rsync -avz /oldboy/* rsync_backup@10.0.0.25::backup --password-file=/etc/rsync.password
	 
	 
-avz:选项参数组合,含义如下:

-a:归档模式,保留源文件的所有属性(如权限、时间戳等)并递归同步目录。
-v:详细输出模式,显示详细的同步过程信息。
-z:压缩模式,在传输过程中启用压缩以减少带宽占用。
/oldboy/*:源目录及通配符,表示从本地机器的 /oldboy 目录下同步所有的文件和子目录。

rsync_backup@10.0.0.25::backup:目标地址,包含了用户名(rsync_backup)、主机地址(10.0.0.25)以及rsync模块名(backup)。这意味着将数据同步到远程主机10.0.0.25上rsync服务的"backup"模块。

--password-file=/etc/rsync.password:指定密码文件,rsync将在连接远程服务器时从该文件中读取密码,从而实现自动身份验证。

综上所述,此命令会把本地机器 /oldboy 目录下的所有文件和子目录,按照详细、递归且压缩的方式同步至远程rsync服务器(IP地址为10.0.0.25)上预设的“backup”共享模块,并通过密码文件进行身份验证
	 
	 
	 
	 
	 
	 
	 
     
     
     
     
     
     
     
     
     

rsync故障案例与排错 ------可作为工作经验

1.1 rsync客户端执行rsync命令错误:
   客户端的错误现象:  

   [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::/backup

   ERROR: The remote path must start with a module name not a /

   rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

   异常问题解决:

   rsync命令语法理解错误,::/backup是错误的语法,应该为::backup(rsync模块)



1.2 @ERROR: auth failed on module oldboy
   客户端的错误现象:

   [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

   Password:

   @ERROR: auth failed on module backup

   rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

   异常问题解决:

   1. 密码真的输入错误,用户名真的错误

   2. secrets file = /etc/rsync.password指定的密码文件和实际密码文件名称不一致

   3. /etc/rsync.password文件权限不是600

   4. rsync_backup:123456密码配置文件后面注意不要有空格

      echo "rsync_backup:123456" >>/etc/rsync.password

    rsync客户端密码文件中只输入密码信息即可,不要输入虚拟认证用户名称



1.3  Unknown module 'backup'  
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

@ERROR: Unknown module 'backup'

rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

   异常问题解决:

   1. /etc/rsyncd.conf配置文件模块名称书写错误



1.4  Permission denied
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

Password:

sending incremental file list

hosts

rsync: mkstemp ".hosts.5z3AOA" (in backup) failed: Permission denied (13)



sent 196 bytes  received 27 bytes  63.71 bytes/sec

total size is 349  speedup is 1.57

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]  

   异常问题解决:

   1. 共享目录的属主和属组不正确,不是rsync

   2. 共享目录的权限不正确,不是755



1.5  chdir failed   
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

Password:

@ERROR: chdir failed

rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

    异常问题解决:

    1. 备份存储目录没有建立

    2. 建立的备份存储目录和配置文件定义不一致

       说明:如果没有备份存储目录



1.6 invalid uid rsync
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

Password:

@ERROR: invalid uid rsync

rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

    异常问题解决:

       rsync服务对应rsync虚拟用户不存在了



1.7  客户端已经配置了密码文件,但免秘钥登录方式,依旧需要输入密码
   password file must not be other-accessible

[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

password file must not be other-accessible

continuing without password file

Password:

sending incremental file list



sent 26 bytes  received 8 bytes  5.23 bytes/sec

total size is 349  speedup is 10.26

    异常问题解决:

       rsync客户端的秘钥文件也必须是600权限
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
个人总结

 如果出现报错 
	 1.检查防火墙
	 2.检查selinux
	 3.检查rsync配置文件是否出错 例如ip段是否符合 
	 4.命令是否出错
	 5.rsync服务是否正确运行
	 6.检查文件权限是否给足
	 
	 
	 实验过程中如果发现还是无法正确备份  你在测试过程中可以重来 ,但是生产环境中一定要仔细仔细再仔细 认真认真再认真 
	 事先准备 梳理流程 比什么都重要
	 
	 

实战2

排除文件备份实战

需求1-----备份/data 排除1.txt
 rsync -avz /data --exclude /data/1.txt rsync_backup@10.0.1.134::backup  --password-file=/etc/rsync.password

--exclude /data/1.txt: 排除同步指定的文件,这里是/data/1.txt,该文件不会被同步到远程服务器。



[root@node data]# rsync -avz /data --exclude /data/1.txt rsync_backup@10.0.1.134::backup  --password-file=/etc/rsync.password
sending incremental file list

sent 221 bytes  received 25 bytes  98.40 bytes/sec
total size is 0  speedup is 0.00

需求2 排除一个目录


rsync -avz /data --exclude /data/test rsync_backup@10.0.1.134::backup  --password-file=/etc/rsync.password


--exclude /data/test: 排除同步指定的文件夹,这里是/data/test,该文件不会被同步到远程服务器。





[root@node data]# rsync -avz /data --exclude /data/test rsync_backup@10.0.1.134::backup  --password-file=/etc/rsync.password
sending incremental file list
data/
data/1.txt
data/10.txt
data/2.txt
data/3.txt
data/4.txt
data/5.txt
data/6.txt
data/7.txt
data/8.txt
data/9.txt

sent 604 bytes  received 218 bytes  328.80 bytes/sec
total size is 0  speedup is 0.00

重点流程回顾

服务端部署(备份服务器):rsync
     第一步:下载安装软件
	 [root@localhost ~]# yum install -y rsync
	 第二步:编写配置文件
	 [root@localhost ~]# vim /etc/rsyncd.conf
	 uid=rsync                               
     gid=rsync                               
     port=873                                
     fake super = yes                        
     use chroot = no                         
     max connections= 200                    
     timeout = 300                           
     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 =             
     auth users = rsync_backup               
     secrets file = /etc/rsync.password      
     [backup]                                
     comment =" welcome to RSYNC backup"
     path = /backup                          
     第三步:创建rsync服务虚拟用户
	 [root@localhost ~]# useradd rsync -M -s /sbin/nologin
	 第四步:创建rsync服务的认证密码文件并修改权限
	 [root@localhost ~]# echo "rsync_backup:123456">/etc/rsync.password
	 [root@localhost ~]# chmod 600 /etc/rsync.password 
	 第五步:创建备份文件所需的目录并修改用户文件的属主和属组
	 [root@localhost ~]# mkdir /backup
	 [root@localhost ~]# chown rsync.rsync /backup -R
     第六步:启动备份rsync服务
	 [root@localhost ~]# systemctl start rsyncd
     [root@localhost ~]# systemctl enable rsyncd


客户端部署(网站服务器):rsync  配置文件不用改默认即可
     第一步:下载安装软件
	 [root@localhost ~]# yum install -y rsync
	 第二步:创建一个密码文件
	 [root@localhost ~]# echo "123456" >/etc/rsync.password
	 [root@localhost ~]# chmod 600 /etc/rsync.password
     第三步:测试用免交互方式同步文件
	 [root@localhost ~]# rsync -avz /oldboy/* rsync_backup@10.0.0.25::backup --password-file=/etc/rsync.password
	 
	 
	 
	 
posted @ 2024-03-17 20:58  三思博客  阅读(11)  评论(0编辑  收藏  举报