Skip to content

Instantly share code, notes, and snippets.

@dch
Last active Oct 11, 2017
Embed
What would you like to do?
tarsnap hacky parallel restore script
#!/bin/sh
# recover all files in parallel from the most recent archive
# MIT license
# https://git.io/vdrbG
# "works on my machine"
# lots of assumptions notably path length (strip-component)
# get the latest archive as our names can be sorted by time
ARCHIVE=`tarsnap --keyfile /tmp/tarsnap.key --list-archives | sort | tail -1`
# order the archives by descending size
FILES=`tarsnap --keyfile /tmp/tarsnap.key -tvf ${ARCHIVE} | cut -w -f 5,9 | sort -rn | cut -w -f 2`
# spawn 10 invocations in parallel (use -P 0 for unlimited)
echo $FILES | xargs -P 10 -n 1 -t \
time tarsnap \
--retry-forever \
-S \
--strip-components 6 \
--print-stats \
--humanize-numbers \
--keyfile /tmp/tarsnap.key \
--chroot \
-xv \
-f ${ARCHIVE}
# profit
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment