Advertisement
Stokkes

backup script for danjames92

Dec 24th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.49 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. RCLONE=/usr/bin/rclone
  4. RCLONE_REMOTE=uploadcrypt
  5. RCLONE_PATH=Backups
  6. DAYOFWEEK=$(date +%A)
  7. MONTH=$(date +%B)
  8. DAY=$(date +%d)
  9. WEEK=$(date +%W)
  10. SOURCE=$HOME/.config
  11. EXCLUDE_FILE=$HOME/.config/backup_exclude.txt
  12. TMP_PATH=$HOME/backups
  13.  
  14. # Ensure tmp folder exists
  15. mkdir -p $TMP_PATH
  16.  
  17. # Create the backup archive
  18. echo "Backing up data..."
  19. cd $SOURCE
  20. for D in *;
  21. do
  22.         tar \
  23.                 --exclude-from=$EXCLUDE_FILE \
  24.                 --warning=no-file-changed \
  25.                 -cvzf $TMP_PATH/backup_$D.tar.gz \
  26.                 $D
  27. done
  28.  
  29. # Generate md5 of backup files
  30. cd $TMP_PATH
  31. for F in *;
  32. do
  33.         md5sum $F > $F.md5
  34. done
  35.  
  36. # Copy files to remote
  37. echo "Copying backup files to remote. This will take a while..."
  38. $RCLONE sync --quiet $TMP_PATH $RCLONE_REMOTE:$RCLONE_PATH/Days/$DAYOFWEEK
  39.  
  40. # Weekly backup on Sunday
  41. if [ $DAYOFWEEK == "Sunday" ]; then
  42.         echo "It's Sunday, creating weekly backup for week $WEEK..."
  43.         $RCLONE sync --quiet $RCLONE_REMOTE:$RCLONE_PATH/Days/$DAYOFWEEK $RCLONE_REMOTE:$RCLONE_PATH/Weeks/$WEEK
  44. fi
  45.  
  46. # Monthly backup on 1st day of month
  47. if [ $DAY -eq "01" ]; then
  48.         echo "It's the first of the month, keeping copy of files for $MONTH..."
  49.         $RCLONE sync --quiet $RCLONE_REMOTE:$RCLONE_PATH/Days/$DAYOFWEEK $RCLONE_REMOTE:$RCLONE_PATH/Months/$MONTH
  50. fi
  51.  
  52. # Remove tar/gz files.
  53. echo "Removing tar/gz files from $TMP_PATH..."
  54. rm -rf $TMP_PATH/backup_*.tar.gz && rm -from $TMP_PATH/backup_*.tar.gz.md5
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement