rsync文件同步:高效传输大量文

rsync文件同步:高效传输大量文件

scp传文件太慢?每次都要全量传?

试试rsync,只传输变化的部分,快得多。

基本用法

rsync -avz 源目录/ 目标目录/

参数说明:

  • a:归档模式,保留权限、时间等
  • v:显示详情
  • z:压缩传输

本地同步

# 同步目录
rsync -avz /source/ /backup/

# 同步单个文件
rsync -avz file.txt /backup/

注意:源目录后面带不带/有区别:

  • /source/:同步目录里的内容
  • /source:同步目录本身

远程同步

推送到远程:

rsync -avz /local/dir/ user@remote:/remote/dir/

从远程拉取:

rsync -avz user@remote:/remote/dir/ /local/dir/

常用参数

# --delete:删除目标端多余的文件
rsync -avz --delete /source/ /backup/

# --exclude:排除某些文件
rsync -avz --exclude='*.log' --exclude='node_modules' /source/ /backup/

# --exclude-from:从文件读取排除规则
rsync -avz --exclude-from=exclude.txt /source/ /backup/

# --dry-run:只显示会做什么,不实际执行
rsync -avzn /source/ /backup/

# --progress:显示进度
rsync -avz --progress /source/ /backup/

# -P:相当于--partial --progress,断点续传+显示进度
rsync -avzP /source/ /backup/

常用场景

场景1:备份代码

rsync -avz --exclude='node_modules' --exclude='.git' \
    /home/project/ /backup/project/

场景2:同步网站文件

rsync -avz --delete dist/ root@server:/var/www/mysite/

场景3:增量备份

rsync -avz --backup --backup-dir=/backup/old \
    /data/ /backup/current/

场景4:限速传输

# 限制带宽1MB/s
rsync -avz --bwlimit=1000 /source/ user@remote:/dest/

对比scp

特性scprsync
增量传输
断点续传
删除多余文件
排除文件
压缩传输

rsync几乎全面碾压scp。

定时同步

结合crontab:

# 每天凌晨2点同步
0 2 * * * rsync -avz /data/ /backup/ >> /var/log/rsync.log 2>&1

同步脚本示例

#!/bin/bash
# backup.sh

SOURCE="/data/app"
DEST="root@backup-server:/backup/app"
LOG="/var/log/rsync.log"

echo "===== $(date) =====" >> $LOG
rsync -avz --delete \
    --exclude='*.log' \
    --exclude='tmp/' \
    $SOURCE/ $DEST/ >> $LOG 2>&1

if [ $? -eq 0 ]; then
    echo "同步成功" >> $LOG
else
    echo "同步失败" >> $LOG
fi

多服务器同步

我用星空组网管理多台服务器,同步文件很方便:

#!/bin/bash
# 把代码同步到所有服务器
SERVERS="10.26.1.10 10.26.1.11 10.26.1.12"
SOURCE="/opt/app/"

for server in $SERVERS; do
    echo "同步到 $server"
    rsync -avz --delete $SOURCE root@$server:/opt/app/
done

不用配跳板机,直接用虚拟IP同步。

常见问题

Q:权限问题?

加sudo或者用root同步,或者加--no-perms忽略权限。

Q:网络中断了?

-P参数支持断点续传:

rsync -avzP /source/ user@remote:/dest/

Q:软链接怎么处理?

默认保留软链接,加-L复制链接目标文件。

速查表

用途命令
基本同步rsync -avz 源/ 目标/
远程同步rsync -avz 源/ user@host:目标/
删除多余rsync -avz --delete
排除文件rsync -avz --exclude='*.log'
显示进度rsync -avzP
限速rsync -avz --bwlimit=1000

小结

rsync核心用法:

rsync -avz 源目录/ 目标目录/

常用加--delete--exclude

比scp更快更强,传输大量文件必备。

有问题评论区交流~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值