Copying instance data and files

Migrating a Canopy instance's data and files from one server to another

NOTE THAT THESE ACTIONS WILL DELETE ALL DATA ON THE TARGET SERVER

Exporting on source server(as root):

  1. Stop Canopy: 

    systemctl stop canopy canopy-celery

    Note for older versions(3.0) of Canopy one would use `supervisord` instead of `systemd`

  2. Create DB dump: 

    canopy-manage dumpdata --all -o db.json
  3. Archive uploaded files: 

    tar -zcvf canopy_files.tgz /var/opt/checksec/canopy
  4. Start daemons again if required. 

    systemctl start canopy canopy-celery
  5. Copy db.json and canopy_files.tgz to Server B

Importing on target server(as root):

  1. Stop Canopy: 

    systemctl stop canopy canopy-celery
  2. If database structure is outdated or non-existent then configure a production DB: 

    canopy-manage setupdb --prod --drop-tables
  3. Delete data in DB: 

    canopy-manage flush
  4. Remove remaining remnants that are autogenerated:

    Note this may delete files in /var/opt/checksec/canopy/ if their respective objects are still in the DB 

    echo -e 'from django.apps import apps\nfor model in apps.get_models(): model.objects.all().delete()' | SKIP_PRBAC_CHECKS=1 canopy-manage shell
  5. Load db.json: 

    SKIP_PRBAC_CHECKS=1 canopy-manage loaddata db.json
  6. Extract Canopy files: 

    tar -xvf canopy_files.tgz -C /
  7. Set ownership of files: 

    chown -R canopy: /var/opt/checksec/canopy
  8. Start Canopy: 

    systemctl start canopy canopy-celery