最稳当的远程文件下载方式取决于场景:scp适合常规单文件或目录传输,sz适用于图形终端用户快速弹窗下载,rsync支持断点续传和大文件同步,wget/curl适用于服务器已启用web服务的情况,sftp则适合需要交互式精细操作的场景。

你需要把远程Linux服务器上的文件取回本地机器,但不确定该用哪个命令、参数怎么写、哪种方式最稳当——不同场景下适用的工具完全不同,选错可能卡住、传一半失败、甚至连不上。
用scp直接拉取(最常用)
这是绝大多数人第一选择,系统自带、无需安装、一次命令搞定单文件或整个目录。
第一步:在本地终端输入命令,格式为 【scp 用户名@服务器IP:远程路径 本地保存路径】,例如:scp admin@192.168.1.100:/var/log/app.log ./。
第二步:回车后输入远程用户密码,传输开始;进度不显示,但光标会停顿几秒到几十秒,等它自动返回提示符就代表完成了。
下载整个文件夹必须加 -r 参数,否则只会创建一个空目录。漏掉这个参数是新手最常踩的坑。
如果服务器SSH端口不是22(比如改成了2222),必须用大写 -P 指定,小写 -p 是保留权限的参数,写错会导致连接超时。
用sz命令弹窗下载(Xshell/MobaXterm用户专属)
如果你正用 Xshell、MobaXterm 或 SecureCRT 这类图形终端连服务器,sz 是最快最直观的方式——点一下就弹出系统保存窗口,不用记路径、不用输密码。
方法一:下载单个文件,直接运行 sz filename.txt,本地弹窗选位置即可。
方法二:批量下载多个文件,用通配符,例如 sz /data/*.log,所有匹配的日志文件会打包成一个传输流,弹窗只出现一次。
注意:该命令依赖 lrzsz 工具包,若提示 command not found,先运行 sudo yum install lrzsz(CentOS)或 sudo apt install lrzsz(Ubuntu)再试。
用rsync做可靠同步(大文件/断点续传)
当你下载的是几百MB以上的压缩包、数据库备份,或者网络不稳定容易中断,rsync 就比 scp 强得多——中断后重新执行,它只传没传完的部分。
① 安装rsync(如未预装):sudo apt install rsync(Debian/Ubuntu)或 sudo yum install rsync(CentOS/RHEL)。
② 执行下载命令:rsync -avz admin@192.168.1.100:/backup/full.tar.gz ./。其中 -a 保持属性,-v 显示过程,-z 边传边压缩。
③ 若中途断开,再次运行相同命令,它会自动比对已下载部分,跳过重复内容——这一步不需要额外参数,rsync 默认就支持。
传输完成后,本地文件的修改时间、权限、软链接都会和远程一致,scp 不保证这点。
用wget/curl走HTTP下载(服务器开了Web服务时)
当远程服务器已部署Nginx/Apache,并把文件放在网页可访问路径下(比如 http://192.168.1.100/files/report.pdf),就不用SSH登录,直接在本地终端下载。
wget http://192.168.1.100/files/report.pdf —— 文件默认存当前目录,名字和远程一致。
curl -O http://192.168.1.100/files/report.pdf —— 效果同上,-O 表示“用原文件名保存”。
想换个名字保存?用 curl -o myreport.pdf http://192.168.1.100/files/report.pdf,-o 后面跟本地文件名。
用sftp交互式操作(需要精细控制时)
适合要反复下载多个文件、不确定远程路径、或想先列目录再选的情况——它不像 scp 那样一条命令完事,但每步都可控。
运行 sftp admin@192.168.1.100,输入密码登录后,你会看到 sftp> 提示符。
输入 ls /home/admin/data/ 查看远程目录内容,确认目标文件名拼写无误。
执行 get /home/admin/data/config.json ~/Downloads/,就把 config.json 下载到你本地的 Downloads 文件夹。
想退出?输入 quit 或按 Ctrl+D,不要直接关窗口,否则连接没释放可能影响下次登录。











