SCP 命令格式与基本用法
SCP(Secure Copy Protocol)命令用于在本地主机与远程主机之间,或两台远程主机之间,通过 SSH 协议安全地复制文件和目录。其基本命令格式如下:
scp [选项] [源路径] [目标路径]
从本地复制文件到远程主机
将本地文件 /home/abc.tar.gz 复制到远程主机 123.123.123.123 的 /root/ 目录下,并使用非默认 SSH 端口 2233:
scp -P 2233 /home/abc.tar.gz root@123.123.123.123:/root/abc.tar.gz
说明:
-P 2233:指定 SSH 端口号为 2233。如果远程主机使用默认的 22 端口,则可省略此参数。root@123.123.123.123:/root/abc.tar.gz:指定远程目标。格式为用户名@主机:路径。
从远程主机复制文件到本地
从远程主机 10.23.185.16 的 /remote/ 目录下复制文件 test.tar.gz 到本地 /local/ 目录,并保留文件的原始属性(修改时间、访问时间、权限),同时可重命名:
scp -P 2223 -p root@10.23.185.16:/remote/test.tar.gz /local/test.tar.gz
说明:
-p:保留源文件的修改时间、访问时间和访问权限。-P 2223:指定 SSH 端口(注意是大写P)。- 目标路径
/local/test.tar.gz可以自定义,即复制时可重命名文件。
SCP 命令常用选项详解
以下为 SCP 命令的常用选项及其说明:
-1:强制使用 SSH1 协议(已过时,建议使用 SSH2)。-2:强制使用 SSH2 协议(现代系统的默认选择)。-4:强制仅使用 IPv4 地址。-6:强制仅使用 IPv6 地址。-B:使用批处理模式,传输过程中不询问密码或口令。-C:启用压缩,将-C标志传递给 SSH 以提升大文件传输效率。-p:保留源文件的修改时间、访问时间和访问权限。-q:静默模式,不显示传输进度条。-r:递归复制整个目录及其内容。-v:详细模式,显示整个传输过程的调试信息,用于排查连接或配置问题。-c cipher:指定加密算法(如aes256-ctr),此选项直接传递给 SSH。-F ssh_config:指定一个替代的 SSH 配置文件路径。-i identity_file:指定用于身份验证的私钥文件路径(如~/.ssh/id_rsa)。-l limit:限制传输带宽,单位为 Kbit/s(例如-l 800限制为 800 Kbit/s)。-o ssh_option:以 SSH 配置格式传递其他选项(例如-o StrictHostKeyChecking=no)。-P port:注意是大写 P,指定 SSH 连接端口号(默认是 22)。-S program:指定用于加密连接的程序路径,该程序必须能理解 SSH 选项。
使用技巧与注意事项
1. 端口指定:如果远程 SSH 服务运行在非默认端口,必须使用 -P 参数(大写)指定。小写 -p 用于保留文件属性,两者功能不同,请注意区分。
2. 递归复制目录:复制目录时,必须使用 -r 选项,例如:
scp -r /local/directory/ user@remote-host:/remote/path/
3. 使用密钥认证:为提高安全性和自动化程度,建议配置 SSH 密钥对,并使用 -i 选项指定私钥:
scp -i ~/.ssh/my_key.pem file.txt user@host:/path/
4. 带宽限制:在带宽受限或需要避免影响其他服务时,可使用 -l 选项限制传输速度。
5. 路径中的特殊字符:如果文件或目录名包含空格等特殊字符,请使用引号将路径括起来,例如:scp "local file.txt" user@host:"/remote path/"。