「scp(1)」- 安全复制(远程文件复制程序)

常用命令

复制目录到远程主机:

scp -r ./src/folder hostname:/tmp/dst/folder

注意事项:
1)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在网络上的主机之间复制文件。 它使用ssh(1)进行数据传输,并使用相同的身份验证以及提供与ssh(1)相同的安全性。 如果需要进行身份验证,scp会要求输入密码或密码短语。

文件名可以包含用户和主机规范,以指示要将文件复制到该主机,或从该主机复制该文件。 可以使用绝对路径名或相对路径名显式本地文件名,以避免scp将包含“:”的文件名视为主机说明符。还允许两个远程主机之间的副本。

命令选项

-1
强制scp使用版本1协议

-2
强制scp使用版本2协议

-3
两个远程主机之间的副本通过本地主机传输。 如果没有此选项,数据将直接在两个远程主机之间复制。 请注意,此选项会禁用进度表。

-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命令行标志”的选项很有用。有关下面列出的选项及其可能值的完整详细信息,请参阅ssh_config(5)。

AddressFamily, BatchMode, BindAddress, CanonicalDomains, CanonicalizeFallbackLocal, CanonicalizeHostname, CanonicalizeMaxDots, CanonicalizePermittedCNAMEs, CertificateFile, ChallengeResponseAuthentication, CheckHostIP, Cipher, Ciphers, Compression, CompressionLevel, ConnectionAttempts, ConnectTimeout, ControlMaster, ControlPath, ControlPersist, GlobalKnownHostsFile, GSSAPIAuthentication, GSSAPIDelegateCredentials, HashKnownHosts, Host, HostbasedAuthentication, HostbasedKeyTypes, HostKeyAlgorithms, HostKeyAlias, HostName, IdentitiesOnly, IdentityAgent, IdentityFile, IPQoS, KbdInteractiveAuthentication, KbdInteractiveDevices, KexAlgorithms, LogLevel, MACs, NoHostAuthenticationForLocalhost, NumberOfPasswordPrompts, PasswordAuthentication, PKCS11Provider, Port, PreferredAuthentications, Protocol, ProxyCommand, ProxyJump, PubkeyAcceptedKeyTypes, PubkeyAuthentication, RekeyLimit, RhostsRSAAuthentication, RSAAuthentication, SendEnv, ServerAliveInterval, ServerAliveCountMax, StrictHostKeyChecking, TCPKeepAlive, UpdateHostKeys, UsePrivilegedPort, User, UserKnownHostsFile, VerifyHostKeyDNS

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

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

-q
安静模式:禁用进度表以及来自ssh(1)的警告和诊断消息。

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

-S program
用于加密连接的程序名称。 该程序必须能够理解ssh(1)选项。

-v
详细模式。 导致scp和ssh(1)打印有关其进度的调试消息。 这有助于调试连接,身份验证和配置问题。

附加说明

退出状态

0 成功

>0 发生错误

相关手册

sftp(1), ssh(1), ssh-add(1), ssh-agent(1), ssh-keygen(1), ssh_config(5), sshd(8)

参考文献

man 1 scp, Version 17.4p1-10
bash – Copying the newest files – Unix & Linux Stack Exchange