Skip to content

Instantly share code, notes, and snippets.

@gyorgygutai
Last active June 28, 2024 10:31
Show Gist options
  • Save gyorgygutai/0904c989c70c23a0b116b76354974fea to your computer and use it in GitHub Desktop.
Save gyorgygutai/0904c989c70c23a0b116b76354974fea to your computer and use it in GitHub Desktop.
Github Actions daily Wordpress backup to AWS S3 (SSH)
name: Daily backup to AWS S3
on:
workflow_dispatch:
schedule:
- cron: "30 00 * * *"
env:
BACKUP_FILE: wp-backup.tar.gz
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: SETUP ssh key
uses: kielabokkie/ssh-key-and-known-hosts-action@v1
with:
ssh-host: ${{ secrets.SSH_HOST }}
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: DOWNLOAD database
run: ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} 'wp db export - --path="/var/www/html" --allow-root | gzip' > database.sql.gz
- name: DOWNLOAD Wordpress files
run: ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "tar -zcvf - /var/www/html" > wordpress.tgz
- name: COMPRESS backup files
run: tar -zcvf ${{ env.BACKUP_FILE }} database.sql.gz wordpress.tgz
- name: UPLOAD backup file to S3
uses: keithweaver/aws-s3-github-action@v1.0.0
with:
command: cp
source: ./${{ env.BACKUP_FILE }}
destination: ${{ secrets.AWS_DESTINATION }}/${{ env.BACKUP_FILE }}
aws_region: eu-central-1
aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: ARCHIVE backup files
uses: actions/upload-artifact@v4
with:
retention-days: 3
compression-level: 9
path: ${{ env.BACKUP_FILE }}
name: ${{ env.BACKUP_FILE }}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment