server_file_backup.sh 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/bin/bash
  2. # Usage: ./server_file_backup.sh $BACKUP_DIR $SAVE_DIR $EXCLUDE_DIR
  3. # Or: curl -s https://git.immiles.com/miles/scripts/raw/master/server_file_backup.sh | bash -s $BACKUP_DIR $SAVE_DIR $EXCLUDE_DIR
  4. #set -ex
  5. # Set Var
  6. BACKUP_DIR=$1
  7. SAVE_DIR=$2
  8. EXCLUDE_DIR=$3
  9. DATE=`date +"%Y%m%d_%H%M%S"`
  10. LOG_FILE=$BACKUP_DIR/file_backup.log
  11. FILE_BASENAME=`echo $BACKUP_DIR | sed 's#/#_#g'`
  12. FILE_BASENAME=${FILE_BASENAME:1}
  13. RETENTION=$((14*24*60)) # 2 weeks
  14. KEEP=7
  15. echo "--------------------------$DATE------------------------" >> $LOG_FILE
  16. echo "[BEGIN] Backup [$BACKUP_DIR]" >> $LOG_FILE
  17. # Backup
  18. tar --exclude="$EXCLUDE_DIR" -v -jpcf $SAVE_DIR/$FILE_BASENAME.$DATE.tar.bz2 $BACKUP_DIR >> $LOG_FILE 2>&1
  19. if [ $? == "0" ];then
  20. echo "[SUCCESS] Files in [$SAVE_DIR] backup" >> $LOG_FILE
  21. echo "--------------------------$DATE------------------------" >> $LOG_FILE
  22. else
  23. echo "[FAIL] Files in [$SAVE_DIR] backup" >> $LOG_FILE
  24. echo "--------------------------$DATE------------------------" >> $LOG_FILE
  25. exit 1
  26. fi
  27. # Clean up
  28. 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
  29. exit 0