scp命令详解
前言
scp
(Secure Copy)命令用于在本地和远程主机之间或两个远程主机之间安全地复制文件或目录。它基于 SSH 协议,因此文件传输过程中会进行加密。下面是 scp
命令的基本语法及常见用法,帮助你更好地理解如何使用它。
一. 基本语法
scp [options] source destination
source
是源文件或目录的路径,可以是本地路径或者远程路径。destination
是目标文件或目录的路径,也可以是本地路径或远程路径。
二. 常见用法示例
1. 从本地复制文件到远程主机
scp /path/to/local/file username@remote_host:/path/to/remote/destination
例如,将本地的
abc.sh
文件复制到远程主机192.168.100.20
的/root
目录:scp /etc/abc.sh root@192.168.100.20:/root/
/etc/abc.sh
:本地文件路径。root@192.168.100.20:/root/
:远程主机和目标目录。2. 从远程主机复制文件到本地
scp username@remote_host:/path/to/remote/file /path/to/local/destination
例如,从远程主机
192.168.100.20
上的/root/abc.sh
文件复制到本地的/home/user/
目录:scp root@192.168.100.20:/root/abc.sh /home/user/
3. 从本地复制目录到远程主机
复制本地目录及其内容到远程主机,可以使用
-r
选项(递归复制目录)。scp -r /path/to/local/directory username@remote_host:/path/to/remote/destination
例如,将本地的
/home/user/mydir
目录复制到远程主机/root/
目录:scp -r /home/user/mydir root@192.168.100.20:/root/
4. 从远程主机复制目录到本地
同样地,使用
-r
选项可以将远程主机上的目录复制到本地。scp -r username@remote_host:/path/to/remote/directory /path/to/local/destination
例如,将远程主机
/root/mydir
目录复制到本地/home/user/
目录:scp -r root@192.168.100.20:/root/mydir /home/user/
5. 指定 SSH 端口
如果远程主机使用非默认的 SSH 端口(默认是 22),可以使用
-P
选项指定端口号。scp -P port /path/to/local/file username@remote_host:/path/to/remote/destination
例如,远程主机使用
2222
端口:scp -P 2222 /etc/abc.sh root@192.168.100.20:/root/
6. 限制传输带宽
scp
命令允许你通过-l
选项来限制传输的带宽(以 Kbit/s 为单位)。这在带宽有限时很有用。scp -l bandwidth_limit /path/to/local/file username@remote_host:/path/to/remote/destination
例如,限制带宽为 500 Kbit/s:
scp -l 500 /etc/abc.sh root@192.168.100.20:/root/
7. 显示传输进度
使用
-v
选项可以启用详细输出,显示传输进度和调试信息。传输过程中会显示每个文件的传输速度和剩余时间。scp -v /path/to/local/file username@remote_host:/path/to/remote/destination
例如:
scp -v /etc/abc.sh root@192.168.100.20:/root/
8. 使用私钥进行身份验证
如果远程主机要求使用 SSH 密钥进行身份验证,可以通过
-i
选项指定私钥文件。scp -i /path/to/private_key /path/to/local/file username@remote_host:/path/to/remote/destination
例如,使用
/home/user/.ssh/id_rsa
密钥文件:scp -i /home/user/.ssh/id_rsa /etc/abc.sh root@192.168.100.20:/root/
三. 常见选项
-r
:递归复制整个目录。-P
:指定 SSH 端口号(注意是大写-P
)。-i
:指定 SSH 私钥文件。-v
:启用详细模式,显示调试信息。-l
:限制带宽,单位为 Kbit/s。-C
:启用压缩,适用于大文件传输,减少带宽占用。
四. 示例汇总
本地文件到远程主机
scp /etc/abc.sh root@192.168.100.20:/root/
远程文件到本地
scp root@192.168.100.20:/root/abc.sh /home/user/
本地目录到远程主机
scp -r /home/user/mydir root@192.168.100.20:/root/
远程目录到本地
scp -r root@192.168.100.20:/root/mydir /home/user/
指定非默认端口
scp -P 2222 /etc/abc.sh root@192.168.100.20:/root/
使用私钥进行身份验证
scp -i /home/user/.ssh/id_rsa /etc/abc.sh root@192.168.100.20:/root/
限制带宽
scp -l 500 /etc/abc.sh root@192.168.100.20:/root/
启用详细输出
scp -v /etc/abc.sh root@192.168.100.20:/root/
五. 注意事项
scp
使用的是 SSH 协议,确保远程主机已经启用了 SSH 服务。- 如果目标目录在远程主机上不存在,
scp
命令会自动创建目录。- 默认情况下,
scp
会要求你输入远程主机的密码(除非使用密钥认证)。