在Linux系统中,上传文件到另一台服务器最直接的方法是通过scp、rsync或sftp命令,这三种方式覆盖了从简单复制到增量同步的不同需求,掌握了它们就能应对绝大多数传输场景。
linux服务器之间传输文件命令:scp与rsync实战对比
scp命令基本语法与常用参数
scp(Secure Copy)基于SSH协议,是Linux系统中最基础的文件传输命令,它的语法结构和cp命令类似,但需要指定远程主机地址,基本格式为:scp [选项] 本地文件 远程用户@远程IP:远程路径
例如将本地/home/test.tar.gz上传到168.1.100服务器的/data目录下:scp /home/test.tar.gz root@192.168.1.100:/data/
常用参数包括:
-P:指定远程SSH端口(大写P,默认22)-r:递归复制整个目录-C:启用压缩,加快传输速度-l:限制带宽,例如-l 1000表示限制为1000Kbit/s
如果你需要上传整个目录,加上-r即可:scp -r /local_folder/ root@192.168.1.100:/remote_folder/
rsync命令增量同步优势
与scp不同,rsync支持增量传输,只同步差异部分,特别适合大文件或频繁更新的场景,它的基本语法类似:rsync [选项] 本地文件 远程用户@远程IP:远程路径
例如同步本地目录到远程:rsync -avz /local_folder/ root@192.168.1.100:/remote_folder/
关键参数说明:
-a:归档模式,保留权限、时间戳等属性:显示详细输出-v
-z:传输时压缩数据--progress:显示进度条--delete:删除远程端多余文件,保持两边完全一致
业内专家指出,在需要频繁备份或同步大量文件时,rsync的效率远高于scp,因为首次传输后后续只传变化部分。
两者对比表格
| 特性 | scp | rsync |
|---|---|---|
| 传输方式 | 全量复制 | 增量同步 |
| 压缩支持 | 需手动-C | 默认-z |
| 断点续传 | 不支持 | 支持(–partial) |
| 速度表现 | 适合小文件单次传输 | 大文件/多次传输明显更快 |
| 安全性 | 基于SSH加密 | 同样基于SSH |
行业共识认为,对于日常单次上传,scp已经足够;但如果你需要定期同步目录或上传大型文件,rsync是更优选择。
linux怎么上传文件到另一台服务器上:sftp交互操作详解
sftp命令的交互与批量场景
sftp(Secure File Transfer Protocol)也是基于SSH,但它提供交互式会话,类似FTP的操作方式,适合需要浏览、切换目录后再上传的场景,连接远程服务器:sftp root@192.168.1.100
进入交互环境后,常用命令:
ls:列出远程目录cd:切换远程目录lcd:切换本地目录put:上传文件,如put localfile.txtput -r:上传整个目录get:下载文件exit:退出
先切换到远程目标目录,再用put上传:
sftp> cd /data
sftp> put /home/testfile.txt
如果你需要上传多个文件,可以使用mput,但sftp本身不支持通配符批量上传,替代方案是使用put配合循环脚本,或者直接用scp/rcync。
sftp与scp的适用场景区别
- sftp适合需要交互式操作、不确定远程路径时使用
- scp适合一次性、已知路径的快速上传
- 两者都支持非标准端口,通过
-oPort=端口指定
linux上传文件到服务器sftp命令在实际运维中常用于临时文件传输,因为它允许你像在本地一样浏览远程目录结构。
不同场景下如何选择上传方式
上传单个小文件
直接使用scp,命令简洁,无需额外参数。scp ~/readme.txt user@server:/home/user/
上传整个目录且需要保留权限
使用rsync的-avz参数,既能保留属性又能压缩传输。rsync -avz /project/ user@server:/backup/project/
在受限网络环境或需要断点续传
rsync支持--partial保留部分传输文件,断网后重新执行会自动续传,scp则没有这个功能,一旦中断必须重头开始。
需要交互式浏览远程目录
sftp是最佳选择,可以cd、ls后再上传,适合临时查找路径。
sftp user@server sftp> ls /data sftp> cd /data/2026/ sftp> put /local/report.pdf
上传大文件(超过1GB)
较大比例的运维人员选择rsync,因为它的增量特性可以节省大量时间,如果网络不稳定,还可以加上--partial --progress实时查看进度。rsync -avz --partial --progress bigfile.iso user@server:/data/
Q&A:linux上传文件到服务器常见问题
上传时提示”Permission denied”怎么办?
权限拒绝通常是因为远程目录没有写入权限,或者SSH密钥认证失败,检查远程目录的权限:ls -ld /remote/path,确保你对那个目录有写权限,如果使用密钥,确保本地的公钥已添加到远程服务器的~/.ssh/authorized_keys中,且权限为600。
如何指定非默认端口上传文件?
scp使用大写-P,rsync和sftp通过-e选项指定SSH参数。
- scp:
scp -P 2222 file user@host:/path - rsync:
rsync -avz -e "ssh -p 2222" file user@host:/path - sftp:
sftp -oPort=2222 user@host
上传大文件时如何加快速度?
启用压缩是常用手段:scp加-C,rsync默认-z,如果网络带宽有限,可以限制带宽避免占满:scp用-l,rsync用--bwlimit,使用rsync的--partial可以在中断后继续,避免从头开始。
linux上传文件到另一台服务器的方法环环相扣,从scp的轻量快捷到rsync的智能同步,再到sftp的交互便利,选择最适合你场景的工具能极大提升工作效率。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/552465.html




