使用scp将文件夹从远程复制到本地的方法
使用scp将文件夹从远程复制到本地的方法
技术背景
在系统管理和文件传输中,经常需要将远程服务器上的文件夹复制到本地。scp
(Secure Copy)是一个常用的命令行工具,它基于SSH协议,能够在本地和远程系统之间安全地复制文件和文件夹。
实现步骤
基本复制命令
使用scp
命令复制文件夹时,需使用-r
选项来递归复制整个目录。基本命令格式如下:
1 |
|
示例:
1 |
|
不包含foo
末尾的/
,将复制目录本身(包括内容),而不仅仅是目录的内容。
公钥授权和创建SSH别名
为了更方便地使用scp
,可以进行公钥授权和创建SSH别名。
- 公钥授权:参考如何设置SSH使用密钥而不是用户名和密码进行身份验证
- 创建SSH别名:参考如何为SSH命令创建别名
示例~/.ssh/config
文件:
1 |
|
使用别名后的scp
命令:
1 |
|
自定义端口
如果需要使用自定义端口,可使用-P
选项。
1 |
|
复制到当前目录
若要将远程文件夹复制到当前目录,可使用.
表示当前目录。
1 |
|
压缩后复制
为提高传输效率,可先在远程服务器上压缩目录,再进行下载。
1 |
|
更改加密算法
如果需要下载大量文件且对安全性要求不高,可以更改scp
的默认加密算法,以减少文件复制时间。
1 |
|
使用sftp复制
除了scp
,还可以使用sftp
(SSH File Transfer Protocol)进行文件传输。
1 |
|
使用rsync复制
rsync
是另一个强大的文件同步工具,比scp
更易用。
1 |
|
-a
选项用于递归复制,并保留符号链接、特殊和设备文件、修改时间、组、所有者和权限;-P
选项用于显示进度。
核心代码
scp基本复制
1 |
|
scp自定义端口
1 |
|
sftp复制
1 |
|
rsync复制
1 |
|
最佳实践
- 进行公钥授权和创建SSH别名,提高操作效率。
- 对于大量文件,可先在远程服务器上压缩,再进行下载。
- 使用
rsync
进行文件同步,因为它更易用且功能强大。
常见问题
端口问题
如果自定义端口无法工作,可能是防火墙未允许该端口。需确保防火墙允许该端口的传入和传出连接。
认证失败
如果遇到“Too many authentication failures”错误,可指定确切的SSH密钥。
1 |
|
非正规文件错误
使用scp
时出现/path-to-source/: not a regular file
错误,可添加-r
选项解决。若不想在复制文件时终端显示大量进度信息,可同时使用-q
选项。
1 |
|
使用scp将文件夹从远程复制到本地的方法
https://119291.xyz/posts/2025-05-09.copy-folder-from-remote-to-local-using-scp/