rsync是一个非常强大的文件同步和传输工具,广泛用于备份和镜像。它特别适用于局域网和广域网的数据传输,因为它能够减少网络传输的数据量,只同步那些有变化的文件。

env

  • centos7.9
  • rsync3.1.2

问题

//复制提示异常
[root@c7-100 tmp.QY3nX9uJ5F]# rsync -avz /etc/hosts [email protected]::data
Password: 
sending incremental file list
rsync: read error: Connection reset by peer (104)
rsync error: error in socket IO (code 10) at io.c(792) [sender=3.1.2]

//观察服务正常
[root@c7-100 tmp.QY3nX9uJ5F]# systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
   Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2024-07-17 12:34:16 CST; 4min 20s ago
 Main PID: 1603 (rsync)
   CGroup: /system.slice/rsyncd.service
           └─1603 /usr/bin/rsync --daemon --no-detach

Jul 17 12:34:16 c7-100 systemd[1]: Stopped fast remote file copy program daemon.
Jul 17 12:34:16 c7-100 systemd[1]: Started fast remote file copy program daemon.

//观察服务日志
[root@c7-100 tmp.QY3nX9uJ5F]# ll /var/log/rsyncd.log
-rw-r--r-- 1 root root 3989 Jul 17 12:38 /var/log/rsyncd.log
[root@c7-100 tmp.QY3nX9uJ5F]# tail -F /var/log/rsyncd.log
2024/07/17 12:35:31 [1610] connect from UNKNOWN (172.24.20.101)
2024/07/17 12:35:34 [1610] rsync to data/ from rsync_backup@UNKNOWN (172.24.20.101)
2024/07/17 12:35:34 [1610] ERROR: module is read only   //很关键错误
2024/07/17 12:35:34 [1610] rsync error: syntax or usage error (code 1) at main.c(995) [Receiver=3.1.2]
2024/07/17 12:38:20 [1625] params.c:Parameter() - Ignoring badly formed line in config file: ignore errors
2024/07/17 12:38:20 [1625] name lookup failed for 172.24.20.101: Name or service not known
2024/07/17 12:38:20 [1625] connect from UNKNOWN (172.24.20.101)
2024/07/17 12:38:22 [1625] rsync to data/ from rsync_backup@UNKNOWN (172.24.20.101)
2024/07/17 12:38:22 [1625] ERROR: module is read only
2024/07/17 12:38:22 [1625] rsync error: syntax or usage error (code 1) at main.c(995) [Receiver=3.1.2]

解决

1.查看rsync配置
[root@c7-100 etc]# cat rsyncd.conf 
fake super =yes
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
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
[data]
        comment = data
        path = /data


2.新增read only = no(开启data可读写权限)
[root@c7-100 etc]# cat rsyncd.conf 
fake super =yes
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
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
read only = no
[data]
        comment = data
        path = /data
        #read only = no

3.检查设置/data目录权限
chown -R rsync: /data

4.重启rsyncd
systemctl restart rsyncd

5.验证
[root@c7-100 ~]# rsync -avz /etc/hosts [email protected]::data
Password: 
sending incremental file list
hosts

sent 170 bytes  received 49 bytes  87.60 bytes/sec
total size is 196  speedup is 0.89