SCP 命令详解

SCP(Secure Copy)是一个用于在本地和远程主机之间进行安全文件传输的命令行工具。它使用SSH协议进行加密和身份验证,可以在不同的操作系统之间传输文件。

SCP命令的基本语法如下:

scp [选项] [源文件] [目标文件]

常用的选项包括:

  • -r:递归复制整个目录。
  • -p:保留源文件的修改时间、访问时间和权限。
  • -q:安静模式,不显示进度信息。
  • -P <port>:指定远程主机上的SSH端口号,默认为22。
  • -i <identity_file>:指定身份验证所使用的私钥文件。

源文件和目标文件的格式可以是:

  • 本地文件路径:/path/to/local/file
  • 远程主机上的文件路径:user@host:/path/to/remote/file
  • 远程主机上的文件路径(使用非默认SSH端口号):user@host -p <port>:/path/to/remote/file

以下是一些常见的用法示例:

  1. 从本地复制文件到远程主机:
    scp /path/to/local/file user@host:/path/to/remote/file
    
  2. 从远程主机复制文件到本地:
    scp user@host:/path/to/remote/file /path/to/local/file
    
  3. 递归复制整个目录:
    scp -r /path/to/local/directory user@host:/path/to/remote/directory
    
  4. 从远程主机复制整个目录到本地:
    scp -r user@host:/path/to/remote/directory /path/to/local/directory
    

请注意,SCP命令是单向的,即只能从源文件复制到目标文件,不能同时复制到多个目标。如果需要同时复制到多个目标,可以考虑使用rsync命令。

rsync是一个强大的文件同步和备份工具,它可以在本地和远程主机之间进行文件传输,并且只传输已更改的部分,从而提高传输效率。

rsync命令的基本语法如下:

rsync [选项] [源路径] [目标路径]

常用的选项包括:

  • -a, --archive:归档模式,保留文件的所有属性,递归复制目录。
  • -r, --recursive:递归复制目录。
  • -v, --verbose:详细输出。
  • -z, --compress:压缩传输数据。
  • -P:显示传输进度和保留部分文件。
  • -e, --rsh=COMMAND:指定远程shell程序,例如ssh。

源路径和目标路径的格式可以是:

  • 本地路径:/path/to/local/file/path/to/local/directory
  • 远程主机路径:user@host:/path/to/remote/fileuser@host:/path/to/remote/directory

以下是一些常见的用法示例:

  1. 从本地复制文件到远程主机:
    rsync /path/to/local/file user@host:/path/to/remote/file
    
  2. 从远程主机复制文件到本地:
    rsync user@host:/path/to/remote/file /path/to/local/file
    
  3. 递归复制整个目录:
    rsync -r /path/to/local/directory user@host:/path/to/remote/directory
    
  4. 从远程主机复制整个目录到本地:
    rsync -r user@host:/path/to/remote/directory /path/to/local/directory
    
  5. 使用SSH密钥进行远程传输:
    rsync -e "ssh -i /path/to/private/key" /path/to/local/file user@host:/path/to/remote/file
    

rsync还支持其他高级功能,如过滤规则、增量备份等。你可以使用man rsync命令查看rsync的完整文档,了解更多选项和用法。