scp
(Secure Copy Protocol)是一个用于在本地主机和远程主机之间安全地复制文件或目录的命令。它使用 SSH(Secure Shell)协议来进行安全的文件传输。以下是 scp
命令的基本用法和详解:
scp [选项] [源文件或目录] [目标主机:目标路径]
[选项]
: scp
支持多种选项,用于设置不同的参数,例如 -r
用于递归复制目录,-p
用于保留文件的权限等。[源文件或目录]
: 要复制的本地文件或目录路径。[目标主机:目标路径]
: 目标主机和目标路径。如果省略了目标主机,则默认为本地主机。目标路径可以是相对路径或绝对路径。-r
: 递归地复制整个目录。-P
: 指定非标准 SSH 端口。-p
: 保留文件的修改时间、访问时间和权限。-i
: 指定用于身份验证的密钥文件。scp localfile username@remote:/path/to/destination
scp username@remote:/path/to/file /local/path
scp -r localdir username@remote:/path/to/destination
scp -P 2222 localfile username@remote:/path/to/destination
scp -p localfile username@remote:/path/to/destination
scp -i keyfile.pem localfile username@remote:/path/to/destination
scp
使用 SSH 协议进行安全传输,因此可以通过 SSH 密钥对来进行身份验证,而不必输入密码。确保公钥已经被添加到目标主机的 ~/.ssh/authorized_keys
文件中。
scp
将尊重目标文件的权限设置。确保目标路径具有适当的写入权限。-r
选项进行递归复制目录时,确保目标路径存在。-P
选项指定端口号。-i
选项指定用于身份验证的密钥文件。有时候,需要通过一个跳板主机来连接目标主机。可以通过 -J
选项指定跳板主机:
scp -J jumpuser@jumphost:jumpfile user@remote:/path/to/destination
可以使用 -l
选项限制传输的带宽,例如限制为 100kbps:
scp -l 100 localfile username@remote:/path/to/destination
如果有多个 SSH 配置文件,可以使用 -F
选项指定配置文件路径:
scp -F /path/to/ssh/config localfile username@remote:/path/to/destination
使用 -v
选项显示详细信息,而 -q
选项则关闭输出。可以通过 --progress
选项显示传输进度:
scp --progress localfile username@remote:/path/to/destination
scp
支持通配符,可以使用通配符来传输多个文件:
scp localdir/*.txt username@remote:/path/to/destination
通过 -C
选项使用压缩传输,可以减少网络传输时间:
scp -C localfile username@remote:/path/to/destination
如果通过 SOCKS 代理跳板主机,可以使用 -o
选项指定 ProxyJump
选项:
scp -o ProxyJump=proxyuser@proxyhost:proxyport localfile username@remote:/path/to/destination
scp
提供了许多选项和功能,可以根据实际需求进行灵活配置。无论是简单的文件传输还是复杂的跳板主机、限制带宽、显示进度等高级用法,scp
都是一个强大而实用的工具。详细的选项和用法可以查阅 scp
的 man 手册(man scp
)。