rsync -avzP --no-perms 本地路径 root@目标ip:/home/www/sc/upload/
1、screen(推荐)
# 新建会话
screen -S rsync_sync
# 再执行你的rsync命令
rsync -avzP xxx root@ip:/xxx
# 后台脱离:Ctrl+A 松开,再按 D
# 之后可以直接关窗口,传输继续跑
# 回来查看:screen -r rsync_sync
2、nohup(简单,看不到实时进度)
nohup rsync -avzP 源 目标 > rsync.log 2>&1 &
# 日志看进度:tail -f rsync.log
重点提醒
-
不加 screen /nohup,ssh 窗口断开(关闭、断网)→ rsync 立刻终止
-
rsync 本身支持断点续传,后续重跑同一条命令,会增量接着传
nohup rsync -avzP --no-perms 本地路径 root@目标ip:/home/www/sc/upload/
绕过ssh
### 原因
这个系统没有自带 `rsyncd.service` 单元文件,直接用原生命令启动daemon就行,不用systemctl。
先确认你的 `/etc/rsyncd.conf` 已经写好:
```ini
[scupload]
path = /data/sc/upload
read only = no
uid = root
gid = root
hosts allow = 172.16.0.0/16
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
```
### 1、直接启动rsync daemon
```bash
rsync --daemon
```
> 指定配置文件写法(如果路径不对时用):
> `rsync --daemon --config=/etc/rsyncd.conf`
### 2、验证是否监听873端口
```bash
ss -tlnp | grep 873
```
看到 `rsync` 监听 0.0.0.0:873 就成功了。
### 3、防火墙放行873端口
```bash
firewall-cmd --add-port=873/tcp --permanent
firewall-cmd --reload
```
### 4、开机自启(可选,防止重启后失效)
```bash
echo "rsync --daemon" >> /etc/rc.local
chmod +x /etc/rc.local
```
### 5、回到老客户端(OpenSSH5.3)执行同步
```bash
nohup rsync -avzP --no-perms /cqvie/sc/upload/ 172.16.9.21::scupload &
```
> 格式说明:`IP::模块名`,模块名就是配置里 `[scupload]`
### 6、停止rsync daemon(以后需要关闭时)
```bash
kill $(cat /var/run/rsyncd.pid)
```
---
### 补充排查
如果启动报错:
```bash
# 前台运行看报错,方便调试
rsync --daemon --no-detach
```
这个模式会直接打印错误,不会后台跑。
> 这个方案彻底绕开ssh算法不兼容的大坑,不用再折腾OpenSSH9.9的ssh配置。
先执行 `rsync --daemon`,然后看端口监听。