博客 / Linux/ SCP 命令完全指南:安全复制文件与目录

SCP 命令完全指南:安全复制文件与目录

SCP 命令完全指南:安全复制文件与目录

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/"

发表评论

您的邮箱不会公开。必填项已用 * 标注。