Linux命令--scp远程拷贝命令使用
scp使用
scp
命令是基于 SSH 协议的远程文件复制命令,Linux系统和Windows系统都支持此命令,支持跨平台文件传输(Linux/macOS/Windows)通用。
安装命令
正常的发行版本都会自带此命令,如果没有,可以使用以下命令安装,linux 系统下安装:
1 | sudo apt-get install openssh-server |
mac和windows10以上都预装,如果没有可以通过安装git bash来解决。
基本用法
- 从本地复制文件到远程主机:
1
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music
- 从远程主机复制文件到本地:
1
scp root@www.runoob.com:/home/root/others/music/1.mp3 /home/space/music/
- 复制整个目录(递归):
1
2scp -rpCv mydir/ user@remote:/home/user/
# -r 递归 -p 保留属性 -C 压缩 -v 显示详情
常用选项
选项 | 说明 |
---|---|
-1 | 强制使用 SSH 协议版本 1(已过时,不推荐使用) |
-2 | 强制使用 SSH 协议版本 2(默认,推荐) |
-4 | 只使用 IPv4 地址 |
-6 | 只使用 IPv6 地址 |
-B | 批处理模式,不提示密码输入(适合脚本使用,需配合密钥登录) |
-C | 启用压缩,提高传输效率(适用于慢速连接) |
-p | 保留文件的修改时间、访问时间和权限信息 |
-q | 静默模式,不显示进度信息 |
-r | 递归复制目录及其内容 |
-v | 显示详细过程(调试连接用) |
-c cipher | 指定加密算法(如 aes128-ctr),传给 ssh |
-F ssh_config | 指定 SSH 配置文件 |
-i identity_file | 指定私钥文件,进行密钥验证 |
-l limit | 限制带宽(单位为 Kbit/s),如:-l 800 表示限速 100 KB/s |
-o ssh_option | 传递 SSH 配置选项,如 -o StrictHostKeyChecking=no |
-P port | 指定远程主机端口(注意是大写的 P) |
-S program | 指定用于加密的外部程序,需支持 SSH 选项(高级用法) |
示例:
1、指定端口进行连接:
1 | scp -P 2222 file.txt user@remote:/home/user/ |
2、限速传输大文件(主要防止流量影响生产)
1 | scp -l 5000 bigfile.iso user@remote:/data/ |
3、排除特定文件(需结合SSH管道)
1 | # 传输log目录但排除*.tmp文件 |
4、代理跳转传输(通过堡垒机)
1 | # 通过跳板机传输到内网服务器 |
常见问题
1、确保当前用户拥有远程主机的登录权限,否则会提示权限不足。
2、远程拷贝的文件需要有读权限,否则会提示权限不足。