不用 nohup、不用 sshpass!rsync 后台传输 + 断 SSH 不中断的原生玩法

平时用 rsync 传大文件、大目录,大家经常遇到几个痛点:

  • 想后台运行,关终端不中断
  • 不想装 sshpass,也懒得配免密登录
  • 希望直接输密码,就能安心下班走人
  • 最好是 Linux 原生操作,不依赖任何额外工具

今天分享一个超实用的小技巧:只用 Ctrl+Z + bg + disown,实现 rsync 后台断点续传,关闭 SSH 依然稳定传输。

一、场景说明

  • 本机:内网服务器
  • 目标机器:192.168.0.1
  • 同步目录:packages
  • 目标路径:/data/packages_/

需求:

  • rsync 增量同步、断点续传
  • 后台运行不占用终端
  • 直接输密码,不装插件
  • 关闭 SSH 终端,任务继续执行

二、完整操作步骤

1. 启动 rsync 并输入密码

bash

运行

ruby 复制代码
rsync -avP packages root@192.168.0.1:/data/packages_/.

输入密码后开始传输:

plaintext

css 复制代码
root@192.168.0.1's password:

2. 按下 Ctrl + Z 暂停任务

传输开始后按:

plaintext

复制代码
Ctrl + Z

终端输出:

plaintext

ruby 复制代码
[1]+  Stopped                 rsync -avP packages root@192.168.0.1:/data/packages_/.

3. 使用 bg 让任务后台继续运行

bash

运行

bash 复制代码
bg

输出:

plaintext

ruby 复制代码
[1]+ rsync -avP packages root@192.168.0.1:/data/packages_/. &

4. 执行 disown -h 解除终端绑定(核心)

bash

运行

bash 复制代码
disown -h

作用:

  • 让进程脱离当前 Shell
  • 关闭 SSH 不会收到挂断信号
  • 进程继续在后台稳定传输

三、验证任务是否正常运行

bash

运行

perl 复制代码
ps -ef | grep rsync

看到类似进程即正常:

plaintext

ruby 复制代码
root      12345  6789  0 10:00 pts/0    00:00:03 rsync -avP packages root@192.168.0.1:/data/packages_/.
root      12346 12345  0 10:00 pts/0    00:00:02 ssh -l root 192.168.0.1 rsync --server -vlogDtpre.iLsfxC --partial . /data/packages_/.

四、原理解析

  1. Ctrl + Z

    发送 SIGTSTP 信号,暂停前台进程并放入后台作业列表。

  2. bg

    将后台暂停的任务恢复运行,实现后台执行。

  3. disown -h

    终端退出时,系统会向子进程发送 SIGHUP 信号,默认会杀死进程。

    disown -h 让进程忽略挂断信号,变成孤儿进程由 systemd 托管,实现关终端不中断。

五、与 nohup 对比

表格

方式

优点

缺点

nohup &

适合脚本、一步到位

无法交互输密码,需 sshpass / 免密

Ctrl+Z → bg → disown

原生操作、可直接输密码、无依赖

需要手动几步操作

日常手动传大文件,disown 方式更灵活、更干净。

六、总结

想要 rsync 后台传输、断点续传、关 SSH 不中断、又不想装任何工具:

  1. 执行 rsync → 输密码开始传输
  2. Ctrl + Z 暂停
  3. bg 放入后台继续
  4. disown -h 脱壳,关终端不死

纯 Linux 原生操作,通用所有发行版,服务器传大文件必备小技巧。

相关推荐
傲文博一19 分钟前
MySQL 不开放外网端口,Mac 怎么连接?
后端
付威202321 分钟前
Rust 重写 Pi:会话启动耗时降 91%,就绪内存少 78%
后端
绝望的蛋炒饭33 分钟前
长会话的模型选型:缓存命中率如何决定真实成本
人工智能·后端·agent
用户804677180097533 分钟前
Spring MVC Controller 返回值类型全解
后端
用户1276530181434 分钟前
把客服分流、询盘清洗、多平台改写做成 3 个 HTTP 接口,纯规则引擎也能跑
后端
程序员初一36 分钟前
玩了这么多年服务器,那服务器管理工具哪个好用?
后端
用户4270192301242 分钟前
改个模型名,两个定时任务静默死了:一次定义与引用的分离事故
后端
知守观1 小时前
从 4 套 PDF 库的混战,聊聊老项目的依赖管理与“静默失败”
java·后端·设计模式
用户072367066601 小时前
基于 JavaAgent 的无侵入 Mock:让联调和链路测试不再等下游
java·后端