Escolha o modelo de serviço e use um script de shell como este:
n=$1
[[ -e $n.tgz ]] && { i=2; n="$1-$i"; }
while [[ -e $n.tgz ]]; do n="${n%-*}-$((i++))"; done
d=${1%/*}
cd -- "$d"
COPYFILE_DISABLE= tar -czf "$n.tgz" -- "${@#"$d/"}"
Mude -z para -j e tgz para tbz para usar bzip2.
O serviço geralmente deve ser usado com uma única pasta como entrada. Se a entrada for de vários arquivos, ela não criará um diretório contendo os arquivos.
A configuração de COPYFILE_DISABLE diz ao tar para remover atributos estendidos e ACLs em vez de usar o formato AppleDouble:
$ touch a;xattr -w key value a
$ tar -cf a.tar a;tar -tf a.tar
./._a
a
$ COPYFILE_DISABLE= tar -cf a2.tar a;tar -tf a2.tar
a
$