12345678910111213141516171819202122232425262728293031323334353637 |
- #!/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
|