先唠两句
大家好啊,我是阿垚。
欢迎来到《每日一命令》第08期。
上期聊了ssh------远程登录神器。今天聊一个基于ssh的文件传输工具:
scp
你是不是还在用rsync?或者用rz/sz?其实scp是最简单、最直接的远程文件复制命令。(。•ᴗ•。)
scp是什么?
scp = Secure Copy,基于ssh协议的安全文件复制。
特点:加密传输、语法类似cp、无需额外配置(有ssh就能用)。
最常用的5种姿势
1. 本地复制到远程
bash
scp /local/file.txt user@remote:/remote/path/
2. 远程复制到本地
bash
scp user@remote:/remote/file.txt /local/path/
3. 复制目录(递归)
bash
scp -r /local/dir user@remote:/remote/path/
-r 递归复制整个目录。
4. 指定端口
bash
scp -P 2222 file.txt user@remote:/path/
注意:scp的端口参数是大写P ,ssh是小写p。
5. 保留文件属性
bash
scp -p file.txt user@remote:/path/
-p 保留修改时间、权限等属性。
进阶技巧
限速传输
bash
scp -l 8192 largefile.zip user@remote:/path/
-l 限制带宽,单位是Kbit/s(8192=1MB/s)。
使用跳板机
bash
scp -o ProxyJump=jumpuser@jump_host file.txt targetuser@target_host:/path/
从多个主机收集文件
bash
for host in host1 host2 host3; do
scp user@$host:/var/log/app.log ./logs/
done
真实场景
场景1:上传配置文件到多台服务器
bash
for ip in 192.168.1.{1..10}; do
scp nginx.conf root@$ip:/etc/nginx/
done
场景2:从服务器下载数据库备份
bash
scp -C root@db-server:/backup/db.sql.gz .
-C 开启压缩,适合大文件。
场景3:公网传输大文件
bash
scp -l 4096 -C backup.tar.gz user@remote:/backup/
限速+压缩,避免占满带宽影响业务。
常用参数速查
| 参数 | 含义 | 使用场景 |
|---|---|---|
-r |
递归复制目录 | 复制文件夹 |
-P |
指定端口(大写) | 非22端口 |
-p |
保留文件属性 | 保持时间戳 |
-l |
限速(Kbit/s) | 避免占满带宽 |
-C |
压缩传输 | 大文件加速 |
-i |
指定私钥文件 | 使用密钥登录 |
-o |
传递ssh选项 | 跳板机等高级用法 |
注意事项
-
scp不会自动创建不存在的目录,需先ssh登录创建目标目录
-
传输大量小文件时scp较慢,建议用rsync
-
默认覆盖同名文件,无警告
下期预告
《每日一命令09:crontab------让脚本自动运行》
评论区分享你最常用的scp命令。(。•ᴗ•。)
------阿垚,一个踩过2万次坑的"老"IT