Windows 与 Linux 传输文件:WinSCP 和 scp 上传下载教程
Linux 服务器入门 · 第 05 篇 / 共 18 篇
在服务器运行 ls 看不到 Windows 下载目录里的文件,因为它们在两台机器上。上传把本地副本送过去,下载把服务器文件带回来。
准备一个 Windows 本地文件 notes.txt,写上一句容易核对的文字。你还需要已验证可用的 SSH 连接信息。文中的账号、IP、端口仍需换成自己的。
先用 SFTP 看清两边的位置
Windows 可使用 WinSCP。打开登录窗口,新建站点,协议选择 SFTP,填写服务器地址、SSH 端口和用户名,再按接入方式使用密码或密钥。首次连接同样要核验服务器指纹。
选择双栏 Commander 界面时,一边显示本地目录,另一边显示服务器目录。先检查两侧路径,再把 notes.txt 上传到自己的远程家目录。使用密钥时,在高级 SSH 认证设置中选择对应私钥,格式要求以工具提示为准。
在服务器终端执行:
ls -l ~/notes.txt
cat ~/notes.txt文件存在且内容与本地一致,才说明这次上传符合预期。若服务器版本已被修改,下载时确认本地目标文件名,避免覆盖原稿。登录界面字段可对照 WinSCP 官方说明。
同一件事,用 scp 表达
下面的命令都在 Windows PowerShell 中执行。先切换到本地文件所在目录,例如:
cd "$env:USERPROFILE\Downloads"假设 notes.txt 已放在这个目录,上传到远程家目录:
scp .\notes.txt lin@198.51.100.10:notes.txt格式是 scp 源 目标。带 账号@服务器: 的一端表示远程位置;这里冒号后是相对路径,通常从远程账号家目录开始。目标文件名换成其他名字,也会在传输时重命名。
从服务器下载,并在本地使用新文件名:
scp lin@198.51.100.10:notes.txt .\notes-from-server.txt完成后用 Windows 编辑器打开新文件核对,不要只看传输进度条。
先记两个选项
如果 SSH 端口是 2222,scp 使用大写 -P:
scp -P 2222 .\notes.txt lin@198.51.100.10:notes.txt复制整个本地目录时使用 -r,例如 scp -r .\practice lin@198.51.100.10:practice-copy。密钥认证还可加 -i 指定本地私钥。ssh 的端口选项是小写 -p,scp 是大写 -P。 这两者不要混写。
若提示目标无权限,先换到自己的目录;不要为了传文件修改整个系统目录的权限。若找不到本地文件,先在 PowerShell 用 Get-Location、Get-ChildItem 核对当前目录和名称。
路径和参数行为可查 scp 手册。自己练习:上传一个文件,下载成不同文件名,并确认两份内容相同。