backintime-config(1)

NAME
config - BackInTime configuration files.

SYNOPSIS
~/.config/backintime/config
/etc/backintime/config

DESCRIPTION
Back In Time was developed as pure GUI program and so most functions are only useable with backintime-qt. But it is possible to use Back In Time e.g. on a headless server. You have to create the configuration file (~/.config/backintime/config) manually. Look inside /usr/share/doc/backintime-common/examples/ for examples.

The configuration file has the following format:
keyword=arguments

Arguments don't need to be quoted. All characters are allowed except '='.

Run 'backintime check-config' to verify the configfile, create the snapshot folder and crontab entries.

POSSIBLE KEYWORDS

config.version
    Type: int Allowed Values: 0-99999
    Internal version of current config

    Default: 6

global.hash_collision
    Type: int Allowed Values: 0-99999
    Internal value used to prevent hash collisions on mountpoints. Do not change this.

    Default: 0

global.use_flock
    Type: bool Allowed Values: true|false
    Prevent multiple snapshots (from different profiles or users) to be run at the same time

    Default: false

profile<N>.name
    Type: str Allowed Values: text
    Name of this profile.

    Default: Main profile

profile<N>.schedule.custom_time
    Type: str Allowed Values: comma separated int (8,12,18,23) or */3
    Custom hours for cronjob. Only valid for profile<N>.schedule.mode = 19

    Default: 8,12,18,23

profile<N>.schedule.day
    Type: int Allowed Values: 1-28
    Which day of month the cronjob should run? Only valid for profile<N>.schedule.mode >= 40

    Default: 1

profile<N>.schedule.mode
    Type: int Allowed Values: 0|1|2|4|7|10|12|14|16|18|19|20|25|27|30|40|80
    Which schedule used for crontab. The crontab entry will be generated with 'backintime check-config'.
     0 = Disabled
     1 = at every boot
     2 = every 5 minute
     4 = every 10 minute
     7 = every 30 minute
    10 = every hour
    12 = every 2 hours
    14 = every 4 hours
    16 = every 6 hours
    18 = every 12 hours
    19 = custom defined hours
    20 = every day
    25 = daily anacron
    27 = when drive get connected
    30 = every week
    40 = every month
    80 = every year

    Default: 0

profile<N>.schedule.repeatedly.period
    Type: int Allowed Values: 0-99999
    How many units to wait between new snapshots with anacron? Only valid for profile<N>.schedule.mode = 25|27

    Default: 1

profile<N>.schedule.repeatedly.unit
    Type: int Allowed Values: 10|20|30|40
    Units to wait between new snapshots with anacron.
    10 = hours
    20 = days
    30 = weeks
    40 = months
    Only valid for profile<N>.schedule.mode = 25|27

    Default: 20

profile<N>.schedule.time
    Type: int Allowed Values: 0-24
    What time the cronjob should run? Only valid for profile<N>.schedule.mode >= 20

    Default: 0

profile<N>.schedule.weekday
    Type: int Allowed Values: 1 = monday - 7 = sunday
    Which day of week the cronjob should run? Only valid for profile<N>.schedule.mode = 30

    Default: 7

profile<N>.snapshots.backup_on_restore.enabled
    Type: bool Allowed Values: true|false
    Rename existing files before restore into FILE.backup.YYYYMMDD

    Default: true

profile<N>.snapshots.bwlimit.enabled
    Type: bool Allowed Values: true|false
    Limit rsync bandwidth usage over network. Use this with mode SSH. For mode Local you should rather use ionice.

    Default: false

profile<N>.snapshots.bwlimit.value
    Type: int Allowed Values: 0-99999
    Bandwidth limit in KB/sec.

    Default: 3000

profile<N>.snapshots.continue_on_errors
    Type: bool Allowed Values: true|false
    Continue on errors. This will keep incomplete snapshots rather than deleting and start over again.

    Default: true

profile<N>.snapshots.copy_links
    Type: bool Allowed Values: true|false
    When symlinks are encountered, the item that they point to (the reference) is copied, rather than the symlink.

    Default: false

profile<N>.snapshots.copy_unsafe_links
    Type: bool Allowed Values: true|false
    This tells rsync to copy the referent of symbolic links that point outside the copied tree. Absolute symlinks are also treated like ordinary files.

    Default: false

