

如何批量下载Linux服务器远程文件夹中的文件
-
如何批量下载Linux服务器远程文件夹中的文件
方案一:使用
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
。
歡迎留言回复交流。
Log in to reply.