mirror of
https://github.com/aquatix/dotfiles.git
synced 2025-12-06 20:35:11 +01:00
48 lines
1.1 KiB
Bash
Executable 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
|