当前位置: 代码迷 >> 综合 >> linux运维、架构之路-rsync
  详细解决方案

linux运维、架构之路-rsync

热度:52   发布时间:2024-01-28 00:51:38.0

linux运维、架构之路-rsync

      • 1 、rsync介绍
      • 2、rsync特性
      • 3、rsync应用工作场景
      • 4、rsync数据传输方式
      • 5、rsync守护进程——服务端配置
      • 6、rsync守护进程——客户端配置
      • 4、错误总结

欢迎来到Abooo的博客

你好! 这是一个从零基础到慢慢熟练的运维工程师的博客,这些博客都是我一点一滴的经验积累和学习积累!希望帮助到你遇到的一切困难!加油吧!

1 、rsync介绍

rsync是实现全量及增量的本地或远程数据镜像同步备份的工具

rsync常用命令参数

命令参数 参数说明
-a (–archive) 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于rtopgDl
-v (–verbose) 显示输出过程,传输时的进度等信息
-z (–compress) 传输时进行压缩以提高传输效率
–exclude=/etc/hosts 指定排除不需要传输的文件信息(和tar参数一样)
–exclude-from=file 文件名所在的目录文件,可以实现排除多个文件(和tar参数一样)
–bwlimit=PATE limit I/O bandwidth;KBytes per secondlimit socket I/O bandwidth限速功能
–delete 让目标目录SRC和源目录数据DST一致,无差异同步数据

2、rsync特性

①支持拷贝特殊文件如软链接,设备等

②排除指定文件或目录同步的功能,相当于打包命令tar排除功能

③ 保持原文件或目录的权限、时间、硬链接、属主、组等属性不改变

④实现增量同步,只同步发生变化的数据,传输效率高

⑤可以使用rcp,rsh,ssh等方式来配合传输文件

⑥可以通过socket(进程方式)传输文件和数据

⑦支持匿名的认证进程模式传输,实现方便安全数据备份

3、rsync应用工作场景

①利用定时任务+rsync实现定时同步数据,主要同步的数据信息是网站内部人员使用的

②利用实时同步软件+rsync实现实时同步数据,主要同步的数据信息是网站用户上传的数据信息

4、rsync数据传输方式

①主机本地之间的数据传输(此时类似于cp命令的功能)

② 借助rcp,ssh等通道来传输数据(此时类似于scp命令的功能)

③以守护进程(socket)的方式传输数据(这个是rsync自身的重要的功能),重点掌握

5、rsync守护进程——服务端配置

1、查看系统是否安装rsync软件

rpm -qa rsync
rsync-3.0.6-12.el6.x86_64

2、rsync多模块主配置文件

cat >/etc/rsyncd.conf<<EOF
#rsync server#
#created by yanxinjiang 2017-8-1
##rsyncd.conf start##
uid = rsync
gid = rsync
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 = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
path = /backup
[nfsbackup]
path = /nfsbackup
EOF

3、创建备份目录及授权管理用户

mkdir /backup -p
chown -R rsync.rsync /backup/
useradd rsync -s /sbin/nologin -M

4、创建rsync服务端与客户端身份认证文件

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

5、启动rsync服务

[root@backup ~]# rsync --daemon
[root@backup ~]# lsof -i:873
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
rsync   31209 root    3u  IPv4 7505812      0t0  TCP *:rsync (LISTEN)
rsync   31209 root    5u  IPv6 7505813      0t0  TCP *:rsync (LISTEN)

6、rsync守护进程——客户端配置

1、创建客户端身份认证文件并授权

[root@nfs01 ~]# echo "123456" >/etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password

2、客户端测试rsync服务

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
sent 26 bytes  received 8 bytes  3.24 bytes/sec
total size is 314  speedup is 9.24

3、rsync无差异数据同步

客户端推送
[root@nfs01 data]# ls /data/
a  b  c  d  e  f  g  pull.txt
[root@nfs01 data]# rsync -avz /data --delete rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
data/
data/a
data/b
data/c服务端检查[root@backup backup]# ls /backup/data/a  b  c  d  e  f  g  pull.txt

3、客户端推送遇到的问题

错误1
[root@nfs01 ~]# 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]
错误2
[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]
错误3
[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]
错误4
[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)

4、错误总结

①密码输入错误,虚拟用户名错误

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

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

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

⑤rsync客户端密码文件中只输入密码信息即可,不要输入虚拟认证用称
⑥推送时双冒号后面为模块名backup,而不是路径/backup

⑦telnet连接rsync服务ip地址873端口,查看服务是否启动 telnet 172.16.1.41 873

⑧共享目录的属主和属组不正确,不是rsync;共享目录的权限不正确,不是755