| {%- from "backupninja/map.jinja" import client, service_grains with context %} | 
 | {%- from "linux/map.jinja" import system with context %} | 
 | {%- from "linux/map.jinja" import network with context %} | 
 | # | 
 | # rsync handler file | 
 | # | 
 |  | 
 | [general] | 
 |  | 
 | # rsync log file | 
 | #log = /var/log/backup/rsync.log | 
 |  | 
 | # partition device where the backup lives | 
 | # just use this option if your data is backed up in a separate partition and | 
 | # you want backupninja to fsck it; this option will just be used if fscheck | 
 | # (see below) is set to 'yes' | 
 | #partition =  | 
 |  | 
 | # set to 1 if fsck should run on partition after the backup is made | 
 | #fscheck =  | 
 |  | 
 | # set to 1 if partition is mounted read-only | 
 | #read_only =  | 
 |  | 
 | # backup partition mountpoint or backup main folder | 
 | # this doesn't need to be a real partition, but should be at least the | 
 | # main folder where the backup is being stored | 
 | mountpoint = /srv/backupninja | 
 |  | 
 | # folder relative do mountpoint where the backup should be stored | 
 | backupdir = {{ system.name }}.{{ system.domain }} | 
 |  | 
 | # temp folder | 
 | #tmp = /tmp | 
 |  | 
 | # specify backup storage format: short, long or mirror (i.e, no rotations) | 
 | # | 
 | # In the short format, incremental backups are rotated every day the handler | 
 | # runs an by a finite number of times (backup.0, backup.1, backup.1, etc), so | 
 | # if you want to have incremental backups for longer periods (like months) you | 
 | # have to configure rotations for 30 or more using the "days" parameter at the | 
 | # [general] section in the handler config. | 
 | #  | 
 | # The short format is better described here: | 
 | # http://www.mikerubel.org/computers/rsync_snapshots/#Incremental | 
 | #  | 
 | # The long format is inspired by the maildir handler and allows keeping backups | 
 | # of longer periods (weeks and months) using less rotations as it stores | 
 | # the increments in folders like daily.1, weekly.1, monthly.1 and has three | 
 | # rotation parameters: | 
 | #  | 
 | #   keepdaily   = number of daily backup increments | 
 | #   keepweekly  = number of weekly backup increments | 
 | #   keepmonthly = number of monthly backup increments | 
 | # | 
 | format = short | 
 |  | 
 | # for short storage format, specify the number of backup increments (min = 2, set to 1 or less to disable) | 
 | # | 
 | # Note that setting days = 0 is almost the same as using format = mirror except | 
 | # that with the days config your backup gets a .0 suffix at the destination | 
 | # folder, making it easier to turn it later to an incremental backup. | 
 | # | 
 | days = 7 | 
 |  | 
 | # for long storage format, specify the number of daily backup increments | 
 | #keepdaily = 7 | 
 |  | 
 | # for long storage format, specify the number of weekly backup increments | 
 | #keepweekly = 3 | 
 |  | 
 | # for long storage format, specify the number of monthly backup increments | 
 | #keepmonthly = 1 | 
 |  | 
 | # rsync command nice level | 
 | #nicelevel = 0 | 
 |  | 
 | # set to "yes" if your system isnt handling timestamps correctly | 
 | #enable_mv_timestamp_bug = no | 
 |  | 
 | # temp folder | 
 | #tmp = /tmp | 
 |  | 
 | # set to "yes" if you want to use multiconnection ssh support | 
 | #multiconnection = no | 
 |  | 
 | [source] | 
 |  | 
 | # where the data to be backed up is (local or remote) | 
 | from = local | 
 |  | 
 | # if remote source, specify the hostname or IP | 
 | #host = | 
 |  | 
 | # remote port number (remote source only) | 
 | #port = 22 | 
 |  | 
 | # remote user name (remote source only) | 
 | #user = | 
 |  | 
 | # when "yes", test the connection for a remote source before backup | 
 | #testconnect = no | 
 |  | 
 | {%- for backup_name, backup in service_grains.backupninja.backup.iteritems() %} | 
 |  | 
 | {%- for fs_include in backup.get('fs_includes', []) %} | 
 | include = {{ fs_include }} | 
 | {%- endfor %} | 
 |  | 
 | {%- for fs_exclude in backup.fs_excludes %} | 
 | exclude = {{ fs_exclude }} | 
 | {%- endfor %} | 
 |  | 
 | {%- endfor %} | 
 |  | 
 | # exlude some vserver from backup | 
 | # this is used only if vservers = yes on backupninja.conf | 
 | #exclude_vserver = excluded_vserver1 | 
 | #exclude_vserver = excluded_vserver2 | 
 |  | 
 | # ssh command line (remote only) | 
 | #ssh = ssh | 
 |  | 
 | # ssh or rsync (remote source only) | 
 | #protocol = ssh | 
 |  | 
 | # rsync program | 
 | # it defaults to $RSYNC value from backupninja.conf | 
 | #rsync = $RSYNC | 
 |  | 
 | # rsync command options | 
 | #rsync_options = "-av --delete --recursive" | 
 |  | 
 | # when set to 1, use numeric ids instead of user/group mappings on rsync | 
 | #numericids = | 
 |  | 
 | # if set to 1, compress data on rsync (remote source only) | 
 | #compress = 0 | 
 |  | 
 | # set a bandwidth limit in KB/s (remote source only) | 
 | #bandwidthlimit = | 
 |  | 
 | # remote rsync program (remote source only) | 
 | #remote_rsync = rsync | 
 |  | 
 | # ssh key file (remote source only) | 
 | #id_file = /root/.ssh/id_dsa | 
 |  | 
 | # set to "yes" to rsync use a batch file as source | 
 | #batch = no | 
 |  | 
 | # folder where the batch file is located | 
 | #batchbase = | 
 |  | 
 | # set yes if you want rsync to use a file list source | 
 | #filelist = no | 
 |  | 
 | # folder where the file list is placed | 
 | #filelistbase = | 
 |  | 
 | [dest] | 
 |  | 
 | # backup destination type (local or remote) | 
 | dest = remote | 
 |  | 
 | #  when "yes", test the connection for a remote source before backup | 
 | testconnect = no | 
 |  | 
 | # ssh command line (remote dest only) | 
 | #ssh = ssh | 
 |  | 
 | # ssh or rsync (remote dest only) | 
 | #protocol = ssh | 
 |  | 
 | # when set to 1, use numeric ids instead of user/group mappings on rsync | 
 | #numericids = | 
 |  | 
 | # if set to 1, compress data on rsync (remote source only) | 
 | #compress = 0 | 
 |  | 
 | # destination host name (remote destination only) | 
 | host = {{ client.target.host }} | 
 |  | 
 | # remote port number (remote destination only) | 
 | {% if client.target.port is defined %} | 
 | port = {{ client.target.port }} | 
 | {% else %} | 
 | port = 22 | 
 | {% endif %} | 
 |  | 
 | # remote user name (remote destination only) | 
 | user = {{ client.target.user }} | 
 |  | 
 | # ssh key file (remote destination only) | 
 | id_file = /root/.ssh/id_rsa | 
 |  | 
 | # set a bandwidth limit in KB/s (remote destination only) | 
 | #bandwidthlimit = | 
 |  | 
 | # remote rsync program (remote dest only) | 
 | {%- if grains.os == 'Ubuntu' and grains.osrelease >= '14.04' %} | 
 | # remote_rsync = '{% for backup_name, backup in service_grains.backupninja.backup.iteritems() %}{% for fs_include in backup.get('fs_includes', []) %}mkdir -p /srv/backupninja/{{ network.fqdn }}{{ fs_include }};{% endfor %}{% endfor %} rsync' | 
 | {%- else %} | 
 | #remote_rsync = rsync | 
 | {%- endif %} | 
 |  | 
 | # set to "yes" to rsync write a batch file from the changes | 
 | #batch = no | 
 |  | 
 | # folder where the batch file should be written | 
 | #batchbase = /var/backups/rsync/batches | 
 |  | 
 | # set to yes so rsync use the --fake-super flag (remote destination only) | 
 | #fakesuper = yes | 
 |  | 
 | # This section is used to stop and start services that should be turned of | 
 | # during the backup procedure. | 
 | # | 
 | #[services] | 
 | # | 
 | # absolute path where scripts are located | 
 | #initscripts = /etc/init.d | 
 | # | 
 | # script name to be stoped at the begining of the backup and started at its end | 
 | #service = | 
 |  | 
 | # You can also specify some system comands if you don't want the default system values | 
 | # by enabling the section below. | 
 | # | 
 | #[system] | 
 | # | 
 | # rm command | 
 | #rm = rm | 
 | # | 
 | # cp command | 
 | #cp = cp | 
 | # | 
 | # touch command | 
 | #touch = touch | 
 | # | 
 | # mv command | 
 | #mv = mv | 
 | # | 
 | # fsck command | 
 | #fsck = fsck |