环境要求
使用scp
(Secure Copy Protocol)命令在本地和远程系统之间安全地复制文件和目录,需要满足以下环境要求:
- SSH服务:
scp
依赖于SSH(Secure Shell)协议来安全地传输文件。因此,远程服务器必须运行SSH服务。大多数Linux和Unix系统默认安装SSH服务。 - 网络连接:本地机器和远程服务器之间需要有活动的网络连接。
scp
通过网络发送数据,所以双方必须能够相互通信。 - SSH客户端:执行
scp
命令的本地机器上需要安装SSH客户端。大多数Linux和Unix系统(包括Mac OS X)默认安装了SSH客户端。Windows用户可以使用PuTTY的pscp工具或安装Windows 10的Linux子系统、Cygwin等来获得scp
功能。 - 端口:默认情况下,SSH服务监听22号端口。确保网络和防火墙设置允许通过这个端口进行通信。在一些情况下,为了安全或其他原因,服务器管理员可能会更改SSH服务的默认端口,此时需要在使用
scp
命令时指定正确的端口。 - 远程服务器的地址:你需要知道远程服务器的IP地址或主机名,以便于
scp
能够找到并连接到远程服务器。
命令行操作
在这之前你要知道两个路径,这些路径根据你的实际需求去来定,以下提供的案例路径,只是为了方便理解:
1.服务器存放你要下载文件的路径,我当前的下载存放路径为/var/www,可以看到我下面有一个aa.txt的文件。
2.本地你要存放的路径,我要准备把下载的文件存放到/Users/zoya/Documents/doc/scp-test,目前scp-test无任何文件。
- 下载单个远程文件到本地
scp [远程用户]@[远程主机]:[远程文件路径] [本地文件路径]
scp root@43.143.216.171:/var/www/aa.txt /Users/zoya/Documents/doc/scp-test
2.下载多个远程文件到本地
它会把整个目录拉下来,如图所示
scp -r [远程用户]@[远程主机]:[远程文件路径] [本地文件路径]
scp -r root@43.143.216.171:/var/www/ /Users/zoya/Documents/doc/scp-test
// 这段代码可以拉下来一个每个文件,而不是一个文件夹
rsync -avz --delete root@43.143.216.171:/var/www/ /Users/zoya/Documents/doc/scp-test
3.上传单个本地文件到服务器
scp [本地文件路径] [远程用户]@[远程主机]:[远程文件路径]
scp /Users/zoya/Documents/doc/scp-test/上传到服务器的.txt root@43.143.216.171:/var/www/
4.上传多个本地文件到服务器
scp -r [本地文件路径] [远程用户]@[远程主机]:[远程文件路径]
scp -r /Users/zoya/Documents/doc/scp-test/ root@43.143.216.171:/var/www/