Skip to content

Instantly share code, notes, and snippets.

@gyorgygutai
Last active June 28, 2024 10:31
Show Gist options
  • Select an option

  • Save gyorgygutai/fb73d61b8e051f59867dfc287f9f8955 to your computer and use it in GitHub Desktop.

Select an option

Save gyorgygutai/fb73d61b8e051f59867dfc287f9f8955 to your computer and use it in GitHub Desktop.
Github Actions daily Wordpress backup to AWS S3 (Shared hosting over FTP)
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: OBTAIN mysqldump
run: |
sudo apt-get update
sudo apt-get install -y mariadb-client
- name: DOWNLOAD database
run: mysqldump -h${{ secrets.DB_HOST }} -u${{ secrets.DB_USER }} -p${{ secrets.DB_PASSWORD }} ${{ secrets.DB_NAME }} > database.sql.gz
- name: DOWNLOAD Wordpress files
run: |
wget --ftp-user=${{ secrets.FTP_USER }} --ftp-password=${{ secrets.FTP_PASSWORD }} ftp://${{ secrets.FTP_HOST }} -rP ./wordpress
tar -zcvf wordpress.tgz ./wordpress
- name: COMPRESS backup files
run: tar -zcvf ${{ env.BACKUP_FILE }} database.sql.gz wordpress.tgz
- name: UPLOAD backup file to S3
uses: keithweaver/[email protected]
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