使用scp将文件夹从远程复制到本地的方法

使用scp将文件夹从远程复制到本地的方法

技术背景

在系统管理和文件传输中,经常需要将远程服务器上的文件夹复制到本地。scp(Secure Copy)是一个常用的命令行工具,它基于SSH协议,能够在本地和远程系统之间安全地复制文件和文件夹。

实现步骤

基本复制命令

使用scp命令复制文件夹时,需使用-r选项来递归复制整个目录。基本命令格式如下:

1
scp -r username@hostname:/path/from/remote /path/to/local

示例:

1
scp -r [email protected]:/path/to/foo /home/user/Desktop/

不包含foo末尾的/,将复制目录本身(包括内容),而不仅仅是目录的内容。

公钥授权和创建SSH别名

为了更方便地使用scp,可以进行公钥授权和创建SSH别名。

示例~/.ssh/config文件:

1
2
3
4
5
6
7
8
9
Host test
User testuser
HostName test-site.example
Port 22022

Host prod
User produser
HostName production-site.example
Port 22022

使用别名后的scp命令:

1
2
scp -r prod:/path/foo /home/user/Desktop   # 复制到本地
scp -r prod:/path/foo test:/tmp # 从远程prod复制到远程test

自定义端口

如果需要使用自定义端口,可使用-P选项。

1
scp -r -P xxxx username@hostname:/path/from/remote /path/to/local

复制到当前目录

若要将远程文件夹复制到当前目录,可使用.表示当前目录。

1
scp -r username@hostname:/path/from/remote .

压缩后复制

为提高传输效率,可先在远程服务器上压缩目录,再进行下载。

1
2
3
4
5
6
# 在远程服务器上压缩目录
tar czfP backup.tar.gz /path/to/catalog
# 从远程下载压缩文件
scp [email protected]:/path/to/backup.tar.gz .
# 在本地解压文件
tar -xzvf backup.tar.gz

更改加密算法

如果需要下载大量文件且对安全性要求不高,可以更改scp的默认加密算法,以减少文件复制时间。

1
scp -c blowfish -r [email protected]:/path/to/foo /home/user/Desktop/

使用sftp复制

除了scp,还可以使用sftp(SSH File Transfer Protocol)进行文件传输。

1
2
3
sftp user_remote@remote_ip
sftp> cd /path/to/remoteDir
sftp> get -r remoteDir

使用rsync复制

rsync是另一个强大的文件同步工具,比scp更易用。

1
rsync -aP myfiles/ [email protected]:server_dir/

-a选项用于递归复制,并保留符号链接、特殊和设备文件、修改时间、组、所有者和权限;-P选项用于显示进度。

核心代码

scp基本复制

1
scp -r username@hostname:/path/from/remote /path/to/local

scp自定义端口

1
scp -r -P xxxx username@hostname:/path/from/remote /path/to/local

sftp复制

1
2
3
sftp user_remote@remote_ip
sftp> cd /path/to/remoteDir
sftp> get -r remoteDir

rsync复制

1
rsync -aP myfiles/ [email protected]:server_dir/

最佳实践

  • 进行公钥授权和创建SSH别名,提高操作效率。
  • 对于大量文件,可先在远程服务器上压缩,再进行下载。
  • 使用rsync进行文件同步,因为它更易用且功能强大。

常见问题

端口问题

如果自定义端口无法工作,可能是防火墙未允许该端口。需确保防火墙允许该端口的传入和传出连接。

认证失败

如果遇到“Too many authentication failures”错误,可指定确切的SSH密钥。

1
scp -r -i /path/to/local/key [email protected]:/path/to/folder /your/local/target/dir

非正规文件错误

使用scp时出现/path-to-source/: not a regular file错误,可添加-r选项解决。若不想在复制文件时终端显示大量进度信息,可同时使用-q选项。

1
scp -rq /path-of-source/ /path-of-destination/

使用scp将文件夹从远程复制到本地的方法
https://119291.xyz/posts/2025-05-09.copy-folder-from-remote-to-local-using-scp/
作者
ww
发布于
2025年5月9日
许可协议