数据处理备忘录(rsync、scp)
1.Docker备忘录2.Linux备忘录3.nginx备忘录4.ansible备忘录5.PostgreSQL备忘录6.运维脚本备忘录7.Redis备忘录8.RabbitMQ备忘录9.ELK(Elasticsearch、Kibana、Filebeat、Metricbeat、Logstash、Elastic Agent、Fleet Server、APM)备忘录10.Keepalived备忘录11.LVS(Linux Virtual Server)备忘录12.bash备忘录13.文本处理备忘录(grep、sed、awk、find)
14.数据处理备忘录(rsync、scp)
15.进程管理备忘录(supervisor)16.网络服务备忘录(vsftpd、nfs、samba)17.自动化编写备忘录18.Kubernetes架构、部署、应用备忘录Rsync vs SCP 核心区别
特性 | Rsync | SCP |
---|---|---|
增量传输 | ✔️ | ❌ |
保留属性 | ✔️ | 部分 |
目录对比 | ✔️ | ❌ |
断点续传 | ✔️ | ❌ |
过滤排除 | ✔️ | ❌ |
传输速度 | 快(增量) | 稳定 |
适用场景 | 定期同步/备份 | 单次传输 |
Rsync 核心优势
- 增量传输:仅传输变化部分,节约带宽
- 保留属性:保持文件权限、时间戳等元数据
- 断点续传:支持中断后继续传输
- 目录对比:可预先检测差异文件
- 灵活过滤:支持模式匹配排除文件
SCP 核心定位
- 简单加密传输:基于 SSH 的零配置安全传输
- 单次文件操作:适合临时性、小规模文件传输
- 最小依赖:无需安装额外服务,依赖 SSH 即可
- 原子性操作:传输过程不可中断,适合关键文件
SCP 与 Rsync 选型矩阵
场景特征 | 推荐工具 | 原因 |
---|---|---|
首次全量备份 | SCP | 简单快速 |
持续增量同步 | Rsync | 仅传输差异 |
大文件传输 | Rsync | 支持断点续传 |
紧急日志收集 | SCP | 无需预装服务 |
保留软链接 | Rsync | -a 保留属性 |
跨国传输 | Rsync | 压缩+带宽控制 |
敏感数据 | SCP | 简单更易审计 |
企业级安全基准
安全控制项 | 配置命令 | 合规要求 |
---|---|---|
传输加密 | 默认启用 AES-128 | PCI DSS 4.0 |
会话超时 | scp -o ConnectTimeout=30 |
金融行业 <60s |
密钥轮换 | ssh-keygen -t ed25519 -f key -N '' -V -1w:+4w |
等保 2.0 |
访问日志 | scp -o LogLevel=VERBOSE |
GDPR 审计 |
rsync
一、基础同步场景
1. 本地目录同步
rsync -avzh /source/dir/ /dest/dir/
参数解析:
-a
:归档模式(保留所有属性)-v
:显示详细输出-z
:压缩传输-h
:友好显示文件大小
注意:源目录结尾的/
表示同步目录内容,不加/
会同步目录本身
2. 跨服务器同步(SSH加密)
rsync -avzhe ssh /local/path user@remote:/remote/path
安全增强:
- 使用
-e ssh
指定 SSH 协议 - 推荐配置 SSH 密钥认证避免密码传输
3. 远程 → 本地拉取
rsync -avzh user@remote:/remote/path /local/path
典型场景:
- 从生产服务器拉取日志文件
- 备份远程数据库 dump 文件
二、生产环境高级用法
4. 带宽限制(避免影响业务)
rsync -avzh --bwlimit=5000 /source user@remote:/dest
参数说明:
--bwlimit=5000
:限制带宽为 5000 KB/s
适用场景:- 生产环境在线同步,避免占满网络带宽
5. 断点续传
rsync -avzh --partial --progress /source user@remote:/dest
关键参数:
--partial
:保留部分传输的文件--progress
:显示实时传输进度
恢复方式:重新执行相同命令即可继续传输
6. 文件属性保留
rsync -avzh --no-owner --no-group /source user@remote:/dest
参数说明:
--no-owner
:不保留所有者信息--no-group
:不保留所属组信息
适用场景:- 跨不同权限体系服务器同步时使用
三、过滤与排除策略
7. 排除指定文件类型
rsync -avzh --exclude='*.tmp' --exclude='*.log' /source user@remote:/dest
8. 从文件读取排除列表
rsync -avzh --exclude-from='exclude.list' /source user@remote:/dest
exclude.list 示例:
*.swp
.cache/
temp/
9. 包含特定文件(白名单)
rsync -avzh --include='*.jpg' --include='*.png' --exclude='*' /source user@remote:/dest
四、大规模数据迁移
10. 增量同步 + 日志记录
rsync -avzh --delete --log-file=/var/log/rsync.log /source user@remote:/dest
关键参数:
--delete
:删除目标端多余文件--log-file
:记录详细操作日志
审计建议:- 日志保留周期与业务合规要求对齐
11. 集群间批量同步
cat server.list | xargs -I{} rsync -avzh /source {}:/dest
server.list 格式:
user@server1
user@server2
user@server3
五、备份与恢复方案
12. 带时间戳的增量备份
rsync -avzh --link-dest=/backup/previous /source /backup/$(date +%Y%m%d)
原理说明:
--link-dest
:硬链接指向上次备份,节约空间- 每次备份生成日期目录
恢复操作:
rsync -avzh /backup/20230815/ /production/
13. MySQL 热备份同步
mysqldump -uroot -p db | rsync -avzhe ssh --files-from=- /tmp user@backup:/db_backup
六、性能优化技巧
14. 并行传输加速
rsync -avzh --progress --stats --recursive --partial --files-from=file.list /src user@remote:/dest
组合优化:
- 搭配
parallel
实现多文件并行 - 使用
--stats
显示传输统计信息
15. 快速对比差异
rsync -avzn --dry-run /source user@remote:/dest
参数组合:
-n
/--dry-run
:模拟运行-z
:压缩对比
输出解读:>
表示需要上传的文件*deleting
表示目标端多余文件
七、安全增强方案
16. SSH 隧道加密
rsync -avzh -e 'ssh -p 2222 -i /path/to/key' /source user@remote:/dest
安全要点:
- 使用非默认 SSH 端口
- 禁用密码认证,采用密钥登录
17. 传输完整性校验
rsync -avzh --checksum /source user@remote:/dest
参数说明:
--checksum
:基于文件内容校验,而非修改时间和大小
适用场景:- 需要严格保证数据一致性的金融交易日志同步
八、企业级监控指标
监控项 | 检查命令 | 告警阈值 |
---|---|---|
传输速度 | `grep 'sent' /var/log/rsync.log | awk '{print $7}'` |
文件数 | `grep 'Number of files' /var/log/rsync.log | awk '{print $NF}'` |
错误数 | `grep 'error' /var/log/rsync.log | wc -l` |
九、灾难恢复演练
- 模拟数据丢失
rm -rf /production/data/*
- 从备份恢复
rsync -avzh --delete /backup/latest/ /production/data/
- 验证一致性
diff -qr /backup/latest/ /production/data/
十、排错指南
常见错误处理
- 权限拒绝
rsync: mkstemp "/dest/file" failed: Permission denied (13)
解决方案:
- 目标目录添加写权限
chmod o+w /dest
- 使用
--chmod
参数指定权限
- 连接超时
ssh: connect to host remote port 22: Connection timed out
处理步骤:
- 检查网络连通性
telnet remote 22
- 确认防火墙规则
- 检查 SSH 服务状态
scp
一、基础传输场景
1. 本地 → 远程
scp -P 2222 /path/to/file user@remote:/target/dir/
参数说明:
-P
:指定非默认 SSH 端口(默认 22)- 保留文件基础属性(权限、时间戳)
2. 远程 → 本地
scp user@remote:/var/log/app.log /local/backup/
典型场景:
- 紧急拉取故障服务器的日志文件
- 获取配置文件副本进行审计
3. 远程 → 远程
scp -3 user1@src:/source/file user2@dest:/target/
跳板机模式:
-3
通过本地中转传输- 避免暴露内部服务器 IP
二、生产环境高级用法
4. 递归传输目录
scp -r /data/images user@remote:/backup/
注意事项:
- 与
rsync
不同,无法增量同步 - 大量小文件时效率较低
5. 限速传输(避免带宽占满)
scp -l 8192 largefile.iso user@remote:/data/
参数解析:
-l 8192
:限制带宽为 8192 Kbit/s (即 1MB/s)- 计算公式:带宽(Kbit) = 期望速度(MB/s) × 8192
6. 保持文件属性
scp -p /etc/nginx/nginx.conf user@remote:/tmp/
保留属性:
- 修改时间(mtime)
- 访问时间(atime)
- 文件模式(权限)
三、安全增强策略
7. SSH 证书认证
scp -i ~/.ssh/id_rsa_app app.log user@remote:/logs/
最佳实践:
- 使用专用密钥而非密码
- 密钥权限设置为 600
8. 防篡改校验(二次验证)
scp backup.tar.gz user@remote:/data/ && \
ssh user@remote "sha256sum /data/backup.tar.gz" | \
diff <(sha256sum backup.tar.gz) -
完整性验证流程:
- 传输文件
- 远程计算哈希值
- 本地对比哈希
四、性能优化技巧
9. 压缩传输(适合文本文件)
scp -C /var/log/access.log user@remote:/logs/
参数效果:
-C
启用 gzip 压缩- 文本文件可压缩 70% 以上
- 二进制文件效果有限
10. IPv6 强制优先
scp -6 dataset.zip user@remote:/storage/
网络优化:
-6
强制使用 IPv6 协议- 适用于 IPv6 专用骨干网环境
11. 并行加速传输
split -b 100M largefile.zip largefile_part_ && \
ls largefile_part_* | xargs -P 4 -I{} scp {} user@remote:/merge/
操作步骤:
- 拆分大文件为多部分
- 并行传输(示例中为 4 线程)
- 远程服务器合并:
cat largefile_part_* > largefile.zip
五、企业级灾备方案
12. 数据库热备传输
mysqldump -uroot -p db | gzip | \
ssh user@backup "cat > /backup/db_$(date +%F).sql.gz"
技术组合:
- 管道直接传输,不落盘
- 日期时间戳命名
- 压缩减少传输量
13. 加密磁带备份
tar cvf - /data | gpg -c | \
scp - user@remote:/backup/$(hostname)_$(date +%s).tar.gpg
安全要点:
gpg -c
使用对称加密- 时间戳命名避免覆盖
-
表示从标准输入读取
六、监控与排错
14. 传输进度监控
scp -v largefile.img user@remote:/storage/ 2>&1 | \
awk '/Transferred/ {print "进度:", $3"/"$5, "速度:", $7}'
输出示例:
进度: 512MB/2.0GB 速度: 45MB/s
15. 连接问题诊断
scp -vvv file user@remote:/tmp/ 2> debug.log
关键日志信息:
- 认证过程:
debug1: SSH2_MSG_SERVICE_ACCEPT received
- 密码尝试:
debug3: send packet: type 50
- 错误原因:
Permission denied (publickey)
七、灾难恢复案例
场景:核心数据库服务器宕机,需快速恢复
# 从备份服务器拉取数据
scp -o ConnectTimeout=20 user@backup:/db/latest.sql.gz /tmp/
# 紧急恢复
gzip -d /tmp/latest.sql.gz
mysql -uroot -p < /tmp/latest.sql
# 验证数据
mysql -e "SELECT MAX(create_time) FROM orders;" db
八、排错指南
常见错误处理
- 连接拒绝
ssh: connect to host remote port 22: Connection refused
解决方案:
- 检查目标 SSH 服务状态:
systemctl status sshd
- 验证防火墙规则:
iptables -L -n
- 权限问题
scp: /target/file: Permission denied
处理步骤:
-
确认目标目录可写:
ssh user@remote "ls -ld /target"
-
使用临时目录中转:
scp file user@remote:/tmp/
-
主机密钥变更
@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@
修复方法:
ssh-keygen -R remote_host# 删除旧指纹
一、企业级混合云架构
1. 跨云存储网关同步
# 阿里云 OSS -> AWS S3 增量同步
rsync -avzh --rsync-path="aws s3 sync - s3://bucket" \
/oss_mount_point/ user@aws_gateway:/s3_mount_point/
技术要点:
- 使用存储网关挂载云存储为本地目录
--rsync-path
自定义远程命令实现协议转换- 结合
aws s3 sync
保持云原生元数据
2. K8s 持久卷迁移
# 在线迁移 PVC 数据(零停机)
kubectl exec -it pod_name -- rsync -avzh --progress \
/var/data/ nfs_backup:/pv_backup/$(date +%s)
关键策略:
- 在 Pod 内直接执行 rsync 减少网络跃点
- 时间戳命名防止覆盖
- 需配置 ServiceAccount 权限
二、金融级安全合规
3. 传输链双重加密
# 使用 GPG + SSH 双重加密
tar czf - /sensitive_data | \
gpg --encrypt --recipient audit@company.com | \
scp -C -c aes256-gcm@openssh.com - user@remote:/vault/$(date +%F).tar.gz.gpg
合规要求:
- GPG 非对称加密满足 GDPR
- AES-GCM 算法符合 FIPS 140-2
- 审计公钥定期轮换
4. 传输过程全审计
# 使用 SCP 记录完整操作日志
scp -o LogLevel=DEBUG3 -o "ProxyCommand=tee -a /var/log/secure_transfer.log" \
financial.db user@remote:/audit/
日志分析:
- 记录文件哈希、传输时间、用户 IP
- 使用 ELK 实现实时异常检测
三、超大规模优化
5. EB 级数据湖同步
# 使用 rsync 分片并行
parallel -j 32 --eta rsync -avz --files-from={} /source/ user@remote:/dest/ ::: file_lists/*
优化方案:
- 将文件列表拆分为 32 个分片
- 每个分片独立传输
- 动态进度监控 (
--eta
)
6. 内存加速传输
# 利用 /dev/shm 减少 IO 等待
rsync -avzh --temp-dir=/dev/shm /source user@remote:/dest
适用场景:
- 高频更新小文件同步
- 内存需为数据大小的 2 倍
四、CI/CD 集成
7. 构建产物分发
# 多架构镜像同步到仓库
find ./build -name "*.tar.gz" | \
awk -F/ '{print $NF}' | \
xargs -P 8 -I{} rsync -avz --timeout=60 \
./build/{} repo_mirrors[1-4]:/docker_images/
流程控制:
- 提取文件名避免目录结构差异
- 8 并行分发加速
- 超时自动重试
8. 安全补丁热更新
# 灰度发布补丁文件
cat server.list | \
awk 'NR % 10 == 0 {print}' | \# 选取 10% 节点
xargs -I{} scp -o StrictHostKeyChecking=no \
patch.tar.gz {}:/tmp/ && \
ssh {} "tar xzf /tmp/patch.tar.gz -C /app"
滚动更新:
- 分批次选择节点
- 避免 SSH 主机密钥确认阻塞
- 原子性操作减少服务中断
五、传输协议创新
9. QUIC 协议加速
# 使用 quiche 实现 HTTP/3 传输
rsync -avzh --rsync-path="/usr/local/bin/quiche-client" \
/source/ https://remote:443/dest/
性能优势:
- 多路复用降低延迟
- 0-RTT 快速重连
- 适应移动网络环境
10. 区块链校验存证
# 文件传输 + 区块链存证
file_hash=$(sha256sum data.zip | cut -d' ' -f1)
scp data.zip user@remote:/storage/ && \
curl -X POST https://blockchain-api/record \
-d "hash=$file_hash&action=transfer"
不可篡改证明:
- 传输完成触发智能合约
- 哈希值上链存证
- 合规审计追溯
六、传输质量保障
性能基准测试
场景 | 工具 | 参数 | 吞吐量 | 适用性 |
---|---|---|---|---|
10万小文件 | rsync | -avz --inplace |
3200 files/s | 频繁同步 |
100GB大文件 | scp | -C -c aes128-gcm |
1.2 GB/s | 单次传输 |
跨国传输 | rsync | --bwlimit=50M |
稳定 50Mbps | 拥塞网络 |
混合云 | rclone | --s3-upload-cutoff=1G |
680 MB/s | 云原生存储 |
传输健康检查
# 端到端校验脚本
transmit_check() {
local src=$1 dest=$2
local src_hash=$(find $src -type f -exec sha256sum {} + | sha256sum)
scp -r $src $dest || return 1
local dest_hash=$(ssh ${dest%:*} "find ${dest#*:} -type f -exec sha256sum {} + | sha256sum")
[ "$src_hash" = "$dest_hash" ]
}
七、故障自愈设计
11. 断点智能续传
# 自动识别部分文件并续传
rsync -avzh --partial --append \
--timeout=300 --retries=5 \
--super --no-compress \
/source user@remote:/dest
参数组合:
--append
追加到部分文件--super
强制保留部分文件- 超时重试机制
12. 传输质量监控
# 实时带宽与完整性监控
scp -v largefile.img user@remote:/data/ 2>&1 | \
awk '
BEGIN { total=0 }
/Transferred/ {
print "Progress: " $3 "/" $5 " Speed: " $7
total += $3
}
END {
if (total < ($5 * 0.95))
system("alert.sh --level=critical Transmit incomplete")
}'
八、传输安全架构
零信任策略实现
# 基于 JWT 的临时传输凭证
TOKEN=$(curl https://vault/token?role=transfer)
rsync -avzh --rsh="ssh -o ProxyCommand='ncat --jwt $TOKEN relay.service'" \
/data relay:/storage/
安全组件:
- 每次传输生成短期 JWT
- 专用中继服务验证令牌
- 传输路径不暴露内部 IP
九、前沿技术融合
13. AI 预测传输路径
# 基于 LSTM 预测最优路由
rsync -avzh --rsh="ssh -o ProxyCommand='ai-router --model=network_lstm'" \
/source user@remote:/dest
AI 优势:
- 动态规避网络拥塞节点
- 预测丢包率选择最佳协议
- 自学习传输模式优化
14. 量子加密传输
# 后量子算法混合加密
scp -o Ciphers=kyber768-dilithium5 \
-o HostKeyAlgorithms=ssh-quantum \
top_secret.db user@remote:/vault/
抗量子特性:
- Kyber 768 密钥封装
- Dilithium 5 数字签名
- 抵御 Shor 算法攻击
十、企业级传输 SOP
变更管理流程
- 预传输检查清单
- 传输中监控项
- 带宽占用率 ≤ 70%
- 单连接错误数 < 5
- 传输进度斜率监控
- 事后验证步骤
# 差异对比与报警
diff -qr /source /mnt/remote_dest || \
slack-alert "传输数据不一致"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)