#!/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"