Git Bash(Windows 上提供的 Linux 风格终端环境)中进行差异备份,可以结合 Git 原生命令和 Unix 工具实现高效的文件级差异备份


方法 1:纯 Git 命令实现

# 进入需备份的目录
cd /d/项目文件夹

# 初始化Git仓库(若未初始化)
git init

# 首次完全备份
git add . && git commit -m "初始完整备份"

# 后续差异备份:
git add -u          # 添加所有已追踪的变更文件
git add [新文件路径] # 单独添加新增文件
git commit -m "差异备份 $(date +"%Y-%m-%d %H:%M")"

方法 2:rsync 硬链接备份(高效节省空间)

# 创建目标备份目录结构
mkdir -p /d/备份仓库/$(date +"%Y%m%d")

# 执行差异备份(使用硬链接复用未修改文件)
rsync -a --link-dest=/d/备份仓库/上一备份目录 \
       /d/项目文件夹/ \
       /d/备份仓库/$(date +"%Y%m%d")/

参数说明

  • -a:归档模式(保留权限、时间戳等)
  • --link-dest=DIR:指定上次备份目录,未修改文件创建硬链接
  • --delete:自动删除目标端多余文件(可选)

方法 3:find + tar 按时间筛选备份

# 创建差异备份压缩包(备份24小时内修改的文件)
find /d/项目文件夹 -type f -mtime -1 -print0 | \
tar -czvf /d/备份/$(date +"%Y%m%d").tar.gz --null -T -

参数说明

  • -mtime -1:最近24小时修改的文件
  • -print0-T -:处理含空格的文件路径

方法 4:Git + rsync 自动化脚本

创建 backup.sh 脚本:

#!/bin/bash

SOURCE="/d/项目文件夹"
LAST_BACKUP="/d/备份/最新备份"

# 查找最近备份目录
find /d/备份 -maxdepth 1 -type d -name "backup_*" -printf "%T@ %p\n" | \
sort -n | tail -1 | cut -d' ' -f2 > /tmp/last_backup.txt
LAST_BACKUP=$(cat /tmp/last_backup.txt)

# 执行差异备份
NEW_BACKUP="/d/备份/backup_$(date +%s)"
rsync -a --link-dest="$LAST_BACKUP" "$SOURCE/" "$NEW_BACKUP"

# 创建软链接指向最新备份
rm -f "$LAST_BACKUP"
ln -s "$NEW_BACKUP" "$LAST_BACKUP"

运行脚本:

chmod +x backup.sh
./backup.sh

关键命令速查表

命令作用示例
rsync -a归档模式同步文件rsync -a source/ dest/
--link-dest创建硬链接节省空间--link-dest=/backup/last/
find -mtime按修改时间过滤文件find . -mtime -1
git add -u只添加已追踪文件的修改git add -u && git commit
tar --newer打包指定时间后的文件tar -czf backup.tgz --newer "2023-08-15"

备份验证技巧

  1. 检查备份完整性

    diff -rq /d/项目文件夹 /d/备份/最新备份
    
  2. 查看文件变更历史

    git log --name-status  # 在Git管理的备份目录中
    
  3. 统计备份大小

    du -sh /d/备份/*      # 查看各备份目录大小
    

最佳实践

  1. 设置定时任务

    # 每天凌晨1点执行备份
    crontab -e
    0 1 * * * /d/scripts/backup.sh
    
  2. 排除不需要的文件
    创建 .gitignoreexclude.list 文件:

    *.tmp
    /cache/
    ~$*.docx
    

    在 rsync 中使用排除:

    rsync -a --exclude-from='exclude.list' source/ dest/
    
  3. 保留多版本备份

    timeline
        2023-08-01 : 初始完整备份
        2023-08-02 : 差异备份 : 12个文件
        2023-08-03 : 差异备份 : 仅3个文件
        2023-08-04 : 周完整备份
    

通过这些方法,你可以在 Git Bash 中高效实现文件夹级差异备份,兼顾灵活性与存储效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值