
服务器环境配好了,网站代码写完了,或者想把服务器上的日志捞下来分析分析?这时,你就需要在你的本地电脑和远程Linux服务器之间传来传去文件了。这绝对是服务器管理中最常见的操作之一。
别担心,我们不需要用U盘(当然也用不了:D),有更现代、更安全、更高效的方式!这里介绍两种最主流的方法:
scp
命令: 命令行爱好者的瑞士军刀,快速、直接,适合脚本化。- FileZilla (使用SFTP协议): 图形界面党的福音,拖拽操作,直观方便。
选哪个?看你喜好和场景!下面都给你讲清楚。
方法一:命令行利器 – scp
命令 (Secure Copy)
scp
是 Secure Copy Protocol 的缩写,它利用 SSH 协议来传输文件,这意味着你的登录认证和文件内容都是加密的,非常安全。几乎所有的Linux和macOS系统都自带scp
命令,Windows用户可以通过安装Git Bash或启用WSL (Windows Subsystem for Linux) 来使用它。
- 基本语法:
- 上传 (本地 -> 服务器): Bash
scp [选项] /本地/文件/路径 <用户名>@<服务器IP或域名>:<远程服务器上的路径>
- 下载 (服务器 -> 本地): Bash
scp [选项] <用户名>@<服务器IP或域名>:<远程服务器上的文件路径> /本地/保存/路径
- 上传 (本地 -> 服务器): Bash
- 常用选项
[选项]
:-r
: 当你需要复制整个目录(文件夹)时,必须加上这个递归选项。-P <端口号>
: 注意是大写的P! 如果你的服务器SSH端口不是默认的22,需要用这个选项指定端口号(例如-P 2222
)。-i <私钥文件路径>
: 如果你使用SSH密钥登录,用这个选项指定你的私钥文件路径(例如-i ~/.ssh/id_rsa
)。
- 实战举例: 假设你的服务器IP是
123.45.67.89
,用户名是myuser
,你想操作/home/myuser/website
这个目录。- 上传本地
index.html
文件到服务器的website
目录: Bashscp /Users/Me/Desktop/index.html myuser@123.45.67.89:/home/myuser/website/
- 上传本地
images
整个目录到服务器的website
目录下: Bashscp -r /Users/Me/Projects/MySite/images myuser@123.45.67.89:/home/myuser/website/
- 下载服务器上的
error.log
文件到本地桌面: Bashscp myuser@123.45.67.89:/var/log/nginx/error.log /Users/Me/Desktop/
- 下载服务器上的
backup
整个目录到本地Downloads
目录: Bashscp -r myuser@123.45.67.89:/home/myuser/backup /Users/Me/Downloads/
- 如果服务器SSH端口是2222,并使用密钥
mykey
上传文件: Bashscp -P 2222 -i ~/.ssh/mykey local_script.sh myuser@123.45.67.89:/usr/local/bin/
- 上传本地
- 优点: 速度快,系统自带(通常),非常适合快速传输少量文件或在脚本中自动化文件传输。
- 缺点: 无法像图形界面那样方便地浏览远程目录,传输大目录时如果中断可能需要手动处理。
方法二:图形化好帮手 – FileZilla 与 SFTP 协议
如果你更喜欢拖拽式的操作,或者需要管理大量文件、浏览服务器目录结构,那么使用图形化的SFTP客户端是更好的选择。FileZilla 就是其中最著名、免费且跨平台(Windows, macOS, Linux都有)的一款。
- SFTP 不是 FTP! 首先要搞清楚,我们要用的是 SFTP (SSH File Transfer Protocol)。它和古老的、不安全的FTP完全不同,SFTP是基于SSH协议的,所有传输(包括登录凭证和文件内容)都是加密的,安全性等同于SSH。FileZilla同时支持FTP, FTPS和SFTP,连接时务必选择SFTP。
- 下载与安装 FileZilla:
- 前往 FileZilla 官方网站:https://filezilla-project.org/
- 下载 FileZilla Client (客户端) 并安装到你的本地电脑上。
- 连接服务器: 打开FileZilla后,你有两种方式连接:
- 快速连接栏 (Quickconnect): 在顶部输入框填入信息直接连接(但不方便保存)。
- 主机 (Host): 输入
sftp://<你的服务器IP地址>
(明确指定sftp协议) 或者只输入IP地址也可以,但协议要在后面选对。 - 用户名 (Username): 你的服务器用户名。
- 密码 (Password): 你的服务器密码(如果使用密码登录)。
- 端口 (Port): 你的服务器SSH端口(默认22,如果是其他端口如2222,务必填写)。
- 点击 “快速连接 (Quickconnect)”。
- 主机 (Host): 输入
- 站点管理器 (Site Manager – 推荐): 用于保存连接信息,方便以后使用。
- 点击左上角 “文件 (File)” -> “站点管理器 (Site Manager)”。
- 点击 “新站点 (New Site)”,给你的连接起个名字(例如 “我的博客服务器”)。
- 在右侧“常规 (General)”选项卡中:
- 协议 (Protocol): 选择 SFTP – SSH File Transfer Protocol。这是关键!
- 主机 (Host): 输入你的服务器IP地址。
- 端口 (Port): 输入SSH端口(留空则默认22)。
- 登录类型 (Logon Type):
常规 (Normal)
: 输入你的用户名 (User) 和 密码 (Password)。密钥文件 (Key file)
: 选择这种方式使用SSH密钥登录。输入用户名 (User),然后在密钥文件 (Key file) 处浏览选择你本地电脑上的私钥文件(通常是id_rsa
,或者PuTTY生成的.ppk
格式)。如果私钥有密码短语,连接时会提示输入。交互式 (Interactive)
: 连接时会弹出窗口让你输入密码或密码短语。
- 点击 “连接 (Connect)”。
- 首次连接提示: 第一次连接服务器时,FileZilla会提示你服务器的“主机密钥未知”,问你是否信任。这是正常的SSH安全机制,确认IP地址无误后,勾选“总是信任此主机…”并点击“确定”。
- 快速连接栏 (Quickconnect): 在顶部输入框填入信息直接连接(但不方便保存)。
- 使用界面:
- 连接成功后,FileZilla通常分为左右两个主要窗格:
- 左侧窗格: 显示你的本地电脑的文件和目录。
- 右侧窗格: 显示你的远程服务器的文件和目录。
- 操作:
- 就像操作本地文件管理器一样,你可以双击进入目录。
- 上传: 从左侧本地窗格拖拽文件或目录到右侧远程窗格。
- 下载: 从右侧远程窗格拖拽文件或目录到左侧本地窗格。
- 也可以通过右键菜单进行创建目录、删除、重命名、设置权限(修改权限要小心!)等操作。
- 底部通常有“传输队列”和“消息日志”窗口,可以看到文件传输的进度和状态。
- 连接成功后,FileZilla通常分为左右两个主要窗格:
- 优点: 操作直观,对新手友好,方便浏览远程目录,管理大量文件更方便,通常支持断点续传。
- 缺点: 需要额外安装软件,不如
scp
命令那样适合嵌入脚本自动化。
安全提示:始终优先使用SSH密钥
无论你选择 scp
还是 FileZilla (SFTP),都强烈推荐使用SSH密钥进行身份验证,而不是密码。这样更安全,也能避免在脚本或配置中明文存储密码。如果你还没配置SSH密钥登录,强烈建议你先看看我们的 《新服务器安全第一步:修改默认密码与设置SSH密钥登录》 教程。
现在,你应该掌握了在本地和服务器之间安全传输文件的两种主要方法了。scp
短小精悍,适合快速操作和自动化;FileZilla + SFTP 图文并茂,管理方便。根据你的习惯和具体场景选择合适的工具,让文件在服务器和本地之间自由、安全地流动起来吧!