profile<N>.snapshots.cron.ionice
    Type: bool Allowed Values: true|false
    Run cronjobs with 'ionice -c2 -n7'. This will give BackInTime the lowest IO bandwidth priority to not interrupt any other working process.

    Default: true

profile<N>.snapshots.cron.nice
    Type: bool Allowed Values: true|false
    Run cronjobs with 'nice -n19'. This will give BackInTime the lowest CPU priority to not interrupt any other working process.

    Default: true

profile<N>.snapshots.cron.redirect_stderr
    Type: bool Allowed Values: true|false
    redirect stderr to /dev/null in cronjobs

    Default: False

profile<N>.snapshots.cron.redirect_stdout
    Type: bool Allowed Values: true|false
    redirect stdout to /dev/null in cronjobs

    Default: true

profile<N>.snapshots.dont_remove_named_snapshots
    Type: bool Allowed Values: true|false
    Keep snapshots with names during smart_remove.

    Default: true

profile<N>.snapshots.exclude.bysize.enabled
    Type: bool Allowed Values: true|false
    Enable exclude files by size.

    Default: false

profile<N>.snapshots.exclude.bysize.value
    Type: int Allowed Values: 0-99999
    Exclude files bigger than value in MiB. With 'Full rsync mode' disabled this will only affect new files because for rsync this is a transfer option, not an exclude option. So big files that has been backed up before will remain in snapshots even if they had changed.

    Default: 500

profile<N>.snapshots.exclude.<I>.value
    Type: str Allowed Values: file, folder or pattern (relative or absolute)
    Exclude this file or folder. <I> must be a counter starting with 1

    Default: ''

profile<N>.snapshots.exclude.size
    Type: int Allowed Values: 0-99999
    Quantity of profile<N>.snapshots.exclude.<I> entries.

    Default: -1

profile<N>.snapshots.include.<I>.type
    Type: int Allowed Values: 0|1
    Specify if profile<N>.snapshots.include.<I>.value is a folder (0) or a file (1).

    Default: 0

profile<N>.snapshots.include.<I>.value
    Type: str Allowed Values: absolute path
    Include this file or folder. <I> must be a counter starting with 1

    Default: ''

profile<N>.snapshots.include.size
    Type: int Allowed Values: 0-99999
    Quantity of profile<N>.snapshots.include.<I> entries.

    Default: -1

profile<N>.snapshots.keep_only_one_snapshot.enabled
    Type: bool Allowed Values: true|false
    NOT YET IMPLEMENTED. Remove all snapshots but one.

    Default: false

profile<N>.snapshots.local.nocache
    Type: bool Allowed Values: true|false
    Run rsync on local machine with 'nocache'. This will prevent files from being cached in memory.

    Default: false

profile<N>.snapshots.local_encfs.path
    Type: str Allowed Values: absolute path
    Where to save snapshots in mode 'local_encfs'.

    Default: ''

profile<N>.snapshots.log_level
    Type: int Allowed Values: 1-3
    Log level used during takeSnapshot.
    1 = Error
    2 = Changes
    3 = Info

    Default: 3

profile<N>.snapshots.min_free_inodes.enabled
    Type: bool Allowed Values: true|false
    Remove snapshots until profile<N>.snapshots.min_free_inodes.value free inodes in % is reached.

    Default: true

profile<N>.snapshots.min_free_inodes.value
    Type: int Allowed Values: 1-15
    Keep at least value % free inodes.

    Default: 2

profile<N>.snapshots.min_free_space.enabled
    Type: bool Allowed Values: true|false
    Remove snapshots until profile<N>.snapshots.min_free_space.value free space is reached.

    Default: true

profile<N>.snapshots.min_free_space.unit
    Type: int Allowed Values: 10|20
    10 = MB
    20 = GB

    Default: 20

profile<N>.snapshots.min_free_space.value
    Type: int Allowed Values: 1-99999
    Keep at least value + unit free space.

    Default: 1

profile<N>.snapshots.mode
    Type: str Allowed Values: local|local_encfs|ssh|ssh_encfs
    Use mode (or backend) for this snapshot. Look at 'man backintime' section 'Modes'.

    Default: local

