Skip to content

Instantly share code, notes, and snippets.

@5t111111
Created September 16, 2013 04:02
Show Gist options
  • Save 5t111111/6576604 to your computer and use it in GitHub Desktop.
Save 5t111111/6576604 to your computer and use it in GitHub Desktop.
Backup FreeNAS configuration file
#!/bin/sh -
set -e
SRC_FILE="/data/freenas-v1.db"
DEST_DIR="/mnt/ztank/backup/freenas_backup"
FILENAME_FORMAT="`hostname`-`sed 's: .*::;s:FreeNAS-:freenas:;s:\.::g;s:-RELEASE:r:' /etc/version`"
DEST_FILENAME="${FILENAME_FORMAT}-`date +%Y%m%d`.db"
DEST_FILENAME_HOUR="${FILENAME_FORMAT}-`date +%Y%m%d.%H`.db"
OLD_FILENAME="${FILENAME_FORMAT}-`date -j -v -2m +%Y%m%d`.db"
OLD_FILENAME_HOUR="${FILENAME_FORMAT}-`date -j -v -1d +%Y%m%d.%H`.db"
# Back it up
if [ -f "${SRC_FILE}" ]; then
cp "${SRC_FILE}" "${DEST_DIR}/${DEST_FILENAME_HOUR}"
chmod 644 "${DEST_DIR}/${DEST_FILENAME_HOUR}"
rm -f "${DEST_DIR}/${DEST_FILENAME}"
cp -p "${DEST_DIR}/${DEST_FILENAME_HOUR}" "${DEST_DIR}/${DEST_FILENAME}"
fi
# Yesterday's hourly filenames, wipe them out
if [ -f "${DEST_DIR}/${OLD_FILENAME_HOUR}" ]; then
rm "${DEST_DIR}/${OLD_FILENAME_HOUR}"
fi
# Old daily filenames, wipe most of them
if [ -f "${DEST_DIR}/${OLD_FILENAME}" ]; then
if [ `date +%w` -gt 0 ]; then
rm "${DEST_DIR}/${OLD_FILENAME}"
fi
fi
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment