Created
September 22, 2020 15:40
-
-
Save behitek/e53c851da2d8f9701171b32901dce535 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| # WP-CLI Back up Script to Google Drive use rclone | |
| # Source: https://nguyenvanhieu.vn | |
| # Author: Hieu Nguyen Van | |
| #define local path for backups | |
| BACKUPPATH=/home/backup/files | |
| #path to WordPress installations | |
| SITESBASE=/var/www | |
| #S3 bucket | |
| REMOTE_DIR=WEB_BACKUP | |
| #date prefix | |
| DATEFORM=$(date +"%Y-%m-%d") | |
| #Days to retain | |
| DAYSKEEP=7 | |
| # Create array() of domains listed in $SITESBASE | |
| SITELIST=() | |
| for DIR in "$SITESBASE"/*/ ; do | |
| DIR2=${DIR%/} # Remove the trailing / | |
| DIR3=${DIR2##*/} # Remove everything up to, and including, the last / | |
| if [[ ${DIR3} = *"."* ]]; then # Only add strings that have a period in them (ex: domain names) | |
| SITELIST+=( "$DIR3" ) | |
| fi | |
| done | |
| #make sure the backup folder exists | |
| mkdir -p "$BACKUPPATH/$DATEFORM" | |
| #start the loop | |
| for SITE in "${SITELIST[@]}"; do | |
| echo "Start backup site $SITE" | |
| cd "$SITESBASE/$SITE/htdocs" || exit | |
| if [ ! -e "$BACKUPPATH/$DATEFORM" ]; then | |
| mkdir "$BACKUPPATH/$DATEFORM" | |
| fi | |
| tar -czf "$BACKUPPATH/$DATEFORM/$SITE.tar.gz" -C "$SITESBASE/$SITE" . | |
| wp db export "$BACKUPPATH/$DATEFORM/$SITE".sql \ | |
| --host="$ALTDBHOST" \ | |
| --path="$SITESBASE/$SITE/htdocs" \ | |
| --single-transaction \ | |
| --quick \ | |
| --lock-tables=false \ | |
| --allow-root \ | |
| --skip-themes \ | |
| --skip-plugins | |
| < "$BACKUPPATH/$DATEFORM/$SITE".sql gzip > "$BACKUPPATH/$DATEFORM/$SITE".sql.gz | |
| rm "$BACKUPPATH/$DATEFORM/$SITE".sql | |
| done | |
| echo "Starting uploading."; | |
| /usr/sbin/rclone move "$BACKUPPATH/$DATEFORM" "gg_drive:$REMOTE_DIR/$DATEFORM" > /dev/null 2>&1 | |
| echo "Done uploading."; | |
| # delete local backup files? | |
| rm -rf "$BACKUPPATH" | |
| /usr/sbin/rclone -q --min-age 1w delete "gg_drive:$REMOTE_DIR" #Remove all backups older than 2 week | |
| /usr/sbin/rclone -q --min-age 1w rmdirs "gg_drive:$REMOTE_DIR" #Remove all empty folders older than 2 week | |
| /usr/sbin/rclone cleanup "gg_drive:" #Cleanup Trash | |
| echo "Finished"; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment