In my latest post I did mention the new setup and since I am a litte narcissistic I did tweet this post right away. And a good friend and fellow software craftsman Mark Paluch (@mp911de) instantly claimed the question about data protection (aka backup).
Over the years I did try out several simple backup systems (eg. backup-manager), but it never felt right.
Therefore I started to create some very simple script and by now I am still using it:
#!/bin/bash SSHFS_MOUNT_SOURCE=sshfs-server.domain:/ SSHFS_MOUNT_TARGET=/mnt/local-backup-mount BACKUP_PATH="${SSHFS_MOUNT_TARGET}/backup/" BASE_PATH=/basepath-to-be-used PUB_KEY_EMAIL=email@some.domain sshfs "${SSHFS_MOUNT_SOURCE}" "${SSHFS_MOUNT_TARGET}" cutoff=$(date -d '7 days ago' +"%s") for BACKUP_ITEM in {all,sub,paths}; do TMP_TARGET="/tmp-storage/backup-${BACKUP_ITEM}-$(date +"%Y-%m-%d").tar.gz" GPG_TARGET="${TMP_TARGET}.gpg" tar -czf "${TMP_TARGET}" "${BASE_PATH}/${BACKUP_ITEM}" gpg -e -r "${PUB_KEY_EMAIL}" -o "${GPG_TARGET}" "${TMP_TARGET}" cp "${GPG_TARGET}" "${BACKUP_PATH}" cutoff=$(date -d '7 days ago' +"%s") find "${BACKUP_PATH}" -type f | while read fileName; do fileDate=$(echo $fileName | sed 's/.*-\([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\).*/\1/') fileDateInSeconds=$(date -d "${fileDate}" +%s) if [ ${fileDateInSeconds} -lt ${cutoff} ]; then rm ${fileName} fi done rm "${TMP_TARGET}" "${GPG_TARGET}" done umount "${SSHFS_MOUNT_TARGET}"
It works out quite nicely – but this is far from being a enterprise backup solution 😉