Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save AmesianX/444f003167f9172912dcd49f9e8c57ee to your computer and use it in GitHub Desktop.
Save AmesianX/444f003167f9172912dcd49f9e8c57ee to your computer and use it in GitHub Desktop.

Revisions

  1. @AlmostGosu AlmostGosu created this gist Jun 20, 2018.
    45 changes: 45 additions & 0 deletions confluence-h2-restore.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,45 @@
    #!/bin/bash
    # This script has to be run as your confluence user or root
    # Create a backup of, and attempt to restore a confluence h2 internal database

    # Go home.
    cd ~

    # Stop confluence
    /opt/atlassian/confluence/bin/stop-confluence.sh
    # Really though...
    pgrep java | xargs kill

    #create a good backup of your database files
    mkdir -p ~/confluence-db-restore/originals
    cp /var/atlassian/application-data/confluence/database/*.db ~/confluence-db-restore/originals

    # create another good backup of your database files
    tar -cvzf ~/confluence-db-restore/"$(date '+%Y-%m-%d')_h2db_backup.tar.gz" ~/confluence-db-restore/originals

    # create a copy of your db to work from
    cp ~/confluence-db-restore/originals/*.db ~/confluence-db-restore

    # Create recovery SQL script
    /opt/atlassian/confluence/jre/bin/java -cp \
    /opt/atlassian/confluence/confluence/WEB-INF/lib/h2-*.jar \
    org.h2.tools.Recover

    # move working files and restore database
    mkdir -p ~/confluence-db-restore/recovery
    mv *.sql ~/confluence-db-restore/recovery
    cd ~/confluence-db-restore/recovery
    /opt/atlassian/confluence/jre/bin/java -cp \
    /opt/atlassian/confluence/confluence/WEB-INF/lib/h2-*.jar \
    org.h2.gools.RunScript -url jdbc:h2:./h2db -user sa -script *.sql


    ################################################################################
    # IMPORTANT THAT YOU MOVE THE RECOVERED DATABASE IF THE RESTORE WAS SUCCESSFUL #
    # Uncomment this line to copy the restored database over your existing #
    ################################################################################

    # cp -f ~/confluence-db-restore/recovery/*.db /var/atlassian/application-data/confluence/database/
    # chown -R confluence:confluence /var/atlassian/application-data/confluence

    systemctl restart confluence