diff --git a/scripts/diff_pack.sh b/scripts/diff_pack.sh new file mode 100644 index 0000000..e4db353 --- /dev/null +++ b/scripts/diff_pack.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# 检查参数 +if [ "$#" -ne 3 ]; then + echo "用法: $0 " + exit 1 +fi + +dir1="$1" +dir2="$2" +output="$3" + +# 确保目录存在 +if [ ! -d "$dir1" ] || [ ! -d "$dir2" ]; then + echo "错误:目录不存在" + exit 1 +fi + +# 创建临时目录 +tmp_dir=$(mktemp -d) +trap "rm -rf $tmp_dir" EXIT + +# 使用 rsync 找出 dir2 中新增或修改的文件 +rsync -av --compare-dest="$dir1" "$dir2"/ "$tmp_dir"/ > /dev/null + +# 如果没有差异,提示并退出 +if [ -z "$(ls -A "$tmp_dir")" ]; then + echo "两个目录内容一致,无需打包。" + exit 0 +fi + +# 打包压缩 +tar -czf "$output" -C "$tmp_dir" . + +echo "✅ 差异文件已打包为:$output"