Linux两台服务器之间传文件,最常用的方法是使用scp、rsync或sftp命令,其中scp适合一次性传输,rsync适合增量同步大目录,sftp则提供交互式安全传输。下面按不同使用场景,拆解每种方法的具体操作和适用条件。
linux服务器之间传文件用什么命令最快
这个问题没有绝对答案,取决于文件大小、网络环境和同步需求,如果只是传一个配置文件,scp是首选;如果是几十GB的数据库备份,rsync断点续传的优势就体现出来了;要是需要对方主动拉取文件,sftp更符合交互习惯。
scp命令:单次传输的稳妥选择
scp基于SSH协议,传输过程加密,语法和cp命令高度相似,基本用法如下:
scp /本地路径/文件.txt root@目标服务器IP:/目标路径/
从目标服务器拉取文件则反过来:
scp root@目标服务器IP:/远程路径/文件.txt /本地路径/
常用参数包括:
-P指定SSH端口,默认22-r递归复制整个目录-C启用压缩,传输文本文件时速度提升明显-l限制带宽,避免占满业务流量
业内专家指出,scp在传输单个大文件时表现稳定,但它的短板在于不支持断点续传,一旦网络中断就得从头再来,传输超过5GB的文件时,多数运维人员会考虑rsync。
rsync命令:大目录同步的可靠方案
rsync的核心理念是增量同步,只传输差异部分,配合SSH使用同样具备加密能力,常用命令格式:
rsync -avz --progress /本地目录/ root@目标服务器IP:/目标目录/
参数说明:
-a归档模式,保留权限、时间戳等属性-v显示详细输出-z传输时压缩--progress显示进度条--partial保留部分传输的文件,配合断点续传
rsync真正擅长的是持续同步场景,比如每天凌晨备份网站数据,第一次全量传输后,后续每次只传新增和修改的文件,节省的时间和带宽相当可观,行业共识认为,rsync是服务器间数据镜像的标准工具。
sftp命令:交互式传输的灵活选项
sftp同样是SSH家族成员,适合需要先查看对方目录再决定传哪些文件的场景,登录后就是一套类FTP的命令行界面:
sftp root@目标服务器IP
进入后常用操作:
ls查看远程目录lcd切换本地目录put 文件名上传文件get 文件名下载文件mput .tar.gz批量上传bye退出连接
sftp的交互特性让它更适合临时查看、选择性传输的场景,但脚本化批量操作不如前两个方便。
scp和rsync哪个更适合linux服务器间同步
这是运维圈讨论较多的话题,两者各有明确的使用边界。
| 对比维度 | scp | rsync |
|---|---|---|
| 传输机制 | 全量复制 | 增量同步 |
| 断点续传 | 不支持 | 支持 |
| 大目录效率 | 较低 | 高 |
| 加密方式 | SSH加密 | SSH加密 |
| 适用场景 | 小文件、临时传输 | 定期备份、目录镜像 |
| 资源占用 | 较低 | 较高,需扫描文件差异 |
实际工作中,一次性的文件分发用scp,定时任务的增量备份用rsync,如果服务器数量较多,还可以考虑搭配rsync daemon模式,但这需要额外配置,安全性要求也更高。
linux怎么从服务器下载文件到本地电脑
这个需求在管理云服务器时经常遇到,从服务器下载到本地,本质和服务器间传输是一样的,只是把目标地址换成个人电脑,Windows用户可以用WinSCP这类图形化工具,Mac和Linux用户直接终端操作:
scp root@服务器IP:/远程路径/文件.zip /本地下载目录/
下载整个目录时加上-r参数,同时建议用-C开启压缩,文本类文件能明显减少传输时间。
两台linux服务器之间传大文件用什么命令
传输超大文件(比如超过20GB)时,除了rsync,还需要考虑网络稳定性和传输效率的平衡。
分卷压缩后传输
先把大文件压缩并分卷,再配合rsync传输,能有效降低单次传输失败的风险:
tar czf - 大文件 | split -b 2G - 分卷前缀_ rsync -avz 分卷前缀_ root@目标服务器IP:/目标目录/
在目标服务器上合并解压:
cat 分卷前缀_ | tar xzf -
这个方法在跨机房传输时比较实用,分卷大小可以根据实际带宽调整。
利用nc命令实现裸传
如果两台服务器都在内网,且对加密没有强制要求,nc(netcat)的裸传速度比scp快不少,接收方先监听端口:
nc -l -p 8888 > 接收的文件.tar.gz
发送方推送数据:
nc 目标服务器IP 8888 < 发送的文件.tar.gz
这种方式没有加密开销,也没有校验机制,适合内网临时传大文件,但对网络安全要求较高的环境不建议使用。
linux服务器间传输文件的常见问题
传输中断后如何续传
scp中断后没有补救办法,只能重新传输,rsync则天然支持续传,重新执行相同命令即可,它会自动跳过已完成的文件块,如果配合--append-verify参数,还能校验已传输部分的一致性。
传输权限不足怎么办
提示Permission denied时,先检查目标目录的写权限,使用
chmod或chown调整,另外确认SSH登录用户的权限范围,用root账号通常能绕过大部分权限限制,但出于安全考虑,建议创建专用传输账号,仅授予目标目录的读写权限。
如何提升跨地域服务器的传输速度
国内服务器之间传输,受跨运营商网络影响较大,速度不稳定是常见现象,可以尝试以下措施:
- 使用
-C参数开启压缩,减少实际传输数据量 - 用
--bwlimit限制带宽,避免挤占业务流量 - 将传输任务安排在业务低峰期,配合crontab定时执行
- 考虑使用中转服务器,绕过直连线路的拥堵节点
对于长期、高频的跨地域同步需求,使用云服务商提供的对象存储作为中转,往往是更稳定、性价比更高的方案。
linux两台服务器传文件相关问答
scp传输目录时提示not a regular file怎么解决
这个报错通常是因为漏加了-r参数,scp复制目录必须显式指定递归选项,正确写法是scp -r /本地目录/ root@目标IP:/目标路径/,另外注意源路径末尾的斜杠会影响复制行为,带斜杠表示复制目录内容,不带斜杠则复制目录本身。
rsync同步后如何确保两边文件完全一致
使用-a参数保留文件属性,加上--delete删除目标端多余文件,组合命令为rsync -avz --delete /源目录/ root@目标IP:/目标目录/,执行后再跑一次同样的命令,如果没有输出任何文件列表,说明两边已经完全同步,定期用--checksum参数做全量校验也是可行方案,但会消耗较多计算资源。
服务器间传输文件是否需要开放额外端口
scp、rsync(走SSH通道)和sftp都只需要开放SSH端口(默认22),无需额外规则,如果使用rsync daemon模式,则需要开放873端口,生产环境建议修改SSH默认端口并配置密钥登录,减少暴力破解风险。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/764210.html





