使用scp上传文件到服务器或从服务器下载文件

使用scp上传文件到服务器或从服务器下载文件

一、scp是什么?

使用man scp可以看到scp的解释『scp — secure copy (remote file copy program)』,scp是一个安全拷贝工具,支持远程拷贝,它支持本地拷贝到本地(当然这个一般不会用它,直接用cp就行)、本地拷贝到远程(上传)、远程拷贝到本地(下载)、远程拷贝到远程。

二、实例演示

1、从本地拷贝到本地

从本地拷贝到本地一般人不会用它,因为没必要,直接用cp就行,这里只是作为演示:
把文件file1.txt拷贝到test2目录,注意两个文件都可以添加路径。

scp file1.txt test2

2、本地拷贝到远程(上传文件到服务器)

使用格式

scp 本地文件 远程服务器用户名@远程服务器IP:远程服务器目录

file1.txt上传到远程服务器的/home/zhangsan目录中,远程服务器用户名为zhangsan,远程服务器ip为101.5.13.115:

scp file1.txt zhangsan@101.5.13.115:/home/zhangsan

file1.txt上传到远程服务器的/home/zhangsan目录中,并把上传后的文件重命名为testfile1.txt:

scp file1.txt zhangsan@101.5.13.115:/home/zhangsan/testfile1.txt

newdir文件夹上传到远程服务器中(上传文件夹要加-r,注意-r的r是小写,r表示recursive,递归的意思)

scp -r newdir zhangsan@101.5.13.115:/home/zhangsan

指定服务器端口(scp默认端口为ssh的端口,即22,因为它的数据传输实际上是使用ssh的,其实跟安全有关的,都是用ssh的,比如sftp,它也是通过ssh来传的),注意端口使用-P指定,P是大写的,不是像ssh那样小写,在这里小写的P是preserve的意思,意思是保留文件原始信息(比如文件创建时间,文件修改时间,文件权限等等)。

scp -r -P 22 newdir zhangsan@101.5.13.115:/home/zhangsan

同时上传多个文件,一种方式是,把多个文件放到目录中,另一种是直接传多个文件(多个文件之间用空格隔开)

scp file1.txt file2.txt zhangsan@101.5.13.115:/home/zhangsan

使用正则表达式同时上传多个文件(用于文件名类似的文件)

scp file* zhangsan@101.5.13.115:/home/zhangsan

3、从远程拷贝到本地(从远程服务器下载文件)

其实很简单,只需要把从本地上传到远程服务器反过来即可,使用格式:

scp 远程服务器用户名@远程服务器IP:远程服务器文件绝对地址 本地文件

从远程服务器下载/home/zhangsan/file1.txt文件到本地当前目录./

scp zhangsan@101.5.13.115:/home/zhangsan/file1.txt ./

从远程服务器下载/home/zhangsan/file1.txt文件到本地当前目录./,并把下载的文件重命名为testfile1.txt

scp zhangsan@101.5.13.115:/home/zhangsan/file1.txt ./testfile1.txt

从远程服务器下载文件夹,道理跟上传是一样的,只要加-r参数即可。如下例:把远程服务器的/home/zhangsan/newdir文件夹下载到当前目录中

scp -r zhangsan@101.5.13.115:/home/zhangsan/newdir ./

指定远程端口,跟上传一样,用-P(P大写)

scp -P 2232 zhangsan@101.5.13.115:/home/zhangsan/file1.txt ./

从远程服务器下载多个文件到本地,除了可以把文件都放到一个目录里下载目录之外,还可以用引号(单/双都可以)把远程文件引起来,里面的多个文件用空格隔开,当然文件必须写绝对路径,如把远程服务器中的/home/xiebruce/file1.txt /home/xiebruce/file2.txt两个文件下载到当前目录./

scp zhangsan@101.5.13.115:'/home/xiebruce/file1.txt /home/xiebruce/file2.txt' ./

使用正则从远程服务器下载多个文件到本地当前目录./(注意用到了正则,一定要用引号括起来,否则报错):

scp zhangsan@101.5.13.115:'/home/xiebruce/file*' ./

4、远程拷贝到远程(两个远程服务器之间拷贝)

注意这里说的远程到远程,是指A、B是两台远程主机,我们可以通过scp,在不登录A,也不登录B的情况下,直接在你自己的电脑中使用scp命令,实现A拷贝到B,当然你也可以登录其中一台,这样的话,你登录的那台机就相当于上面说的”本地”了。因此,我们必须让A服务器登录到B服务器时免密码登录,设置方法:Linux-使用ssh免密码登录

scp xiebruce@123.7.12.110:/home/xiebruce/file1.txt xiebruce@11.96.13.35:/home/xiebruce

以上命令实现的原理,是scp把命令上传到A机器,然后在A机器中执行命令把A机器中的指定文件拷贝到B机器,所以,所谓的远程到远程,其实实质上是『本地到远程』,因为真正的命令是在A机器上执行,所以A就相当于本地,B相当于远程。

与前面的方法一样,你可以用-P指定端口(当然这个端口是指A机器的端口),用-r指定拷贝目录,以及拷贝多个文件都可以用前面的方法。

打赏

Leave a Reply

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
Notify of

扫码在手机查看
iPhone请用自带相机扫
安卓用UC/QQ浏览器扫

使用scp上传文件到服务器或从服务器下载文件