33. 常用shell之 scp - 安全复制文件 的用法和衍生用法

发布时间:2023年12月21日

scp(secure copy)是一个基于 SSH (Secure Shell) 协议的命令行工具,用于在本地和远程主机之间安全地复制文件。它利用 SSH 提供的加密和身份验证功能,确保在传输过程中数据的安全性。

基本用法

  1. 从本地复制到远程服务器:

    scp /path/to/localfile username@remotehost:/path/to/remotefile

    这个命令将本地文件 localfile 复制到远程主机 remotehost 上的指定位置。

  2. 从远程服务器复制到本地:

    scp username@remotehost:/path/to/remotefile /path/to/localfile

    这个命令将远程主机上的文件 remotefile 复制到本地。

  3. 指定使用的密钥文件:

    scp -i /path/to/private_key /path/to/localfile username@remotehost:/path/to/remotefile

    使用 -i 选项指定私钥文件,用于身份验证。

  4. 使用不同的端口:

    scp -P 2222 /path/to/localfile username@remotehost:/path/to/remotefile

    使用 -P(注意是大写的 'P')指定非默认的 SSH 端口。

  5. 递归复制整个目录:

    scp -r /path/to/localdir username@remotehost:/path/to/remotedir

    使用 -r 递归地复制目录及其内容。

高级用法

  1. 复制并保留文件属性:

    scp -p /path/to/localfile username@remotehost:/path/to/remotefile

    使用 -p 保留原始文件的修改时间和访问权限。

  2. 限制带宽使用:

    scp -l 1024 /path/to/localfile username@remotehost:/path/to/remotefile

    使用 -l 限制带宽使用,单位为 Kbit/s。

  3. 通过中间主机复制文件: 首先,使用 SSH 创建到中间主机的隧道:

    ssh -L localPort:remotehost:remotePort intermediatehost

    然后,通过该隧道复制文件:

    scp -P localPort /path/to/localfile username@localhost:/path/to/remotefile

衍生用法

  1. 复制文件到多个远程位置: 这需要在 shell 中使用循环,例如:

    for host in host1 host2 host3; do scp /path/to/localfile username@$host:/path/to/remotefile done

    这将文件复制到多个主机。

  2. 从远程服务器复制文件到另一个远程服务器:

scp username1@remotehost1:/path/to/file username2@remotehost2:/path/to/destination

这需要两台远程主机间能够进行 SSH 通信。

  1. 使用 scp 在脚本中自动化文件传输: scp 常常用于脚本中以自动化文件备份和迁移任务。

  2. 结合 findxargs 进行批量复制: 使用 find 命令查找特定类型的文件并使用 scp 进行复制:

find /path/to/source -name "*.txt" -print0 | xargs -0 -I {} scp {} username@remotehost:/path/to/destination

scp 是一个非常强大的工具,用于在远程主机之间安全地传输文件。掌握它的使用,尤其是在网络管理和自动化脚本编写中,非常有用。由于它依赖于 SSH,确保 SSH 连接是安全的对于保护数据安全至关重要。

文章来源:https://blog.csdn.net/WQY867047910/article/details/135085705
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。