profile<N>.snapshots.<MODE>.password.save
    Type: bool Allowed Values: true|false
    Save password to system keyring (gnome-keyring or kwallet). <MODE> must be the same as profile<N>.snapshots.mode

    Default: false

profile<N>.snapshots.<MODE>.password.use_cache
    Type: bool Allowed Values: true|false
    Cache password in RAM so it can be read by cronjobs. Security issue: root might be able to read that password, too. <MODE> must be the same as profile<N>.snapshots.mode

    Default: true if home is not encrypted

profile<N>.snapshots.no_on_battery
    Type: bool Allowed Values: true|false
    Don't take snapshots if the Computer runs on battery.

    Default: false

profile<N>.snapshots.notify.enabled
    Type: bool Allowed Values: true|false
    Display notifications (errors, warnings) through libnotify.

    Default: true

profile<N>.snapshots.path
    Type: str Allowed Values: absolute path
    Where to save snapshots in mode 'local'. This path must contain a folderstructure like 'backintime/<HOST>/<USER>/<PROFILE_ID>'

    Default: ''

profile<N>.snapshots.path.host
    Type: str Allowed Values: text
    Set Host for snapshot path

    Default: local hostname

profile<N>.snapshots.path.profile
    Type: str Allowed Values: 1-99999
    Set Profile-ID for snapshot path

    Default: current Profile-ID

profile<N>.snapshots.path.user
    Type: str Allowed Values: text
    Set User for snapshot path

    Default: local username

profile<N>.snapshots.path.uuid
    Type: str Allowed Values: text
    Devices uuid used to automatically set up udev rule if the drive is not connected.

    Default: ''

profile<N>.snapshots.preserve_acl
    Type: bool Allowed Values: true|false
    Preserve ACL. The source and destination systems must have compatible ACL entries for this option to work properly.

    Default: false

profile<N>.snapshots.preserve_xattr
    Type: bool Allowed Values: true|false
    Preserve extended attributes (xattr).

    Default: false

profile<N>.snapshots.remove_old_snapshots.enabled
    Type: bool Allowed Values: true|false
    Remove all snapshots older than value + unit

    Default: true

profile<N>.snapshots.remove_old_snapshots.unit
    Type: int Allowed Values: 20|30|80
    20 = days
    30 = weeks
    80 = years

    Default: 80

profile<N>.snapshots.remove_old_snapshots.value
    Type: int Allowed Values: 0-99999
    Snapshots older than this times units will be removed

    Default: 10

profile<N>.snapshots.rsync_options.enabled
    Type: bool Allowed Values: true|false
    Past additional options to rsync

    Default: false

profile<N>.snapshots.rsync_options.value
    Type: str Allowed Values: text
    rsync options. Options must be quoted e.g. --exclude-from="/path/to/my exclude file"

    Default: ''

profile<N>.snapshots.smart_remove
    Type: bool Allowed Values: true|false
    Run smart_remove to clean up old snapshots after a new snapshot was created.

    Default: false

profile<N>.snapshots.smart_remove.keep_all
    Type: int Allowed Values: 0-99999
    Keep all snapshots for X days.

    Default: 2

profile<N>.snapshots.smart_remove.keep_one_per_day
    Type: int Allowed Values: 0-99999
    Keep one snapshot per day for X days.

    Default: 7

profile<N>.snapshots.smart_remove.keep_one_per_month
    Type: int Allowed Values: 0-99999
    Keep one snapshot per month for X month.

    Default: 24

profile<N>.snapshots.smart_remove.keep_one_per_week
    Type: int Allowed Values: 0-99999
    Keep one snapshot per week for X weeks.

    Default: 4

profile<N>.snapshots.smart_remove.run_remote_in_background
    Type: bool Allowed Values: true|false
    If using mode SSH or SSH-encrypted, run smart_remove in background on remote machine

    Default: false

profile<N>.snapshots.ssh.check_commands
    Type: bool Allowed Values: true|false
    Check if all commands (used during takeSnapshot) work like expected on the remote host.

    Default: true

