概述

scpsecure copy的缩写,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。

因此我们可以用于写一个脚本在一台服务器上来向多台服务器发送文件部署代码。

语法

scp的基本语法是:scp [选项] [参数]

常用选项如下:

选项说明
-1使用ssh协议版本1-2
-2使用ssh协议版本2
-4使用ipv4
-6使用ipv6
-B以批处理模式运行
-C使用压缩
-F指定ssh配置文件
-l指定宽带限制
-o指定使用的ssh选项
-P指定远程主机的端口号,如果默认 SSH 端口不是 22,则使用此选项指定 SSH 端口。
-p保留文件的最后修改时间,最后访问时间和权限模式
-q不显示复制进度
-r以递归方式复制,可用于复制目录

使用

从远程复制文件到本地

从远程服务器复制指定文件到本地主机的指定目录下,基本语法格式如下:

scp user@ip:/path/to/remote/file /path/to/local/directory

参数说明:

  • user@ip::指的是用户名和远程服务器的IP地址,如root@192.168.3.5。注意,用户名和服务器IP地址都是远程服务器的而不是本地服务器的。注意:冒号是必须的。
  • /path/to/remote/file:指的是远程服务器上你想要复制的文件,如/root/.ssh/restart.sh
  • /path/to/local/directory:指的是将远程服务器上的文件复制到本地后存放在哪个目录,如/root/home

例如,将远程服务器上的/root/test.txt文件复制到本地服务器上的/root/.ssh目录下注意,需要输入远程服务器指定用户的密码。

scp root@192.168.40.90:/root/test.txt /root/.ssh

在这里插入图片描述

从远程复制目录到本地

从远程服务器复制指定目录到本地主机的指定目录下,基本语法格式如下:

scp -r user@ip:/path/to/remote/directory /path/to/local/directory

参数说明:

  • -r:是一个选项,表示以递归的方式复制,复制目录的时候使用。
  • user@ip::指的是用户名和远程服务器的IP地址,如root@192.168.3.5。注意,用户名和服务器IP地址都是远程服务器的而不是本地服务器的。注意:冒号是必须的。
  • /path/to/remote/directory:指的是远程服务器上你想要复制的目录。
  • /path/to/local/directory:指的是将远程服务器上的目录复制到本地后存放在哪个目录下,如/root/home

例如,将远程服务器上的/root/.ssh/文件夹复制到本地服务器上的/root/home目录下,注意,需要输入远程服务器指定用户的密码。

scp -r root@192.168.40.90:/root/.ssh /root/home

在这里插入图片描述

上传本地文件到远程

可以将本地服务器上的指定文件上传到远程服务器上的指定目录下,语法如下:

scp /path/to/local/file user@ip:/path/to/remote/directory

参数说明:

  • user@ip::指的是用户名和远程服务器的IP地址,如root@192.168.3.5。注意,用户名和服务器IP地址都是远程服务器的而不是本地服务器的。注意:冒号是必须的。
  • /path/to/local/file:指的是本地服务器待上传的文件,如/root/.ssh/local.txt
  • /path/to/remote/directory:指的是将本地服务器上的文件上传后存放在哪个目录,如/root/home

例如,将本地服务器上的/root/.ssh/local.txt文件上传到192.168.40.90这台远程服务器上的/root/home目录下。注意,需要输入远程服务器指定用户的密码。

scp /root/.ssh/local.txt root@192.168.40.90:/root/home

在这里插入图片描述

上传本地目录到远程

可以将本地服务器上的指定文件上传到远程服务器上的指定目录下,语法如下:

scp -r /path/to/local/directory user@ip:/path/to/remote/directory

参数说明:

  • -r:是一个选项,表示以递归的方式复制,复制目录的时候使用。
  • user@ip::指的是用户名和远程服务器的IP地址,如root@192.168.3.5。注意,用户名和服务器IP地址都是远程服务器的而不是本地服务器的。注意:冒号是必须的。
  • /path/to/remote/directory:指的是远程服务器上你想要复制的目录。
  • /path/to/local/directory:指的是将远程服务器上的目录复制到本地后存放在哪个目录下,如/root/home

例如,将本地服务器上的/root/.ssh文件夹上传到远程服务器,放在/root/home目录下,注意,需要输入远程服务器指定用户的密码。

scp -r /root/.ssh/ root@192.168.40.90:/root/home

在这里插入图片描述

拓展延申

无论是从远程服务器上复制文件目录到本地,还是从本地服务器上传文件目录到远程服务器,每一次连接都需要输入远程服务器的密码,这很麻烦。所以我们可以让两台服务器建立信任关系,从此scp操作就不需要输入密码了,具体如何操作请参考:让两台甚至多台Linux服务器建立SSH信任关系

Logo

更多推荐