wiki:Public/Docs/CinnamonBackupRestore

Backup and restore a standard Debian-based Cinnamon repository

Backup

  • Switch to superuser context, using the su command.
  • Create a file /opt/cinnamon/cinnamon-system/backup.sh with the following content:
    killall -SIGTERM supervise
    kill $(ps aux | grep mono | awk '{print $2}')
    service tomcat stop
    
    # Dump DB into cinnamon-data folder
    export PGPASSWORD=<postgres_password>
    pg_dump -U postgres  -h localhost  -w content > /opt/cinnamon/cinnamon-data/content.sql
    export PGPASSWORD=
    
    # Delete empty folders in content store and archive data files in file system:
    find /opt/cinnamon/cinnamon-data/content -empty -type d -delete
    
    # rsync over ssh
    # this is available by many hosting providers and suits the backup needs of a Cinnamon repository very well
    rsync -av --delete --rsh="/usr/bin/sshpass -p <password> ssh -p23"  /opt/cinnamon/cinnamon-data/ <storage_url>
    
    service tomcat start
    
    sleep 60
    supervise /opt/cae/bin &
    
  • Set the permissions on the file to EXECUTE for root.

IMPORTANT: A password for the postgres user must be specified to enable pg_dump.

  • Create a cron job running backup.sh at a suitable time.
  • If the hosting provider offers such functionality, configure daily snapshots of the backup target at a time when all backups have been finished.

Restore

  • Delete old DB and create a new one
    service tomcat stop
    sudo -u postgres psql
    drop database content;
    \q
    sudo -u postgres psql template1
    create database content with owner=cinnamon;
    \q
    sudo -u postgres psql content < /home/install/content.sql
    
  • Restore the content

Depending on where the content is available, restore it to the original content path (/opt/cinnamon/cinnamon-data/content).

NOTE: In the configuration shown in the backup documentation, restore is most easily done by a reverse rsync command.

NOTE: Make sure that the account owning tomcat has read and write permission on the content.

Recreate the index

NOTE: If the system to restore to has no index for the restored repository yet, no further action has to be taken. In case of a restore over an existing repository, existing index files should be deleted before restore.

sudo -u postgres psql content
insert into index_jobs select id,false,'cinnamon.ObjectSystemData',id from objects;
insert into index_jobs select id,false,'cinnamon.Folder',id from folders;
Last modified 10 days ago Last modified on Sep 11, 2019, 10:04:30 AM