scp 命令详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

scp 命令安装:


-bash/zsh: scp: command not found

#Debian
apt-get install openssh-client

#Ubuntu
apt-get install openssh-client

#Alpine
apk add openssh-client

#Arch Linux
pacman -S scp

#Kali Linux
apt-get install openssh-client

#CentOS
yum install openssh-clients

#Fedora
dnf install openssh-clients

#Raspbian
apt-get install openssh-client

#Docker
docker run cmd.cat/scp scp

scp 命令补充说明:


scp 命令用于在 Linux 下进行远程拷贝文件的命令,和它类似的命令有 cp,不过 cp 只是在本机进行拷贝不能跨服务器,而且 scp 传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system 时,用 scp 可以帮你把文件移出来。另外,scp 还非常不占资源,不会提高多少系统负荷,在这一点上,rsync 就远远不及它了。虽然 rsync 比 scp 会快一点,但当小文件众多的情况下,rsync 会导致硬盘 I/O 非常高,而 scp 基本不影响系统正常使用

scp 在网络上的主机之间安全地复制文件。 它使用 ssh 进行数据传输,并使用与 ssh 相同的身份验证并提供相同的安全性。 与 rcp 不同,scp 将要求输入密码或密码短语以进行身份验证。

文件名可能包含用户和主机规范,以指示该文件要与该主机复制。 可以使用绝对或相对路径名来明确显示本地文件名,以避免 scp 将包含 的文件名视为主机说明符。 也允许在两个远程主机之间复制。

scp 命令语法:


scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] 
    [-l limit] [-o ssh_option] [-P port] [-S program]
    [[user@]host1:]file1 ... [[user@]host2:]file2

scp 命令选项:


-1:使用ssh协议版本1;
-2:使用ssh协议版本2;
-3:两个远程主机之间的副本通过本地主机传输。 如果没有此选项,数据将直接在两个远程主机之间复制。 此选项还禁用进度表。
-4:使用ipv4;
-6:使用ipv6;
-B  使用批处理模式(传输过程中不询问传输口令或短语) 
-C:使用压缩(将-C标志传递给ssh,从而打开压缩功能);
-F:指定ssh配置文件;
-i:identity_file 从指定文件中读取传输时使用的密钥文件(例如亚马逊云pem),此参数直接传递给ssh;
-l:指定宽带限制;
-o:指定使用的ssh选项;
-P:指定远程主机的端口号;
-p:保留文件的最后修改时间,最后访问时间和权限模式;
-q:不显示复制进度;
-r:以递归方式复制。
-S program  指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。

scp 命令参数:


源文件:  指定要复制的源文件。
目标文件:目标文件。格式为 user@host:filename(文件名为目标文件的名称)。

scp 命令的实际应用概述:


从本地服务器复制到远程服务器

scp 复制文件,命令格式:

scp local_file remote_username@remote_ip:remote_folder

#或者

scp local_file remote_username@remote_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 复制目录 -r,命令格式:

scp -r local_folder remote_username@remote_ip:remote_folder  

#或者

scp -r local_folder remote_ip:remote_folder  

#第1个指定了用户名,命令执行后需要输入用户密码;  
#第2个没有指定用户名,命令执行后需要输入用户名和密码;

scp 从远程服务器复制到本地服务器

scp root@192.168.120.204:/opt/soft/nginx.tar.gz /opt/soft/

scp -r root@192.168.120.204:/opt/soft/mongodb /opt/soft/

scp 命令实例


scp 以 commandnotfound 用户身份将远程主机 commandnotfound.cn 上的远程文件 /home/commandnotfound/archive.zip 传输到本地工作目录中,并将传输限制为每秒 100 KB

scp -l 100 commandnotfound@commandnotfound.cn:/home/commandnotfound/archive.zip

scp 将远程主机 firsthost.com 上远程目录 /files/file1.zip 中的文件复制到远程主机 secondhost.com 上的远程目录 /archives 中。 系统将提示您分别输入远程帐户 command@firsthost.comnotfound@secondhost.com 的密码。 传输将直接从一个远程主机进行到另一主机。

scp command@firsthost.com:/files/file1.zip notfound@secondhost.com:/archives


scp -3 command@firsthost.com:/files/file1.zip notfound@secondhost.com:/archives
#与上述命令相同,但不是直接从一个远程主机向另一个远程主机传输文件,而是通过本地主机路由传输。

scp 命令扩展阅读:




scp 命令评论