Eu não sei de um pacote existente que fará isso, mas aqui está um script de verificação de erros que não foi testado e que pode funcionar:
#!/bin/sh
SRC=/foo
DST=/bar
IDX=/tmp/CONTENTS
DISK_ID='uuidgen'
echo "$DISK_ID" > $DST/disk_id
cd $SRC
find . -type f | while read FILE; do
FILE_SIZE='stat -c '%a' "$FILE"'
FREE_DST='stat -c '%a' "$DST"'
if [ $FREE_DST -lt $FILE_SIZE ]; then
while [ $FREE_DST -lt $FILE_SIZE ]; do
read -p "Please mount a new disk at $DST and hit enter:"
FREE_DST='stat -c '%a' "$DST"'
done
DISK_ID='uuidgen'
echo "$DISK_ID" > $DST/disk_id
fi
DST_DIR='dirname "$FILE"'
DST_DIR="$DST/$DST_DIR"
[ -d "$DST_DIR" ] || mkdir -p "$DST_DIR"
cp -p "$FILE" "$DST_DIR"
echo "$DISK_ID $FILE" >> $IDX
done