方案一:使用 scp 命令
scp (secure copy) 是一个基于 SSH 协议在网络主机之间安全传输文件的命令行工具。要通过一个非标准端口下载整个文件夹,你需要结合 -P 和 -r 选项。
命令格式:
scp -P [端口号] -r [远程用户名]@[远程服务器IP或域名]:/path/to/remote/folder /path/to/local/directory
参数详解:
-P [端口号]:(大写的P) 这是关键。它告诉 scp 连接到远程服务器的哪个SSH端口。 -r:代表 “recursive”(递归),用于复制整个目录及其中的所有内容。[远程用户名]@[远程服务器IP或域名]:你用于登录远程服务器的凭据和地址。:/path/to/remote/folder:远程服务器上你想要下载的文件夹的绝对或相对路径。/path/to/local/directory:你希望将文件夹下载到本地机器的哪个位置。你也可以使用 . 来代表当前所在的目录。
具体示例:
假设您的情况如下:
- 远程服务器IP:
192.168.1.100 - 特殊SSH端口:
2222 - 远程服务器用户名:
ubuntu - 要下载的远程文件夹路径:
/home/ubuntu/project_files - 要保存到的本地路径:
/home/myuser/downloads
那么,你需要在你的本地计算机上打开终端,并执行以下命令:
scp -P 2222 -r ubuntu@192.168.1.100:/home/ubuntu/project_files /home/myuser/downloads
执行过程:
- 系统会提示你输入
ubuntu 用户在远程服务器 192.168.1.100 上的密码(除非你已经配置了SSH密钥免密登录)。 - 验证通过后,
scp 将开始递归地将远程的 project_files 文件夹复制到你本地的 /home/myuser/downloads 目录下。
方案二:使用 rsync 命令(更强大,功能更丰富)
虽然你指定了想用 scp,但在批量传输文件,尤其是大文件或数量多的文件时,rsync 是一个更优越的工具。
rsync 的优势:
- 增量同步: 只传输源和目标之间有差异的文件部分,这使得第二次及以后的同步速度极快。
- 断点续传: 如果传输过程中断,下次可以从中断处继续传输,而
scp 需要从头开始。 - 更丰富的选项: 可以更好地控制文件权限、所有权、排除特定文件等。
rsync 命令格式:
rsync 通过 -e 选项来指定用于连接的 shell 命令,我们可以在这里传入带特殊端口的 ssh 命令。
rsync -avz -e 'ssh -p [端口号]' [远程用户名]@[远程服务器IP或域名]:/path/to/remote/folder /path/to/local/directory
参数详解:
-a:归档模式,相当于 -rlptgoD 的集合,能保留大部分文件属性。-v:详细模式,显示传输过程。-z:传输时进行压缩,提高效率。-e 'ssh -p [端口号]':这是指定特殊端口的关键。它告诉 rsync 使用 ssh 作为传输协议,并连接到特定端口(注意,ssh 的端口参数是小写的p)。
同样使用上面的示例,rsync 命令如下:
rsync -avz -e 'ssh -p 2222' ubuntu@192.168.1.100:/home/ubuntu/project_files /home/myuser/downloads
总结
| 特性 | scp | rsync |
|---|
| 易用性 | 非常简单,适合一次性传输 | 稍微复杂,但功能更强大 |
| 指定端口 | -P (大写) | -e 'ssh -p [端口号]' (ssh用小写p) |
| 文件夹传输 | -r | -a (归档模式,更常用) |
| 断点续传 | 不支持 | 支持 |
| 效率 | 每次都完整传输 | 增量传输,更高效 |
| 适用场景 | 简单的、一次性的文件或小文件夹传输 | 大批量文件、文件夹同步、备份、可能中断的传输 |
对于你的下载需求,使用 scp 完全足够且直接。如果你未来需要频繁同步该文件夹或传输非常大的数据,建议花时间学习并使用 rsync。