Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- RCLONE=/usr/bin/rclone
- RCLONE_REMOTE=uploadcrypt
- RCLONE_PATH=Backups
- DAYOFWEEK=$(date +%A)
- MONTH=$(date +%B)
- DAY=$(date +%d)
- WEEK=$(date +%W)
- SOURCE=$HOME/.config
- EXCLUDE_FILE=$HOME/.config/backup_exclude.txt
- TMP_PATH=$HOME/backups
- # Ensure tmp folder exists
- mkdir -p $TMP_PATH
- # Create the backup archive
- echo "Backing up data..."
- cd $SOURCE
- for D in *;
- do
- tar \
- --exclude-from=$EXCLUDE_FILE \
- --warning=no-file-changed \
- -cvzf $TMP_PATH/backup_$D.tar.gz \
- $D
- done
- # Generate md5 of backup files
- cd $TMP_PATH
- for F in *;
- do
- md5sum $F > $F.md5
- done
- # Copy files to remote
- echo "Copying backup files to remote. This will take a while..."
- $RCLONE sync --quiet $TMP_PATH $RCLONE_REMOTE:$RCLONE_PATH/Days/$DAYOFWEEK
- # Weekly backup on Sunday
- if [ $DAYOFWEEK == "Sunday" ]; then
- echo "It's Sunday, creating weekly backup for week $WEEK..."
- $RCLONE sync --quiet $RCLONE_REMOTE:$RCLONE_PATH/Days/$DAYOFWEEK $RCLONE_REMOTE:$RCLONE_PATH/Weeks/$WEEK
- fi
- # Monthly backup on 1st day of month
- if [ $DAY -eq "01" ]; then
- echo "It's the first of the month, keeping copy of files for $MONTH..."
- $RCLONE sync --quiet $RCLONE_REMOTE:$RCLONE_PATH/Days/$DAYOFWEEK $RCLONE_REMOTE:$RCLONE_PATH/Months/$MONTH
- fi
- # Remove tar/gz files.
- echo "Removing tar/gz files from $TMP_PATH..."
- 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