菜鸟-创作你的创作

Linux命令:文件传输命令scp详解

scp(Secure Copy Protocol)是一个用于在本地计算机与远程计算机之间或两个远程计算机之间安全地复制文件和目录的命令行工具。它基于 SSH(Secure Shell)协议,提供加密和认证,因此比传统的 rcpftp 更安全。scp 通常用于 Linux、Unix 和类 Unix 系统,如 macOS 和 WSL 中。

1. scp 基本语法

scp [OPTION] <source> <destination>

2. scp 传输文件的几种常见格式

  1. 从本地到远程scp /path/to/local/file username@remote:/path/to/remote/directory
    • 将本地的文件 /path/to/local/file 复制到远程服务器上的 /path/to/remote/directory 目录中。
    • username:远程服务器的用户名。
    • remote:远程服务器的主机名或 IP 地址。
  2. 从远程到本地scp username@remote:/path/to/remote/file /path/to/local/directory
    • 将远程服务器的文件 /path/to/remote/file 复制到本地计算机的 /path/to/local/directory 目录中。
  3. 从远程到远程scp username@remote1:/path/to/remote/file username@remote2:/path/to/remote/directory
    • 将远程主机 remote1 上的文件 /path/to/remote/file 复制到远程主机 remote2 上的 /path/to/remote/directory 目录中。
  4. 复制整个目录
    • 使用 -r 选项递归复制目录。
    scp -r /path/to/local/directory username@remote:/path/to/remote/directory
    • 将本地的整个目录 /path/to/local/directory 复制到远程服务器上的指定目录。

3. 常见选项

4. scp 的工作原理

5. 示例

  1. 将本地文件上传到远程服务器scp /home/user/test.txt username@192.168.1.100:/home/username/documents/
    • 这个命令会将本地的 test.txt 文件上传到远程服务器 192.168.1.100/home/username/documents/ 目录中。
  2. 将远程文件下载到本地scp username@192.168.1.100:/home/username/test.txt /home/user/downloads/
    • 这个命令会将远程服务器 192.168.1.100 上的 test.txt 文件下载到本地 /home/user/downloads/ 目录。
  3. 使用 SSH 密钥传输文件scp -i /path/to/private_key /path/to/local/file username@remote:/path/to/remote/file
    • 这个命令会使用指定的 SSH 密钥 /path/to/private_key 连接到远程服务器,并上传文件。
  4. 递归复制目录scp -r /local/directory username@remote:/remote/directory
    • 该命令将本地目录 /local/directory 递归地复制到远程服务器上的 /remote/directory 目录。
  5. 通过指定端口传输文件scp -P 2222 /path/to/local/file username@remote:/path/to/remote/file
    • 如果远程服务器的 SSH 服务运行在非默认端口(例如 2222),可以使用 -P 选项指定端口号。

6. 安全性考虑


7. scprsync 比较

虽然 scp 非常方便,但在某些场景下,rsync 是一个更优秀的选择:

对于大规模文件同步或频繁传输的情况,rsync 更为高效。


总结

scp 是一个安全、简单的文件传输工具,适用于大多数基于 SSH 的文件传输需求。它的优点是使用方便、支持加密,但对于大文件或高效传输,rsync 可能是更好的选择。

退出移动版