|
@@ -0,0 +1,35 @@
|
|
|
|
+#!/bin/bash
|
|
|
|
+
|
|
|
|
+# 检查参数
|
|
|
|
+if [ "$#" -ne 3 ]; then
|
|
|
|
+ echo "用法: $0 <dir1> <dir2> <output.tar.gz>"
|
|
|
|
+ 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"
|