Linux命令:scp

Posted 北冥牧之

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令:scp相关的知识,希望对你有一定的参考价值。

目录

简介

一、语法

二、示例

2.1 将本地文件复制到远程主机目录

2.2 将本地目录复制到远程主机目录

2.3 将远程主机的文件复制到本机

2.4 复制远程主机目录到本机


简介

今天我们来介绍一个Linux命令:scp

scp — secure copy (remote file copy program),意思安全拷贝,安全复制的意思,是一个远程文件复制程序。准确来说就是不同服务器之间进行文件(包括目录)进行安全复制的命令。scp基于加州大学Regents的BSD源代码中的rcp程序。

如何安全的呢?

通过 SSH 协议安全地将文件复制到远程系统和从远程系统复制文件到本地的命令。使用 SSH 意味着它享有与 SSH 相同级别的数据加密,因此被认为是跨两个远程主机传输文件的安全方式。

一、语法

语法介绍:

scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target

有这么多参数?是的,确实是。如果不信,可以使用以下命令查看:

man scp

这么多参数,我们大多用不到,我们介绍几个常用的即可。

-P port:Specifies the port to connect to on the remote host.  Note that this option is written with a capital ‘P’, because -p is already reserved for preserving the times and modes of the file.

-p      Preserves modification times, access times, and modes from the original file.

翻译过来就是:

-P: 指定要连接到远程主机上的端口。请注意,此选项使用大写“P”编写,因为-P已被保留用于保存文件的时间和模式。

-p:保留原始文件的修改时间、访问时间和模式。

 -r Recursively copy entire directories. Note that scp follows symbolic links encountered in the tree traversal.

 翻译过来就是:

-r:递归复制整个目录。注意,scp遵循在树遍历中遇到的符号链接。

 -C Compression enable. Passes the -C flag to ssh(1) to enable compression.

 翻译过来就是:

 -C:压缩启用。将-C标志传递给ssh(1)以启用压缩。

总结如下:

-P:指定端口。默认是22,不需要指定;如果不是22,则用大写P指定端口。

-p:保留原始文件的修改时间、访问时间和模式。

-r:递归复制整个目录。复制目录是必不可少。

-C:压缩文件。

二、示例

2.1 将本地文件复制到远程主机目录

scp redis.conf root@k8s-node02:/usr/local/redis-cluster/slave-6381/conf

将本机的当前目录的redis.conf文件,通过远程主机的用户root,复制到k8s-node02主机的22端口的/usr/local/redis-cluster/slave-6381/conf目录。

其中k8s-node02可以替换为远程主机的ip,22端口是默认的不用填写,root是远程主机的用户名。

执行该命令后会有提示:

 意思是:

无法确定主机“k8s-master01(192.168.222.100)”的真实性。

ECDSA密钥指纹为SHA256:nbOQMg0kDl5DW/jNRip8WsjbGKqzS/CIUuir7EWIB1Q。

是否确实要继续连接(是/否/[指纹])?

 我们此时输入yes,然后输入远程主机的密码即可,如果成功会显示复制成功的文件:redis.conf。

2.2 将本地目录复制到远程主机目录

我们创建一个目录,然后在该目录下创建一个文件,最后将该目录连同文件一起复制到远程主机。

scp -r test root@k8s-master01:/usr/local/redis-cluster/slave-6381/

现在去k8s-master01主机的/usr/local/redis-cluster/slave-6381/目录下查看一番。

2.3 将远程主机的文件复制到本机

 我们先删掉本地目录下的test-scp.txt文件,然后将k8s-master01主机的该文件复制过来。

scp root@k8s-master01:/usr/local/redis-cluster/slave-6381/test/test-scp.txt ./

上面的./可以修改为你想要的目录,这里的./指的是当前主机的当前目录。

我们下面要删除整个test目录,然后将远程主机的目录复制过来。

2.4 复制远程主机目录到本机

scp -r root@k8s-master01:/usr/local/redis-cluster/slave-6381/test ./

 

linux 的 scp 命令

linux 的 scp 命令 可以 在 linux 之间复制 文件 和 目录; 

================== 
scp 命令 
================== 
scp 可以在 2个 linux 主机间复制文件; 

命令基本格式: 
       scp [可选参数] file_source file_target 

====== 
从 本地 复制到 远程 
====== 
* 复制文件: 
        * 命令格式: 
                scp local_file [email protected]_ip:remote_folder 
                或者 
                scp local_file [email protected]_ip:remote_file 
                或者 
                scp local_file remote_ip:remote_folder 
                或者 
                scp local_file remote_ip:remote_file 

                第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名; 
                第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名; 
        * 例子: 
                scp /home/space/music/1.mp3 [email protected]:/home/root/others/music 
                scp /home/space/music/1.mp3 [email protected]:/home/root/others/music/001.mp3 
                scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music 
                scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music/001.mp3 

* 复制目录: 
        * 命令格式: 
                scp -r local_folder [email protected]_ip:remote_folder 
                或者 
                scp -r local_folder remote_ip:remote_folder 

                第1个指定了用户名,命令执行后需要再输入密码; 
                第2个没有指定用户名,命令执行后需要输入用户名和密码; 
        * 例子: 
                scp -r /home/space/music/ [email protected]:/home/root/others/ 
                scp -r /home/space/music/ www.cumt.edu.cn:/home/root/others/ 

                上面 命令 将 本地 music 目录 复制 到 远程 others 目录下,即复制后有 远程 有 ../others/music/ 目录 


====== 
从 远程 复制到 本地 
====== 
从 远程 复制到 本地,只要将 从 本地 复制到 远程 的命令 的 后2个参数 调换顺序 即可; 

例如: 
        scp [email protected]:/home/root/others/music /home/space/music/1.mp3 
        scp -r www.cumt.edu.cn:/home/root/others/ /home/space/music/

最简单的应用如下 : 

scp 本地用户名 @IP 地址 : 文件名 1 远程用户名 @IP 地址 : 文件名 2 

[ 本地用户名 @IP 地址 :] 可以不输入 , 可能需要输入远程用户名所对应的密码 . 

可能有用的几个参数 : 

-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 . 

-C 使能压缩选项 . 

-P 选择端口 . 注意 -p 已经被 rcp 使用 . 

-4 强行使用 IPV4 地址 . 

-6 强行使用 IPV6 地址 .

 

注意两点:
1.如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:
#scp -p 4588 [email protected]:/usr/local/sin.sh /home/administrator
2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限。

以上是关于Linux命令:scp的主要内容,如果未能解决你的问题,请参考以下文章

Linux 云服务器运维(操作及命令)

Linux运维10:scp命令详解

Linux服务器运维基本命令

作为linux运维工程师,你不能不懂这几个底层命令

Linux运维18:网络和监控

Linux运维10:scp命令详解