使用 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.gzrsync 有何不同
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 反馈 — 无需本地设置。
此课程中的所有课时
- SSH 端口转发(本地/远程)
- SSH 隧道与 SOCKS 代理
- SSH 代理与多跳连接
- 使用 SCP、SFTP 和 rsync 安全传输文件