Skip to content

Instantly share code, notes, and snippets.

@binaryape
Last active December 29, 2021 21:24
Show Gist options
  • Save binaryape/05e3ada5cae0bd858d036673d6276e90 to your computer and use it in GitHub Desktop.
Save binaryape/05e3ada5cae0bd858d036673d6276e90 to your computer and use it in GitHub Desktop.
A script to archive, encrypt and move/trash old projects
#!/bin/bash
## Parkin: Tar, encrypt and move old project folders
##
## Requirements:
## - A Mac, probably
## - brew install age
## - brew install trash
## - Set $AGE_KEY to your own key for backups/archives
##
if [ -z "$1" ]; then
echo "Please specify a file or directory to parkive"
echo "parkin FILENAME [DESCRIPTION]"
exit 1
fi
set -eu
SOURCE=$1
BASE_NAME=${SOURCE// /_}
WDIR="$(dirname $BASE_NAME)"
BASE_NAME="$(basename $BASE_NAME)"
DESC="'$*'"
TAR_NAME="${BASE_NAME}.tgz"
AGE_NAME="${TAR_NAME}.age"
DESC_NAME="${AGE_NAME}.txt"
SIG_NAME="${AGE_NAME}.sig"
SHA_NAME="${AGE_NAME}.sha"
UPLOAD_DIR="$HOME/Archiving"
META_DIR="$HOME/Documents/PAM"
AGE_PKEY="age165shzzl7w7xdlaxvhw9l72kwkzvtkmzgtf3d5t7nzvvu2lsgr9tq4xjq60"
SSH_IDENTITY="$HOME/.ssh/id_rsa"
echo
mkdir -p "$UPLOAD_DIR"
cd $WDIR
echo "## Archiving $SOURCE to $TAR_NAME..."
tar -czvf $TAR_NAME $SOURCE
ls -l $TAR_NAME
echo
echo "## Encrypting archive..."
age -e -r $AGE_PKEY $TAR_NAME > $AGE_NAME
ls -l $AGE_NAME
echo
echo "## Metadata"
sha1sum $AGE_NAME > $SHA_NAME
ssh-keygen -Y sign -f "${SSH_IDENTITY}" -n file $AGE_NAME
echo $DESC > $DESC_NAME
echo >> $DESC_NAME
tar -tzvf $TAR_NAME >> $DESC_NAME
echo >> $DESC_NAME
cat $SHA_NAME >> $DESC_NAME
echo >> $DESC_NAME
cat $SIG_NAME >> $DESC_NAME
echo
echo "## Trashing $SOURCE and $TAR_NAME..."
trash -Fv $SOURCE
trash -Fv $TAR_NAME
rm -v $SHA_NAME
rm -v $SIG_NAME
echo
echo "## Moving $AGE_NAME, etc to $UPLOAD_DIR"
mv -v $AGE_NAME "$UPLOAD_DIR"
cp -v $DESC_NAME "$UPLOAD_DIR"
mv -v $DESC_NAME "$META_DIR/"
echo "## Done."
echo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment