scp 的功能是安全地进行文件复制。
用法
scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target
scp 在网络上的主机之间复制文件。它使用 ssh 进行数据传输,并使用与 ssh 相同的身份验证并提供相同的安全性。如果需要身份验证,scp 将要求输入密码或密码短语。源和目标可以指定为本地路径名、具有 [user@]host:[path] 形式的可选路径的远程主机或 scp://[user@]host[:port] 形式的 URI [/path]。可以使用绝对或相对路径名使本地文件名显式,以避免 scp 将包含“:”的文件名视为主机说明符。在两个远程主机之间进行复制时,如果使用 URI 格式,则只能在使用 -3 选项的情况下在目标上指定端口。
选项
-3
两个远程主机之间的副本通过本地主机传输。如果没有此选项,数据将直接在两 个远程主机之间复制。请注意,此选项会禁用进度表并为第二台主机选择批处理 模式,因为 scp 无法要求两台主机的密码或密码短语。
-4
强制 scp 只能使用 IPV4 地址。
-6
强制 scp 只能使用 IPV6 地址。
-B
选择批处理模式(阻止要求输入密码或密码短语)。
-C
允许压缩。将 -C 传给 ssh 来允许压缩。
-c cipher
选择用于加密数据传输的 cipher。 此选项直接传递给 ssh。
-F ssh_config
为 ssh 指定替代的每个用户的配置文件。
-i identity_file
选择从中读取用于公钥认证的身份(私钥)的文件。这个选项直接传给ssh。
-J destination
通过首先与 destination 描述的跳转主机建立 scp 连接,然后从那里建立到最终 destination 的 TCP 转发,连接到目标主机。可以用逗号分隔指定多个跳转。这 是指定 ProxyJump 配置指令的快捷方式。 这个选项直接传给ssh。
-l limit
限制使用带宽,单位是 Kbit/s。
-o ssh_option
可用于以 ssh_config 中使用的格式将选项传递给 ssh。这对于指定没有单独 scp 命令行标志的选项很有用。
-P port
指定要连接到远程主机上的端口。
-p
保留原始文件的修改时间、访问时间和模式。
-q
安静模式:禁用进度表以及来自 ssh 的警告和诊断消息。
-r
递归复制整个目录。请注意,scp 遵循树遍历中遇到的符号链接。
-S program
用于加密连接的程序名称。该程序必须了解 ssh 选项。
-T
禁用严格的文件名检查。默认情况下,将文件从远程主机复制到本地目录时,scp 会检查接收到的文件名是否与命令行上请求的文件名匹配,以防止远程端发送意 外或不需要的文件。由于各种操作系统和 shell 解释文件名通配符的方式不同,这 些检查可能会导致所需文件被拒绝。此选项以完全信任服务器不会发送意外文件 名为代价禁用这些检查。
-v
详细模式。使 scp 和 ssh 打印有关其进度的调试消息。这有助于调试连接、身份 验证和配置问题。
使用示例:
scp local_file remote_name@remote_ip:remote_dir
这个命令的功能是将源文件复制到目的目录:其中local_file是源文件名,remote_name是目的端的用户名,如果是root也可忽略,remote_dir是目的端的目录名。
scp local_file remote_name@remote_ip:remote_file
这个命令的功能是将源文件复制为目的文件:其中remote_file是目的端的文件名,其他与上边的命令一致。
scp -r local_dir remote_name@remote_ip:remote_dir
这个命令的功能是将源目录复制到目的端:注意一定要加 -r 选项。其中local_dir是源目录名,其他与上边命令一致。
如果是反方向复制,只需把两个参数顺序调换即可:
scp remote_name@remote_ip:remote_dir local_file
scp remote_name@remote_ip:remote_file local_file
scp -r remote_name@remote_ip:remote_dir local_dir