#!/bin/zsh # dirvish-diff.sh Michael Weber 20120212 setopt -e zmodload -a zsh/stat stat LATEST=/backup/lore/latest PREV=$(dirname $LATEST) PREV=$PREV/$(ls -1 $PREV | grep -v "^dirvish\|latest$" | tail -1) ACTION=$(basename $PREV)_$(basename $LATEST) TARBALL=/backup/lore_$ACTION.tar.bz2 [ -e $TARBALL ] && { echo $TARBALL exists ; exit -1 } echo "# $ACTION" RMF=$(mktemp) cd $PREV for f in **/* ; do [ -e $PREV/$f ] && continue echo rm -v $f done | tee $RMF cd $LATEST for f in tree/**/*(.) ; do stat -H src "$PREV/$f" 2>/dev/null \ && stat -H tgt "$f" \ && (( $src[inode] == $tgt[inode] )) \ && continue echo $f done | tar cvf $TARBALL \ --transform "s:^${RMF/\//}\$:$ACTION-removed:" \ --show-transformed-names \ --use-compress-program /usr/bin/pbzip2 \ $RMF -T - rm -v $RMF