From 8f0c11c8055c1130dd8e548c51b034b539086a4e Mon Sep 17 00:00:00 2001 From: xuqm Date: Tue, 22 Jul 2025 18:28:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(scripts):=20=E6=B7=BB=E5=8A=A0=20diff=5Fpa?= =?UTF-8?q?ck.sh=20=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 diff_pack.sh 脚本,用于比较两个目录并打包差异文件。脚本会检查输入参数、验证目录存在性,并使用 rsync 找出差异文件。如果没有差异,则不进行打包并提示用户。如果存在差异,将差异文件打包为 tar.gz 文件并输出相关信息。 --- scripts/diff_pack.sh | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 scripts/diff_pack.sh 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"