diff_pack.sh 706 B

1234567891011121314151617181920212223242526272829303132333435
  1. #!/bin/bash
  2. # 检查参数
  3. if [ "$#" -ne 3 ]; then
  4. echo "用法: $0 <dir1> <dir2> <output.tar.gz>"
  5. exit 1
  6. fi
  7. dir1="$1"
  8. dir2="$2"
  9. output="$3"
  10. # 确保目录存在
  11. if [ ! -d "$dir1" ] || [ ! -d "$dir2" ]; then
  12. echo "错误:目录不存在"
  13. exit 1
  14. fi
  15. # 创建临时目录
  16. tmp_dir=$(mktemp -d)
  17. trap "rm -rf $tmp_dir" EXIT
  18. # 使用 rsync 找出 dir2 中新增或修改的文件
  19. rsync -av --compare-dest="$dir1" "$dir2"/ "$tmp_dir"/ > /dev/null
  20. # 如果没有差异,提示并退出
  21. if [ -z "$(ls -A "$tmp_dir")" ]; then
  22. echo "两个目录内容一致,无需打包。"
  23. exit 0
  24. fi
  25. # 打包压缩
  26. tar -czf "$output" -C "$tmp_dir" .
  27. echo "✅ 差异文件已打包为:$output"