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