不用 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 原生操作,通用所有发行版,服务器传大文件必备小技巧。

相关推荐
青柠代码录2 小时前
【SpringBoot】过滤器
后端
元宝骑士2 小时前
MySQL联表查询优化实战:小表驱动大表的联合索引设计
后端·mysql
用户69371750013843 小时前
Android 开发,别只钻技术一亩三分地,也该学点“广度”了
android·前端·后端
gogogo出发喽3 小时前
使用Pear Admin Flask
后端·python·flask
hhhhhaaa3 小时前
SpringBoot 自定义参数解析器实现请求统一封装实践
后端
何陋轩3 小时前
Java线程池从入门到精通:框架自带 vs 自定义,我该怎么选?
后端
货拉拉技术4 小时前
数据质量告警平台的建设与应用实践
后端
m0_694845574 小时前
UVdesk部署教程:企业级帮助台系统实践
服务器·开发语言·后端·golang·github
woniu_maggie4 小时前
SAP FICO 分割评估_sap凭证分割配置
后端