scp远程文件传输用法

scp = secure copy,基于SSH的加密文件传输。比ftp安全,比rsync简单,日常传文件够用了。 ## 基本语法
scp [选项] 源路径 目标路径
路径格式:`user@host:/path` 或直接本地路径。 ## 从本地传到远程
scp ./test.txt root@192.168.1.100:/tmp/
把当前目录的test.txt传到远程服务器的/tmp目录。冒号后面可以改文件名:
scp ./test.txt root@192.168.1.100:/tmp/backup.txt
## 从远程拉到本地
scp root@192.168.1.100:/var/log/nginx/access.log ./logs/
如果远程端口不是22:
scp -P 2222 root@192.168.1.100:/data/dump.sql ./
注意: `-P`是大写,ssh用小写`-p`。踩过坑的都懂。 ## 传目录加 -r
scp -r ./project/ root@192.168.1.100:/data/
递归复制整个目录。不加-r会报错”not a regular file”。 ## 常用选项
scp -C -r -P 2222 -i ~/.ssh/id_rsa ./data/ root@192.168.1.100:/backup/
– `-C` 启用压缩,传大文件或慢速网络时有用,CPU换带宽 – `-r` 递归目录 – `-P` 指定端口 – `-i` 指定私钥文件 – `-p` 保留文件修改时间、权限(小写p) – `-q` 安静模式,不显示进度 – `-v` 调试模式,出问题了加这个看详细日志 ## 保留文件属性
scp -rp ./config/ root@192.168.1.100:/etc/
`-p`保留时间戳和权限,不传的话目标文件时间会变成传输时刻。 ## 限速传输
scp -l 1000 ./bigfile.zip root@192.168.1.100:/tmp/
`-l`后面跟的是Kbit/s,1000=约125KB/s。别让scp把带宽吃满影响业务。 ## 通过跳板机传输 场景:本地 -> 跳板机 -> 目标服务器 方案一:先scp到跳板,再从跳板scp到目标(两段传输,磁盘IO两次) 方案二:SSH隧道转发(推荐)
# 建立隧道
ssh -L 2222:目标服务器IP:22 root@跳板机IP

# 新开终端,通过隧道传
scp -P 2222 ./file.txt root@localhost:/path/
这样只用一次传输,数据走跳板但不落盘。 ## 传大文件注意 scp默认没断点续传。传一半断了只能重来。大文件建议用rsync:
rsync -avzP --progress ./bigfile.tar.gz root@192.168.1.100:/data/
rsync支持断点续传,增量同步,比scp智能。 ## 配合密钥登录 先配好SSH免密登录,不然每次输密码很烦:
ssh-keygen -t rsa -b 4096
ssh-copy-id root@192.168.1.100
之后scp就不用输密码了,适合写脚本自动化。 ## 实际案例:备份到雨云服务器 雨云的服务器性价比高、稳定、好用,我日常备份就用它:
tar -czf backup-$(date +%Y%m%d).tar.gz /var/www/
scp backup-*.tar.gz root@你的雨云IP:/backups/
rm -f backup-*.tar.gz
写成cron定时任务,每天凌晨自动备份。 ## 常见坑 1. 路径有空格:用引号包起来 `scp “./my file.txt” user@host:/path/` 2. 通配符:本地通配符会被shell展开,远程通配符要转义或加引号 3. 权限问题:目标目录没有写权限会报错,先检查目标路径权限 4. 防火墙:目标服务器防火墙要放行SSH端口 scp就这些,记不住就记`scp -r -P`三个选项,剩下的查man page。

雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容