Last active
December 29, 2021 21:24
-
-
Save binaryape/05e3ada5cae0bd858d036673d6276e90 to your computer and use it in GitHub Desktop.
A script to archive, encrypt and move/trash old projects
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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