Copyright (C) 2015 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

Written by Bruno Dooms, Frank Van Damme


  • Quick summary: Poppins - backup script with incremental snapshots.
  • Version: Poppins version 0.2 beta


Step 1. Make sure following packages are installed on the backup server:

mercurial, php5-cli (php-cli), rsync, ssh, grep, gzip

Step 2. Verify if the timezone is configured correctly in php. Look for a php.ini file in the /etc directory. For example:

date.timezone = Europe/Brussels

Step 3. Download the source code with the hg command.

hg clone /opt/poppins

Step 4. Make a link to init.php in /usr/local/bin.

ln -s /opt/poppins/init.php /usr/local/bin/poppins

Step 5. Verify the installation.

poppins -v

Step 6. Make sure following packages are installed on remote machine:

rsync, ssh, grep, aptitude (Debian) or yum-utils/rpm (Red Hat).

Step 7. Establish a passwordless ssh login to the client using ssh-keygen & ssh-copy-id.


If using mysql backups, credentials must be provided in the .my.cnf file. See config.


Navigate to the poppins source directory and pull the code with the hg command:

hg pull -u


All configuration in {filename}.poppins.ini. See example.poppins.ini for instructions.



poppins -c {configfile} [--color] [-d] [-h] [-t {tag}] [-v] [--long-options]


Poppins has one required option, "-c", the configfile. An example can be found in the poppins source directory. You must name it {filename}.poppins.ini. Options in the ini file may be overridden by cli options. See example.


poppins -c example.poppins.ini --remote-host=webserver1 --color


-c {configfile}
    Required configuration file.

     Output in pretty colors.

    Debugmode. Output all commands ran by Poppins.

-h, --help
    Print this help page.

-t {tag}
    Add a tag to the application log file.

    Print Poppins version.

Cleaning up old log files


scripts/  -l {logdir} [ -a ]


This script serves the purpose of cleaning up log old log files. Once old snapshots are rotated away, the log files from the backup jobs that created them are no longer useful. will analyze the log files of succeeded backups, and propose to delete those whose snapshots have disappeared from your system. Optionally, it will also let you remove the logs of failed backups.

Take care when removing logs from backups that ended with an ERROR state! They might contain useful information about how or why your backup failed. Since a backup job in ERROR state never has snapshots (Poppins does not create snapshots based on a failed backup), has no way of telling which log files are old enough to delete!

EXAMPLES -l /root/poppins.d/logs -l /var/log/poppins -a


-l {logdir}
     Required: directory where you configured Poppins to save its log files.

    Automatic: old log files will be deleted, but logs of failed backup jobs will be left alone.