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))"

浙公网安备 33010602011771号