|
@@ -0,0 +1,37 @@
|
|
|
|
+#!/bin/bash
|
|
|
|
+# Usage: ./server_file_backup.sh $BACKUP_DIR $SAVE_DIR $EXCLUDE_DIR
|
|
|
|
+# Or: curl -s https://git.immiles.com/miles/scripts/raw/master/server_file_backup.sh | bash -s $BACKUP_DIR $SAVE_DIR $EXCLUDE_DIR
|
|
|
|
+
|
|
|
|
+#set -ex
|
|
|
|
+
|
|
|
|
+# Set Var
|
|
|
|
+BACKUP_DIR=$1
|
|
|
|
+SAVE_DIR=$2
|
|
|
|
+EXCLUDE_DIR=$3
|
|
|
|
+DATE=`date +"%Y%m%d_%H%M%S"`
|
|
|
|
+LOG_FILE=$BACKUP_DIR/file_backup.log
|
|
|
|
+FILE_BASENAME=`echo $BACKUP_DIR | sed 's#/#_#g'`
|
|
|
|
+FILE_BASENAME=${FILE_BASENAME:1}
|
|
|
|
+
|
|
|
|
+RETENTION=$((14*24*60)) # 2 weeks
|
|
|
|
+KEEP=7
|
|
|
|
+
|
|
|
|
+echo "--------------------------$DATE------------------------" >> $LOG_FILE
|
|
|
|
+echo "[BEGIN] Backup [$BACKUP_DIR]" >> $LOG_FILE
|
|
|
|
+
|
|
|
|
+# Backup
|
|
|
|
+tar --exclude="$EXCLUDE_DIR" -v -jpcf $SAVE_DIR/$FILE_BASENAME.$DATE.tar.bz2 $BACKUP_DIR >> $LOG_FILE 2>&1
|
|
|
|
+
|
|
|
|
+if [ $? == "0" ];then
|
|
|
|
+ echo "[SUCCESS] Files in [$SAVE_DIR] backup" >> $LOG_FILE
|
|
|
|
+ echo "--------------------------$DATE------------------------" >> $LOG_FILE
|
|
|
|
+else
|
|
|
|
+ echo "[FAIL] Files in [$SAVE_DIR] backup" >> $LOG_FILE
|
|
|
|
+ echo "--------------------------$DATE------------------------" >> $LOG_FILE
|
|
|
|
+ exit 1
|
|
|
|
+fi
|
|
|
|
+
|
|
|
|
+# Clean up
|
|
|
|
+find $SAVE_DIR -name "*.tar.bz2" -type f -printf '%T@ %p\n' -mmin +$RETENTION | sort -nr | tail -n +$KEEP | awk '{ print $2 }' | xargs -r rm >> $LOG_FILE 2>&1
|
|
|
|
+
|
|
|
|
+exit 0
|