{%- 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
#

#scheduling
#by default it is
#when = everyday at 01
{%- if client.scheduling is defined %}
{%- for time in client.scheduling.when %}
when = {{ time }}
{%- endfor %}
{%- endif %}


[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
