在折腾多个服务器的时候最头疼的可能就是文件传输。用U盘?太麻烦;用FTP?又觉得配置繁琐。其实只要你会几个命令行工具,服务器之间传文件分分钟就能搞定。今天小编就为大家分享一些服务器之间传输文件命令,还是很简单的。
一、常用的服务器文件传输命令有哪些?
服务器之间传输文件,最主流的还是基于 SSH 的命令工具。
scp
:最常用的安全复制命令,适合点对点传输。rsync
:适合大批量或定时同步操作,还支持断点续传。sftp
:交互式操作,适合手动上传下载。wget / curl
:如果你有公网下载地址,这俩命令一键就能下文件。
而这些命令,基本上大多数 Linux 发行版都自带,连装软件都省了。
二、如何一步步完成传输?(含命令实例)
- 使用
scp
传输文件:
scp /path/to/local/file user@remote_ip:/path/to/remote/
举个例子,把本地的 backup.sql
文件传到另一台服务器的 /home/admin/
目录:
scp backup.sql root@192.168.1.101:/home/admin/
- 从远程服务器下载文件到本地:
scp user@remote_ip:/path/to/remote/file /path/to/local/
- 使用
rsync
同步整个目录:
rsync -avz /path/to/local/ user@remote_ip:/path/to/remote/
这个命令不光传得快,还能在你中断后继续传,不怕断线。
- 使用
sftp
:
sftp user@remote_ip
登录后输入 put 本地文件
上传,或 get 文件名
下载。
- 使用
wget
从公网地址下载:
wget https://example.com/file.tar.gz
三、什么情况适合用哪种命令?
如果是小文件传输,scp
就够用了,简单快捷;要同步多个目录,建议用 rsync
,效率更高。如果你不太习惯命令行,也可以试试 sftp
的图形化客户端,比如 WinSCP、FileZilla,拖拽上传超方便。
而 wget
和 curl
更适合“拉取”文件,比如从 GitHub、远程服务器下载文件,不需要登录远程服务器,非常适合部署脚本里使用。
四、小编的经验:文件传输注意事项
小编之前用 scp
传日志文件结果传错目录了,还覆盖了旧数据……所以还是得提醒大家几个注意点:
- 操作前记得用
ls
确认一下目标路径是否正确。 - 用
rsync
时建议加上--dry-run
先模拟一下,防止误操作。 - 有公网传输需求时,尽量使用端口加密传输(比如使用
scp
而不是ftp
)。 - 文件比较大时,建议开启压缩传输,比如
rsync -z
,能节省带宽。 - 如果频繁需要传文件,建议配合 SSH 密钥登录,省去每次输密码的麻烦。
五、常见问题 FAQ
- 传文件速度很慢怎么办?
可以加上压缩参数,比如rsync -z
,或使用内网 IP 传输。 scp
说连接超时?
可能对方服务器防火墙拦了端口,检查 22 端口是否开放。- 想自动化传文件怎么办?
使用 SSH 密钥免密登录 + 定时任务(crontab
)就行。 - 两个服务器系统不同,能互传吗?
可以,Linux 和 macOS/Windows 下的scp
、rsync
都能通用,只要有 SSH 就行。 rsync
会覆盖目标文件吗?
默认会覆盖同名文件,可以加--ignore-existing
避免这个问题。