摘要
将文件从一台服务器上传到另一台服务器上用到了scp命令。
scp
(Secure Copy Protocol)命令用于在本地和远程主机之间或两个远程主机之间安全地复制文件或目录。它基于SSH协议,因此文件传输过程中会进行加密。以下是scp
命令的详细解释及具体示例:
一、基本语法
scp [options] source destination
source
:源文件或目录的路径,可以是本地路径或者远程路径。destination
:目标文件或目录的路径,也可以是本地路径或远程路径。
二、常用选项
-r
:递归复制整个目录及其内容。-P port
:指定远程主机的SSH端口(注意是大写的-P
),默认端口是22。-i identity_file
:指定私钥文件用于身份验证。-C
:启用压缩,适用于大文件传输,可以减少带宽占用。-p
:保留文件的修改时间、访问时间和权限。-l bandwidth_limit
:限制传输的带宽,单位为Kbit/s。-v
:启用详细输出,显示传输进度和调试信息。
三、具体示例
- 从本地复制文件到远程主机
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/
- 从远程主机复制文件到本地
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/
- 复制本地目录及其内容到远程主机
使用-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/
- 复制远程主机上的目录到本地
同样使用-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/
- 指定非默认SSH端口
如果远程主机使用非默认的SSH端口(例如2222),可以使用-P
选项指定端口号:
scp -P port /path/to/local/file username@remote_host:/path/to/remote/destination
示例:
scp -P 2222 /etc/abc.sh root@192.168.100.20:/root/
- 限制传输带宽
使用-l
选项限制传输的带宽(以Kbit/s为单位):
scp -l bandwidth_limit /path/to/local/file username@remote_host:/path/to/remote/destination
示例:限制带宽为500Kbit/s:
scp -l 500 /etc/abc.sh root@192.168.100.20:/root/
- 启用详细输出
使用-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/
- 使用私钥进行身份验证
如果远程主机要求使用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/
- 保留文件权限和时间
使用-p
选项保留文件的修改时间、访问时间和权限:
scp -p /path/to/local/file username@remote_host:/path/to/remote/destination
示例:
scp -p /home/user/music.mp3 user@192.168.1.100:/home/user/music/
- 使用压缩
使用-C
选项在复制过程中压缩文件或目录,可以减少网络传输时间:
scp -C /path/to/local/file username@remote_host:/path/to/remote/destination
示例:
scp -C /home/user/largefile.zip user@192.168.1.100:/home/user/backup/
四、注意事项
- 确保远程主机已经启用了SSH服务。
- 如果目标目录在远程主机上不存在,
scp
命令会自动创建目录。 - 默认情况下,
scp
会要求你输入远程主机的密码(除非使用密钥认证)。 scp
命令使用的是SSH协议,因此其安全性依赖于SSH的配置。