scp
(secure copy)是一个基于 SSH (Secure Shell) 协议的命令行工具,用于在本地和远程主机之间安全地复制文件。它利用 SSH 提供的加密和身份验证功能,确保在传输过程中数据的安全性。
从本地复制到远程服务器:
scp /path/to/localfile username@remotehost:/path/to/remotefile
这个命令将本地文件 localfile
复制到远程主机 remotehost
上的指定位置。
从远程服务器复制到本地:
scp username@remotehost:/path/to/remotefile /path/to/localfile
这个命令将远程主机上的文件 remotefile
复制到本地。
指定使用的密钥文件:
scp -i /path/to/private_key /path/to/localfile username@remotehost:/path/to/remotefile
使用 -i
选项指定私钥文件,用于身份验证。
使用不同的端口:
scp -P 2222 /path/to/localfile username@remotehost:/path/to/remotefile
使用 -P
(注意是大写的 'P')指定非默认的 SSH 端口。
递归复制整个目录:
scp -r /path/to/localdir username@remotehost:/path/to/remotedir
使用 -r
递归地复制目录及其内容。
复制并保留文件属性:
scp -p /path/to/localfile username@remotehost:/path/to/remotefile
使用 -p
保留原始文件的修改时间和访问权限。
限制带宽使用:
scp -l 1024 /path/to/localfile username@remotehost:/path/to/remotefile
使用 -l
限制带宽使用,单位为 Kbit/s。
通过中间主机复制文件: 首先,使用 SSH 创建到中间主机的隧道:
ssh -L localPort:remotehost:remotePort intermediatehost
然后,通过该隧道复制文件:
scp -P localPort /path/to/localfile username@localhost:/path/to/remotefile
复制文件到多个远程位置: 这需要在 shell 中使用循环,例如:
for host in host1 host2 host3; do scp /path/to/localfile username@$host:/path/to/remotefile done
这将文件复制到多个主机。
从远程服务器复制文件到另一个远程服务器:
scp username1@remotehost1:/path/to/file username2@remotehost2:/path/to/destination
这需要两台远程主机间能够进行 SSH 通信。
使用 scp
在脚本中自动化文件传输: scp
常常用于脚本中以自动化文件备份和迁移任务。
结合 find
和 xargs
进行批量复制: 使用 find
命令查找特定类型的文件并使用 scp
进行复制:
find /path/to/source -name "*.txt" -print0 | xargs -0 -I {} scp {} username@remotehost:/path/to/destination
scp
是一个非常强大的工具,用于在远程主机之间安全地传输文件。掌握它的使用,尤其是在网络管理和自动化脚本编写中,非常有用。由于它依赖于 SSH,确保 SSH 连接是安全的对于保护数据安全至关重要。