profile<N>.snapshots.ssh.check_ping
    Type: bool Allowed Values: true|false
    Check if the remote host is available before trying to mount.

    Default: true

profile<N>.snapshots.ssh.cipher
    Type: str Allowed Values: default | aes192-cbc | aes256-cbc | aes128-ctr | aes192-ctr | aes256-ctr | arcfour | arcfour256 | arcfour128 | aes128-cbc | 3des-cbc | blowfish-cbc | cast128-cbc
    Cipher that is used for encrypting the SSH tunnel. Depending on the environment (network bandwidth, cpu and hdd performance) a different cipher might be faster.

    Default: default

profile<N>.snapshots.ssh.host
    Type: str Allowed Values: IP or domain address
    Remote host used for mode 'ssh' and 'ssh_encfs'.

    Default: ''

profile<N>.snapshots.ssh.ionice
    Type: bool Allowed Values: true|false
    Run rsync and other commands on remote host with 'ionice -c2 -n7'

    Default: false

profile<N>.snapshots.ssh.max_arg_length
    Type: int Allowed Values: 0, >700
    Maximum argument length of commands run on remote host. This can be tested with 'python3 /usr/share/backintime/common/sshMaxArg.py USER@HOST'.
    0 = unlimited

    Default: 0

profile<N>.snapshots.ssh.nice
    Type: bool Allowed Values: true|false
    Run rsync and other commands on remote host with 'nice -n19'

    Default: false

profile<N>.snapshots.ssh.nocache
    Type: bool Allowed Values: true|false
    Run rsync on remote host with 'nocache'. This will prevent files from being cached in memory.

    Default: false

profile<N>.snapshots.ssh.path
    Type: str Allowed Values: absolute or relative path
    Snapshot path on remote host. If the path is relative (no leading '/') it will start from remote Users homedir. An empty path will be replaced with './'.

    Default: ''

profile<N>.snapshots.ssh.port
    Type: int Allowed Values: 0-65535
    SSH Port on remote host.

    Default: 22

profile<N>.snapshots.ssh.prefix.enabled
    Type: bool Allowed Values: true|false
    Add prefix to every command which run through SSH on remote host.

    Default: false

profile<N>.snapshots.ssh.prefix.value
    Type: str Allowed Values: text
    Prefix to run before every command on remote host. Variables need to be escaped with \$FOO. This doesn't touch rsync. So to add a prefix for rsync use profile<N>.snapshots.rsync_options.value with --rsync-path="FOO=bar:\$FOO /usr/bin/rsync"

    Default: 'PATH=/opt/bin:/opt/sbin:\$PATH'

profile<N>.snapshots.ssh.private_key_file
    Type: str Allowed Values: absolute path to private key file
    Private key file used for password-less authentication on remote host.

    Default: ~/.ssh/id_dsa

profile<N>.snapshots.ssh.user
    Type: str Allowed Values: text
    Remote SSH user

    Default: local users name

profile<N>.snapshots.take_snapshot_regardless_of_changes
    Type: bool Allowed Values: true|false
    Create a new snapshot regardless if there were changes or not.

    Default: false

profile<N>.snapshots.use_checksum
    Type: bool Allowed Values: true|false
    Use checksum to detect changes rather than size + time.

    Default: false

profile<N>.snapshots.user_backup.ionice
    Type: bool Allowed Values: true|false
    Run BackInTime with 'ionice -c2 -n7' when taking a manual snapshot. This will give BackInTime the lowest IO bandwidth priority to not interrupt any other working process.

    Default: false

profile<N>.user_callback.no_logging
    Type: bool Allowed Values: true|false
    Do not catch std{out|err} from user-callback script. The script will only write to current TTY. Default is to catch std{out|err} and write it to syslog and TTY again.

    Default: false

profiles
    Type: str Allowed Values: int separated by colon (e.g. 1:3:4)
    All active Profiles (<N> in profile<N>.snapshots...).

    Default: 1

profiles.version
    Type: int Allowed Values: 1
    Internal version of profiles config.

    Default: 1

SEE ALSO
backintime, backintime-qt.

Back In Time also has a website: https://github.com/bit-team/backintime

AUTHOR
This manual page was written by BIT Team(<bit-team@lists.launchpad.net>).