ディスクイメージを圧縮

Mac 用のフリーウェアで無圧縮 dmg を zip 圧縮して配布されているものがたまにあります。
それを圧縮し直してローカルにとっとくのに、こんなシェルスクリプトを使ってます。

% cat dmg-compress
#!/bin/bash

self=`basename "$0"`
keep_old=1
use_bzip2=0

function _compress_diskimage
{
        local in="$1"
        local out="$1.tmp-$(date '+%Y%m%d%H%M%S').dmg"
        local ret=0
        if [ $use_bzip2 -ne 0 ]; then
                hdiutil convert -format UDBZ -o "$out" "$in"
        else
                hdiutil convert -format UDZO -o "$out" -tgtimagekey zlib-level=9 "$in"
        fi
        ret=$?
        if [ $ret -eq 0 ]; then
                test $keep_old -ne 0 && mv -v "$in" "$in.orig.dmg"
                mv -v "$out" "$in"
                ret=$?
        fi
        return $ret
}

if [ $# -lt 1 ]; then
        echo "$self: Too few arguments." >&2
        exit 1
fi

for dmg in "$@"; do
        if hdiutil imageinfo "$dmg" > /dev/null; then
                _compress_diskimage "$dmg"
                test $# -eq 1 && exit $?
        else
                echo "$self: $1 is not a valid diskimage." >&2
                test $# -eq 1 && exit 1
        fi
done