常见命令--SCP
scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。
语法
scp(选项)(参数)
选项
-1:使用ssh协议版本1;
-2:使用ssh协议版本2;
-4:使用ipv4;
-6:使用ipv6;
-B:以批处理模式运行;
-C:使用压缩;
-F:指定ssh配置文件;
-l:指定宽带限制;
-o:指定使用的ssh选项;
-P:指定远程主机的端口号;
-p:保留文件的最后修改时间,最后访问时间和权限模式;
-q:不显示复制进度;
-r:以递归方式复制。
参数
源文件:指定要复制的源文件。
目标文件:目标文件。格式为user@host:filename(文件名为目标文件的名称)。
实例
从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。
从远处复制文件到本地目录
scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
从10.10.10.10机器上的/opt/soft/的目录中下载nginx-0.5.38.tar.gz 文件到本地/opt/soft/目录中。
从远处复制到本地
scp -r root@10.10.10.10:/opt/soft/mongodb /opt/soft/
从10.10.10.10机器上的/opt/soft/中下载mongodb目录到本地的/opt/soft/目录来。
上传本地文件到远程机器指定目录
scp /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest
复制本地/opt/soft/目录下的文件nginx-0.5.38.tar.gz到远程机器10.10.10.10的opt/soft/scptest目录。
上传本地目录到远程机器指定目录
scp -r /opt/soft/mongodb root@10.10.10.10:/opt/soft/scptest
上传本地目录/opt/soft/mongodb到远程机器10.10.10.10上/opt/soft/scptest的目录中去。
常用选项-案例
SCP(Secure Copy)命令在Linux和类Unix系统中用于在本地主机和远程主机之间安全地复制文件和目录。以下是一些常见的SCP选项:
1. **基本复制选项:**
- `-r` 或 `--recursive`:递归复制整个目录及其子目录。
- `-p` 或 `--preserve`:保留原文件的修改时间和模式(权限)。
2. **安全和连接选项:**
- `-q` 或 `--quiet`:静默模式,减少输出信息。
- `-C` 或 `--compression`:启用压缩,减小网络传输的数据量。
- `-P` 或 `--port`:指定远程主机的SSH端口号(默认是22)。
- `-i` 或 `--identity-file`:指定私钥文件用于身份验证。
3. **身份和权限选项:**
- `-o` 或 `--option`:可以跟随任意的ssh选项,例如 `-o User=user` 指定远程用户名。
- `-l` 或 `--limit`(在某些版本中):限制带宽使用。
- `-S` 或 `--ssh-option`:向SSH客户端传递选项。
4. **其他选项:**
- `-v` 或 `--verbose`:详细模式,显示更多信息。
- `-4` 或 `-6`:强制使用IPv4或IPv6。
- `-B` 或 `--batch`:禁用询问,用于非交互式环境。
示例用法:
```shell
# 将本地文件复制到远程主机
scp -i private_key_file local_file user@remote_host:remote_directory
# 递归复制本地目录到远程主机
scp -r -P 2222 local_directory user@remote_host:destination_directory
# 使用压缩复制大文件
scp -C big_file user@server.example.com:path/to/destination
# 静默模式复制文件
scp -q local_file remote_user@remote_host:/path/to/remote_file
```
请注意,每次使用scp时都需要确保已有正确的SSH访问权限,即要么通过公钥认证无需密码,要么在命令执行过程中输入密码。