Database Backup #58
This file contains 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
name: Database Backup | |
on: | |
schedule: | |
- cron: '0 0 * * *' # Run daily at midnight | |
workflow_dispatch: # Allow manual trigger | |
env: | |
WORKING_DIRECTORY: backup | |
jobs: | |
backup: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Setup SSH | |
uses: webfactory/[email protected] | |
with: | |
ssh-private-key: '${{ secrets.SSH_PRIVATE_KEY }}' | |
- name: Add SSH known hosts | |
run: | | |
mkdir -p ~/.ssh | |
ssh-keyscan -H ${{ secrets.SERVER_IP }} >> ~/.ssh/known_hosts | |
- name: Download database file | |
run: | | |
# Create directory with timestamp | |
timestamp=$(date +%Y%m%d_%H%M%S) | |
target_directory=$WORKING_DIRECTORY | |
mkdir -p "$target_directory" || { | |
echo "Failed to create directory $target_directory" | |
exit 1 | |
} | |
timestamp=$(date +%Y%m%d_%H%M%S) | |
echo "TIMESTAMP=$timestamp" >> $GITHUB_ENV | |
mkdir -p "${{ env.WORKING_DIRECTORY }}" || { | |
echo "Failed to create directory ${{ env.WORKING_DIRECTORY }}" | |
exit 1 | |
} | |
# Download db files directly to timestamped directory | |
rsync -avz ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }}:~/bot/*.db "${{ env.WORKING_DIRECTORY }}" | |
- name: Upload backup | |
uses: actions/upload-artifact@v4 | |
with: | |
name: database-backup-${{ env.TIMESTAMP }} | |
path: ${{ env.WORKING_DIRECTORY }} |