backintime-config(1)

πŸ“¦
version 1.5.5 Β· 6 versions
, in debian trixie, fedora 43, ubuntu questing

πŸ’– NAME πŸ’–

okay so this is the manual for backintime-config(1) β€” the config page, aka the whole entire tea on BackInTime configuration files. 🫢


πŸ¦‹ SYNOPSIS πŸ¦‹

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

🌸 DESCRIPTION 🌸

ngl, Back In Time was originally built as a pure GUI program, so most of its functions are only usable with backintime-qt. But bestie, you can absolutely use Back In Time on, like, a headless server. The catch? You have to create the configuration file (~/.config/backintime/config) manually, with your own two hands. πŸ’… Look inside /usr/share/doc/backintime-common/examples/ for examples.

The configuration file has this format:

keyword=arguments

Arguments do not need to be quoted, no cap. Every character is allowed except =.

Run backintime check-config to verify the configfile, create the snapshot folder and crontab entries. That's the vibe check for your config, fr fr. ✨


πŸ‘‘ POSSIBLE KEYWORDS πŸ‘‘

  • global.hash_collision β€” Type: int. Allowed Values: 0-99999. Internal value used to prevent hash collisions on mountpoints. Do not change this. Like, seriously, hands off. πŸ™ˆ Default: 0
  • global.language β€” Type: str. Allowed Values: text. Language code (ISO 639) used to translate the user interface. If it's empty, the operating system's current locale is used. If it's en, the translation is not active and the original English source strings are used. Same thing happens if the value is unknown. Default: ''
  • global.use_flock β€” Type: bool. Allowed Values: true|false. Prevent multiple snapshots (from different profiles or users) from being 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.debug β€” Type: bool. Allowed Values: true|false. Enable debug output to system log for schedule mode. Default: false
  • 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 is used for crontab. The crontab entry will be generated with backintime check-config. Here's the whole menu, bestie:
    • 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-2400. Position-coded number with the format "hhmm" to specify the hour and minute the cronjob should start (eg. 2015 means a quarter past 8pm). Leading zeros can be omitted (eg. 30 = 0030). Only valid for profile<N>.schedule.mode = 20 (daily), 30 (weekly), 40 (monthly) and 80 (yearly). 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: false
  • 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: false
  • 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 Bestie, if the laptop is running on battery, do NOT take snapshots. Like, let it rest, it's tired. Default: false
  • profile<N>.snapshots.notify.enabled β€” Type: bool Β· Allowed Values: true|false Show notifications (errors, warnings) through libnotify. Yes queen, tell me when something's up. Default: true
  • profile<N>.snapshots.one_file_system β€” Type: bool Β· Allowed Values: true|false Uses rsync's --one-file-system so it doesn't go wandering across filesystem boundaries while recursing. Stay in your lane, babe. Default: false
  • profile<N>.snapshots.path β€” Type: str Β· Allowed Values: absolute path Where your snapshots live in mode local. This path must contain a folder structure like backintime/<HOST>/<USER>/<PROFILE_ID> Default: ''
  • profile<N>.snapshots.path.host β€” Type: str Β· Allowed Values: text Sets the Host for the snapshot path. Default: local hostname
  • profile<N>.snapshots.path.profile β€” Type: str Β· Allowed Values: 1-99999 Sets the Profile-ID for the snapshot path. Default: current Profile-ID
  • profile<N>.snapshots.path.user β€” Type: str Β· Allowed Values: text Sets the User for the snapshot path. Default: local username
  • profile<N>.snapshots.path.uuid β€” Type: str Β· Allowed Values: text The device's uuid, used to automatically set up a udev rule if the drive isn't connected. iykyk. Default: ''
  • profile<N>.snapshots.preserve_acl β€” Type: bool Β· Allowed Values: true|false Preserve ACL. Heads up: the source and destination systems must have compatible ACL entries for this option to work properly. Otherwise it's giving chaos. Default: false
  • profile<N>.snapshots.preserve_xattr β€” Type: bool Β· Allowed Values: true|false Preserve extended attributes (xattr). Keep the whole vibe of your files intact. Default: false
  • profile<N>.snapshots.remove_old_snapshots.enabled β€” Type: bool Β· Allowed Values: true|false Remove all snapshots older than value + unit. Out with the old ✨ 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 many units will be removed. Default: 10
  • profile<N>.snapshots.rsync_options.enabled β€” Type: bool Β· Allowed Values: true|false Pass additional options to rsync. (Yes, the original says "Past". We're keeping it, we don't gatekeep typos πŸ’€) Default: false
  • profile<N>.snapshots.rsync_options.value β€” Type: str Β· Allowed Values: text The actual rsync options. They 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. Spring cleaning but make it automatic 🧹 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. (Their wording, not mine 🫢) 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 you're using mode SSH or SSH-encrypted, run smart_remove in the background on the remote machine. Default: false
  • profile<N>.snapshots.ssh.check_commands β€” Type: bool Β· Allowed Values: true|false Check that all commands (used during takeSnapshot) actually work like they're supposed to on the remote host. Trust but verify, bestie. Default: true
  • profile<N>.snapshots.ssh.check_ping β€” Type: bool Β· Allowed Values: true|false Check if the remote host is even available before trying to mount. No point knocking if nobody's home. 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 The cipher used to encrypt the SSH tunnel. Depending on the environment (network bandwidth, cpu and hdd performance) a different cipher might be faster. It's giving ✨optimization✨. Default: default
  • profile<N>.snapshots.ssh.host β€” Type: str Β· Allowed Values: IP or domain address The 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 the remote host with 'ionice -c2 -n7'. Default: false
  • profile<N>.snapshots.ssh.max_arg_length β€” Type: int Β· Allowed Values: 0, >700 Maximum command length of commands run on the remote host. You can test this for all ssh profiles in the configuration with 'python3 /usr/share/backintime/common/sshMaxArg.py LENGTH'. 0 = unlimited Default: 0
  • profile<N>.snapshots.ssh.nice β€” Type: bool Β· Allowed Values: true|false Run rsync and other commands on the remote host with 'nice -n19'. Default: false
  • profile<N>.snapshots.ssh.nocache β€” Type: bool Β· Allowed Values: true|false Run rsync on the 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 The snapshot path on the remote host. If the path is relative (no leading /) it will start from the remote User's homedir. An empty path will be replaced with './'. Default: ''
  • profile<N>.snapshots.ssh.port β€” Type: int Β· Allowed Values: 0-65535 SSH Port on the remote host. Default: 22
  • profile<N>.snapshots.ssh.prefix.enabled β€” Type: bool Β· Allowed Values: true|false Add a prefix to every command that runs through SSH on the remote host. Default: false
  • profile<N>.snapshots.ssh.prefix.value β€” Type: str Β· Allowed Values: text The prefix to run before every command on the remote host. Variables need to be escaped with \$FOO. Important: 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 The private key file used for password-less authentication on the remote host. πŸ”‘ Default: ~/.ssh/id_dsa
  • profile<N>.snapshots.ssh.proxy_host β€” Type: str Β· Allowed Values: text Proxy host used to connect to the remote host. Default: IP or domain address
  • profile<N>.snapshots.ssh.proxy_host_port β€” Type: int Β· Allowed Values: 0-65535 Proxy host port used to connect to the remote host. Default: 22
  • profile<N>.snapshots.ssh.proxy_user β€” Type: str Β· Allowed Values: text Remote SSH user. Default: the local user's name
  • profile<N>.snapshots.ssh.user β€” Type: str Β· Allowed Values: text Remote SSH user. Default: local user's name
  • profile<N>.snapshots.take_snapshot_regardless_of_changes β€” Type: bool Β· Allowed Values: true|false Create a new snapshot regardless of whether there were changes or not. Main character energy: it's happening anyway πŸ’… 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 gives BackInTime the lowest IO bandwidth priority so it doesn't interrupt any other working process. Polite queen behavior πŸŽ€ Default: false
  • profile<N>.user_callback.no_logging β€” Type: bool Β· Allowed Values: true|false Do not catch std{out|err} from the user-callback script. The script will only write to the current TTY. The 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 (that's the <N> in profile<N>.snapshots...). Default: 1
  • profiles.version β€” Type: int Β· Allowed Values: 1 Internal version of profiles config. Don't touch it, it's doing its job 😌 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-dev@python.org>).


okay that's literally the whole thing, bestie β€” you ate that 🫢✨ This page is from version 1.5.5, dated November 2024, and it's the manual for backintime-config(1). Now go configure your backups, you icon πŸ‘‘πŸ’…

πŸ“¦ where this page comes from