0Pricing
Linux Server Deployment & SSH Mastery · 课时

使用 SCP、SFTP 和 rsync 安全传输文件

通过加密的 SSH 通道在机器之间传输文件。比较 scp、sftp 和 rsync,了解它们的关键选项,并为一次性复制、交互式传输和高效同步选择合适的工具。

使用 SCP、SFTP 和 rsync 安全传输文件 是 CoddyKit 上的免费 Linux Server Deployment & SSH Mastery 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Linux Server Deployment & SSH Mastery 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Linux Server Deployment & SSH Mastery 课程共包含 4 节课。

通过 SSH 传输文件

您已经掌握了隧道、代理和多跳连接。同样的 SSH 基础也支持安全的文件传输,无需额外服务或开放端口。

有三个基于 SSH 的工具:scp 用于快速复制,sftp 用于交互式会话,rsync 用于高效同步。

scp:简单复制

scp 的工作方式与 cp 类似,只是可以跨机器操作。远程端使用 user@host:path 语法。

下面的操作会将本地文件上传到服务器。

scp report.pdf deploy@server:/home/deploy/docs/

scp:下载和目录

交换参数的顺序即可进行下载。添加 -r 可以递归复制整个目录。

scp deploy@server:/var/log/app.log ./
scp -r deploy@server:/etc/myapp ./backup/

使用自定义端口和密钥的 scp

如果服务器使用非标准端口,请注意 scp 使用大写的 -P(不同于 ssh 的小写 -p)。您还可以使用 -i 指定特定密钥。

scp -P 2222 -i ~/.ssh/deploy_key file.txt deploy@server:/tmp/

sftp:交互式传输

sftp 会打开一个类似 FTP 提示符的交互式会话,但整个过程都经过加密。您可以使用熟悉的命令浏览和传输文件。

  • put file — 上传
  • get file — 下载
  • ls、cd、pwd — 浏览远程位置
  • lcd、lls — 浏览本地位置
sftp deploy@server
sftp> cd /var/www
sftp> put index.html
sftp> get backup.tar.gz

rsync 有何不同

rsync 只传输文件中发生变化的部分。重复运行时,它比 scp 快得多,因此成为备份和部署的首选工具。

默认情况下,它也通过 SSH 运行,使用相同的加密机制。

rsync 基本用法

常用的选项组合是 -avz:

  • -a — 归档模式(保留权限、时间和符号链接)
  • -v — 显示详细信息
  • -z — 传输过程中进行压缩

下面的操作会将本地文件夹同步到服务器。

rsync -avz ./site/ deploy@server:/var/www/site/

末尾斜杠很重要

在 rsync 中,源路径末尾的斜杠会改变结果:

  • src/ — 将 src 的内容复制到目标位置
  • src — 将 src 目录本身复制到目标位置

弄错这一点会创建嵌套目录,因此务必有意选择正确的写法。

rsync -avz src/  dest/   # contents of src into dest
rsync -avz src   dest/   # creates dest/src/

镜像同步和排除文件

--delete 会删除源路径中不存在的文件,使目标位置成为源路径的精确镜像。使用 --exclude 可跳过指定路径。

首次使用这些选项时,务必先结合 --dry-run 运行。

rsync -avz --delete --exclude '.git' --dry-run ./ deploy@server:/var/www/

通过自定义 SSH 配置运行 rsync

要使用非标准端口或密钥,请通过 -e 传入明确的 ssh 命令。这也会与您在 ~/.ssh/config 中配置的所有内容集成。

rsync -avz -e 'ssh -p 2222 -i ~/.ssh/deploy_key' ./ deploy@server:/var/www/

最佳实践

请安全、高效地传输文件:

  • 使用 scp 快速完成一次性复制
  • 需要交互式浏览时使用 sftp
  • 反复同步和备份时使用 rsync
  • 使用 --delete 前始终先使用 --dry-run

快速检查

测试您对安全传输的了解。

回顾

现在,您已经可以通过 SSH 安全地传输文件:

  • scp — 简单复制(-r、-P、-i)
  • sftp — 交互式 put/get 会话
  • rsync — 使用 -avz、--delete、--exclude 进行高效的差异同步

这三个工具都复用您现有的 SSH 密钥和配置,为您的高级 SSH 工具箱补上了最后一块拼图。

常见问题解答

「使用 SCP、SFTP 和 rsync 安全传输文件」课时是免费的吗?

是的 — 「使用 SCP、SFTP 和 rsync 安全传输文件」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Linux Server Deployment & SSH Mastery 课程的其余内容,请升级到 CoddyKit PRO。 Linux Server Deployment & SSH Mastery 课程共包含 4 节课。

「使用 SCP、SFTP 和 rsync 安全传输文件」这节课中我会学到什么?

通过加密的 SSH 通道在机器之间传输文件。比较 scp、sftp 和 rsync,了解它们的关键选项,并为一次性复制、交互式传输和高效同步选择合适的工具。 你通过在浏览器中直接运行的动手代码来练习 Linux Server Deployment & SSH Mastery,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Linux Server Deployment & SSH Mastery 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Linux Server Deployment & SSH Mastery 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「使用 SCP、SFTP 和 rsync 安全传输文件」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Linux Server Deployment & SSH Mastery 课中编写并运行代码吗?

能。每节 Linux Server Deployment & SSH Mastery 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. SSH 端口转发(本地/远程)
  2. SSH 隧道与 SOCKS 代理
  3. SSH 代理与多跳连接
  4. 使用 SCP、SFTP 和 rsync 安全传输文件
← 返回 Linux Server Deployment & SSH Mastery