scp -r langchain_dev.zip root@1.2.2.5:/home/
/usr/bin/rsync -avP --partial --progress root@1.1.1.1:/home/langchain_dev.zip .
scp 命令本身不支持断点续传功能。
如果在传输大文件时网络中断或连接超时,scp 会终止传输,且已传输的部分不会被保留,下次必须从头开始重新传输整个文件。这是因为 scp 基于 SSH 协议设计,其传输机制是"原子式"的,没有记录偏移量、校验块或续传标记的能力。
✅ 推荐替代方案:使用 rsync 实现断点续传
rsync 是更强大的文件同步工具,通过 SSH 传输时可完全替代 scp,并天然支持断点续传和增量传输:
rsync -avP --partial --progress /本地文件路径 用户@主机:/远程路径
-a:归档模式,保持文件属性。-v:显示详细信息。-P:等价于--partial --progress,保留已传部分并显示进度。--append或--append-verify:适用于大文件,从文件末尾追加,确保数据一致性。
💡 小技巧:可以为常用命令设置别名,例如:
alias scpr="rsync -avP --rsh=ssh"之后即可用
scpr命令实现"安全续传版的 scp"。
🔧 其他支持断点续传的工具
| 工具 | 说明 |
|---|---|
**sftp** |
OpenSSH 自带,支持 reput(上传续传)和 reget(下载续传)命令。 |
**lftp** |
支持 SFTP/FTP/HTTP 等协议,使用 -c 参数即可启用断点续传。 |
| **可视化工具(如 WinSCP)** | 提供图形界面和稳定传输,适合频繁操作。 |
远程主机也需要安装 rsync 命令,才能成功执行远程同步操作。
原因说明:
在使用 rsync 进行远程文件同步时(例如:rsync -avz user@remote:/path/to/source/ /local/destination/),rsync 会通过 SSH 协议连接到远程主机,并在远程主机上执行 rsync 命令来处理文件传输。因此,远程主机必须安装并运行 rsync 服务或至少具备 rsync 可执行文件。
如何确认远程主机是否已安装 rsync?
你可以通过以下方式检查远程主机是否安装了 rsync:
ssh root@192.168.109.110 "rsync --version"
如果输出类似如下信息,则表示已安装:
rsync version 3.1.3 protocol version 31 Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others.
如果提示 command not found,则说明远程主机未安装 rsync,需要先安装。
安装 rsync 的方法(以常见 Linux 发行版为例):
Ubuntu/Debian 系统:
sudo apt-get update sudo apt-get install rsync
CentOS/RHEL 系统:
sudo yum install rsync
Arch Linux 系统:
sudo pacman -S rsync
总结:
要实现远程 rsync 同步,本地和远程主机都必须安装 rsync ,否则会报错如 rsync: command not found 或连接被意外关闭等。