先唠两句
大家好啊,我是阿垚。
欢迎来到《每日一命令》第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