本文以使用scp的例子介绍使用scp命令安全地传输带有参数的文件。
前言
scp命令用于将一台计算机之间的文件和目录复制到另一台计算机,这个实用程序有价值的是它使用ssh来隧道复制(安装与使用Mole在Linux CLI上创建SSH隧道的方法),这意味着数据是加密的,因为它依赖于ssh的安全功能,在开始使用scp命令之前,请确保将接收文件/目录的计算机/主机安装了sshd并正在侦听。
你可以使用ssh密钥或密码验证方式,scp的语法非常简单:
scp [OPTIONS] [files or directories] [user@remotehost]:[directory]
scp的各种选项如下:
-3:两个远程主机之间的副本通过localhost传输,如果没有此选项,则会直接在两个远程主机之间复制数据,请注意,此选项会禁用进度表。
-4:强制scp仅使用IPv4地址。
-6:强制scp仅使用IPv6地址。
-B:选择批处理模式(防止要求密码或密码短语)。
-C:压缩启用,将-C标志传递给ssh(1)以启用压缩。
-c cipher:选择用于加密数据传输的密码,此选项直接传递给ssh(1)。
-F ssh_config:为ssh指定备用的每用户配置文件,此选项直接传递给ssh(1)。
-i identity_file:选择从中读取公钥认证的标识(私钥)的文件,此选项直接传递给ssh(1)。
-l limit:限制使用的带宽,以Kbit/s为单位。
-o ssh_option:可用于以ssh_config(5)中使用的格式将选项传递给ssh,这对于指定没有单独的scp命令行标志的选项很有用。
-P port:指定要在远程主机上连接的端口,请注意,此选项使用大写P编写,因为-p已保留用于保留文件的时间和模式。
-p:保留原始文件的修改时间,访问时间和模式。
-q:安静模式:禁用进度表以及来自ssh(1)的警告和诊断消息。
-r:递归复制整个目录。
-T:禁用严格的文件名检查。
-v:详细模式,导致scp和ssh打印有关其进度的调试消息。
使用scp的例子
指定远程ssh主机使用的默认端口,参数v在这里增加了详细程度:
scp -Pv /home/tech/index.html tech@192.168.20.10:/var/www/html
将目录复制到远程主机:
scp -Pr /home/tech/website/ tech@192.168.20.10:/tmp/
将文件从远程主机复制到本地计算机:
scp tech@192.168.20.10:/tmp/index.html /home/tech/website
使用scp,你可以在两个远程主机之间复制文件:
scp tech1@192.168.20.10:/var/log/messages tech2@192.168.20.30:/tmp/logs/
如果你希望上述远程文件远程传输通过本地计算机,则添加-3参数,如下所示:
scp -3 tech1@192.168.20.10:/var/log/messages tech2@192.168.20.30:/tmp/logs/
如果你希望保留原始文件中的访问时间,修改时间和模式,请使用小p参数:
scp -pv /home/tech/index.html tech@192.168.20.10:/tmp/
scp可以在传输文件时利用ssh的压缩功能:
scp -Cr /home/tech/website/ tech@192.168.20.10:/tmp/ ## Passes the -C flag to ssh to enable compression.
要在使用scp时禁用进度表以及来自ssh的警告和诊断消息,请使用-q参数:
scp -pqr /home/tech/website/ tech@192.168.20.10:/tmp/
结语
scp命令经常能派上用场,特别是远程复制文件,关于将重要数据从一个主机传输到另一个主机,再也不会感到困难了。
相关主题