AIGC标识 Linux文件增量备份脚本

使用方式: ./find_and_pack.sh /data "2026-09-20" backup.tar.gz 

脚本内容:

#!/bin/bash
# 用法: ./find_and_pack.sh
# 直接修改下方配置变量即可

BASE_DIR="/home/data"                    # 要扫描的目录
SINCE_TIME="2026-09-01 00:00:00"         # 只打包此时间之后修改的文件
OUTPUT_FILE="/tmp/data_$(date +%Y%m%d).tar.gz"
EXCLUDE_DIR=("node_modules" ".git" "*.log")  # 排除的目录/模式

# 构建 find 排除条件
EXCLUDE_ARGS=()
for pattern in "${EXCLUDE_DIR[@]}"; do
    EXCLUDE_ARGS+=(! -path "*/$pattern*" ! -name "$pattern")
done

# 使用相对路径打包,解压时不会覆盖原路径
cd "$BASE_DIR"

find . -type f -newermt "$SINCE_TIME" "${EXCLUDE_ARGS[@]}" -print0 | \
    tar --null -czf "$OUTPUT_FILE" --files-from=- --no-recursion

echo "打包完成: $OUTPUT_FILE ($(du -sh "$OUTPUT_FILE" | cut -f1))"

 

posted @ 2026-09-24 21:54  安培昌浩  阅读(7)  评论(0)    收藏  举报