#!/usr/bin/env sh # A short "back-up" script used to archive directories neatly, optionally encrypt bakdir=$HOME/store/bak e="" case "$1" in "-g") e="--encrypt"; shift ;; "-s") e="--encrypt --symmetric --sign --cipher-algo AES256"; shift esac; for k in $*; do if [ -d "$k" ]; then strip=${k%/} [ "$(echo $strip | cut -c 1)" != "/" ] && strip=$PWD/$strip folder=${strip##*/} path=$(echo ${strip%/*} | sed "s#$HOME##") stamp="$(date +%y%m%d-%H%M%S)" name="$(echo $bakdir/$path/$folder-$stamp.tar.xz | sed 's#//#/#g')" echo Archiving and compressing "$name" ... mkdir -p "$bakdir"/"$path" cd "$k" || return 127 ; cd .. if [ -n "$e" ]; then echo Encrypting "$name" tar --xz --atime-preserve -p -cO "$folder" | gpg "$e" - > "$name".gpg else tar --xz --atime-preserve -p -cf "$name" "$folder" fi; else echo Skipping "$k", not a directory fi done