Backup

Periodic backup

A backup of the database and the data are launched every day with a logrotate task. It is run at 06:25 a.m. and backups are kept for 7 days.

Logrotate task:

/etc/logrotate.d/xivo-backup

Logrotate cron:

/etc/cron.daily/logrotate

Retrieve the backup

You can retrieve the backup from the web-interface in Services ‣ IPBX ‣ IPBX Configuration ‣ Backup Files page.

Otherwise, with shell access, you can retrieve them in /var/backups/xivo. In this directory you will find db.tgz and data.tgz files for the database and data backups.

Backup scripts:

/usr/sbin/xivo-backup /usr/sbin/xivo-backup-consul-kv

Backup location:

/var/backups/xivo

What is actually backed-up?

Data

Here is the list of folders and files that are backed-up:

  • /etc/asterisk/
  • /etc/dahdi/
  • /etc/dhcp/
  • /etc/hostname
  • /etc/hosts
  • /etc/ldap/
  • /etc/network/if-up.d/xivo-routes
  • /etc/network/interfaces
  • /etc/ntp.conf
  • /etc/resolv.conf
  • /etc/ssl/
  • /etc/wanpipe/
  • /etc/xivo-agentd/
  • /etc/xivo-agid/
  • /etc/xivo-amid/
  • /etc/xivo-auth/
  • /etc/xivo-call-logd/
  • /etc/xivo-confd/
  • /etc/xivo-confgend-client/
  • /etc/xivo-ctid/
  • /etc/xivo-ctid-ng/
  • /etc/xivo-dird/
  • /etc/xivo-dird-phoned/
  • /etc/xivo-dxtora/
  • /etc/xivo-purge-db/
  • /etc/xivo/
  • /usr/local/sbin/
  • /usr/share/xivo/XIVO-VERSION
  • /var/lib/asterisk/
  • /var/lib/consul/
  • /var/lib/xivo-provd/
  • /var/lib/xivo/
  • /var/log/asterisk/
  • /var/spool/asterisk/

The following files/folders are excluded from this backup:

  • folders:
    • /var/lib/xivo-provd/plugins/*/var/cache/*
    • /var/spool/asterisk/monitor/
    • /var/spool/asterisk/meetme/
  • log files, coredump files
  • audio recordings
  • and, files greater than 10 MiB or folders containing more than 100 files if they belong to one of these folders:
    • /var/lib/xivo/sounds/
    • /var/lib/asterisk/sounds/custom/
    • /var/lib/asterisk/moh/
    • /var/spool/asterisk/voicemail/
    • /var/spool/asterisk/monitor/

Database

The database asterisk from PostgreSQL is backed up. This include almost everything that is configured via the web interface.

Consul

The key-values of Consul whose key start with xivo/ are backed up. These include:

  • authentication tokens from xivo-auth
  • bookmarked contacts of the People Xlet
  • personal contacts of the People Xlet

Creating backup files manually

Warning

A backup file may take a lot of space on the disk. You should check the free space on the partition before creating one.

Database

You can manually create a database backup file named db-manual.tgz in /var/tmp by issuing the following commands:

xivo-backup db /var/tmp/db-manual

Files

You can manually create a data backup file named data-manual.tgz in /var/tmp by issuing the following commands:

xivo-backup data /var/tmp/data-manual

Consul

You can manually create a consul backup file /var/tmp/consul-manual.json by issuing the following commands:

xivo-backup-consul-kv -o /var/tmp/consul-manual.json

Restore

Introduction

A backup of both the configuration files and the database used by a XiVO installation is done automatically every day. These backups are created in the /var/backups/xivo directory and are kept for 7 days.

Limitations

  • You must restore a backup on the same version of XiVO that was backed up
  • You must restore a backup on a machine with the same hostname and IP address
  • Be aware that this procedure applies only to XiVO >= 14.08 (see 14.08).

Before Restoring the System

Warning

Before restoring a XiVO on a fresh install you have to setup XiVO using the wizard (see Running the Wizard section).

Stop monit and all the xivo services:

xivo-service stop

Restoring System Files

System files are stored in the data.tgz file located in the /var/backups/xivo directory.

This file contains for example, voicemail files, musics, voice guides, phone sets firmwares, provisioning server configuration database.

To restore the file

tar xvfp /var/backups/xivo/data.tgz -C /

Restoring the Database

Warning

  • This will destroy all the current data in your database.
  • You have to check the free space on your system partition before extracting the backups.

Database backups are created as db.tgz files in the /var/backups/xivo directory. These tarballs contains a dump of the database used in XiVO.

In this example, we’ll restore the database from a backup file named db.tgz placed in the home directory of root.

First, extract the content of the db.tgz file into the /var/tmp directory and go inside the newly created directory:

tar xvf db.tgz -C /var/tmp
cd /var/tmp/pg-backup

Drop the asterisk database and restore it with the one from the backup:

sudo -u postgres dropdb asterisk
sudo -u postgres pg_restore -C -d postgres asterisk-*.dump

Restoring and Keeping System Configuration

System configuration like network interfaces is stored in the database. It is possible to keep this configuration and only restore xivo data.

Rename the asterisk database to asterisk_previous:

sudo -u postgres psql -c 'ALTER DATABASE asterisk RENAME TO asterisk_previous'

Restore the asterisk database from the backup:

sudo -u postgres pg_restore -C -d postgres asterisk-*.dump

Restore the system configuration tables from the asterisk_previous database:

sudo -u postgres pg_dump -c -t dhcp -t netiface -t resolvconf asterisk_previous | sudo -u postgres psql asterisk

Drop the asterisk_previous database:

sudo -u postgres dropdb asterisk_previous

Warning

Restoring the data.tgz file also restores system files such as host hostname, network interfaces, etc. You will need to reapply the network configuration if you restore the data.tgz file.

Restoring Consul KV

Consul key-values are stored in /var/backup/xivo/consul-kv.json. See also What is backed up in Consul.

To restore the file

xivo-restore-consul-kv -i /var/backup/xivo/consul-kv.json

After Restoring The System

Restart the services you stopped in the first step:

xivo-service start

You may also reboot the system.