1
0
mirror of https://github.com/aquatix/dotfiles.git synced 2025-12-06 22:55:10 +01:00
Files
dotfiles/bin/archive_file

48 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
if [ -z "$1" ]; then
echo "No filename to archive provided"
exit 1
elif [ -z "$2" ]; then
echo "No archive directory path provided"
exit 2
fi
FILENAME="${1}"
ARCHIVEDIR="${2}"
if [ ! -z "$3" ]; then
# Alternative archive filename was provided
FILE="${3}"
fi
if [ ! -e $FILENAME ]; then
echo "$FILENAME does not exist, exiting"
exit 3
elif [ ! -e $ARCHIVEDIR ]; then
mkdir -p $ARCHIVEDIR
echo "Created $ARCHIVEDIR"
fi
DATETIME=$(stat -c %Y $FILENAME)
if [ -e "$ARCHIVEDIR/timestamp.txt" ]; then
PREV_DATETIME=$(cat "$ARCHIVEDIR/timestamp.txt")
else
PREV_DATETIME=0
fi
if [ $DATETIME != $PREV_DATETIME ]; then
# Archive the file
if [ -z $FILE ]; then
FILE=$(basename $FILENAME)
fi
TARGETFILE="${ARCHIVEDIR}/${HOSTNAME}_${DATETIME}_${FILE}"
if [ ! -e "${TARGETFILE}" ] && [ ! -e "${TARGETFILE}.gz" ]; then
# Only copy if archived version doesn't exist yet
cp -a $FILENAME "${TARGETFILE}"
gzip -9 "${TARGETFILE}"
fi
echo $DATETIME > "$ARCHIVEDIR/timestamp.txt"
fi