diff --git a/borgmatic/config/bram.yaml b/borgmatic/config/bram.yaml new file mode 100644 index 0000000..0fed983 --- /dev/null +++ b/borgmatic/config/bram.yaml @@ -0,0 +1,37 @@ +location: + source_directories: + - /remote/server/bram + repositories: + - /repo/bram +storage: + encryption_passcommand: cat /keys/bram.key + compression: lz4 + archive_name_format: '{now:%Y-%m-%d}' + +retention: + keep_daily: 7 + keep_weekly: 4 + keep_monthly: 6 + prefix: '20' + +consistency: + checks: + - repository + - archives + check_last: 3 + prefix: '20' + +hooks: + before_backup: + - echo -e "\n\n" + - echo "#" + - echo "# `date` - Starting a backup job." + - echo "#" + after_backup: + - echo "#" + - echo "# `date` - Backup created." + - echo "#" + on_error: + - echo "#" + - echo "# `date` - Error while creating a backup." + - echo "#" diff --git a/borgmatic/config/config.yaml.default b/borgmatic/config/config.yaml.default new file mode 100644 index 0000000..f06fc2a --- /dev/null +++ b/borgmatic/config/config.yaml.default @@ -0,0 +1,170 @@ +# Where to look for files to backup, and where to store those backups. See +# https://borgbackup.readthedocs.io/en/stable/quickstart.html and +# https://borgbackup.readthedocs.io/en/stable/usage.html#borg-create for details. +location: + # List of source directories to backup (required). Globs and tildes are expanded. + source_directories: + - /home + - /etc + - /var/log/syslog* + + # Stay in same file system (do not cross mount points). + one_file_system: true + + # Mode in which to operate the files cache. See + # https://borgbackup.readthedocs.io/en/stable/usage/create.html#description for + # details. + files_cache: ctime,size,inode + + # Alternate Borg local executable. Defaults to "borg". + local_path: borg1 + + # Alternate Borg remote executable. Defaults to "borg". + remote_path: borg1 + + # Paths to local or remote repositories (required). Tildes are expanded. Multiple + # repositories are backed up to in sequence. See ssh_command for SSH options like + # identity file or port. + repositories: + - user@backupserver:sourcehostname.borg + + # Any paths matching these patterns are included/excluded from backups. Globs are + # expanded. (Tildes are not.) Note that Borg considers this option experimental. + # See the output of "borg help patterns" for more details. Quote any value if it + # contains leading punctuation, so it parses correctly. + patterns: + - R / + - '- /home/*/.cache' + - + /home/susan + - '- /home/*' + + # Read include/exclude patterns from one or more separate named files, one pattern + # per line. Note that Borg considers this option experimental. See the output of + # "borg help patterns" for more details. + patterns_from: + - /etc/borgmatic/patterns + + # Any paths matching these patterns are excluded from backups. Globs and tildes + # are expanded. See the output of "borg help patterns" for more details. + exclude_patterns: + - '*.pyc' + - ~/*/.cache + - /etc/ssl + + # Read exclude patterns from one or more separate named files, one pattern per + # line. See the output of "borg help patterns" for more details. + exclude_from: + - /etc/borgmatic/excludes + + # Exclude directories that contain a CACHEDIR.TAG file. See + # http://www.brynosaurus.com/cachedir/spec.html for details. + exclude_caches: true + + # Exclude directories that contain a file with the given filename. + exclude_if_present: .nobackup + +# Repository storage options. See +# https://borgbackup.readthedocs.io/en/stable/usage.html#borg-create and +# https://borgbackup.readthedocs.io/en/stable/usage/general.html#environment-variables for +# details. +storage: + # The standard output of this command is used to unlock the encryption key. Only + # use on repositories that were initialized with passcommand/repokey encryption. + # Note that if both encryption_passcommand and encryption_passphrase are set, + # then encryption_passphrase takes precedence. + encryption_passcommand: secret-tool lookup borg-repository repo-name + + # Passphrase to unlock the encryption key with. Only use on repositories that were + # initialized with passphrase/repokey encryption. Quote the value if it contains + # punctuation, so it parses correctly. And backslash any quote or backslash + # literals as well. + encryption_passphrase: "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" + + # Type of compression to use when creating archives. See + # https://borgbackup.readthedocs.org/en/stable/usage.html#borg-create for details. + # Defaults to no compression. + compression: lz4 + + # Remote network upload rate limit in kiBytes/second. + remote_rate_limit: 100 + + # Command to use instead of just "ssh". This can be used to specify ssh options. + ssh_command: ssh -i /path/to/private/key + + # Umask to be used for borg create. + umask: 0077 + + # Maximum seconds to wait for acquiring a repository/cache lock. + lock_wait: 5 + + # Name of the archive. Borg placeholders can be used. See the output of + # "borg help placeholders" for details. Default is + # "{hostname}-{now:%Y-%m-%dT%H:%M:%S.%f}". If you specify this option, you must + # also specify a prefix in the retention section to avoid accidental pruning of + # archives with a different archive name format. + archive_name_format: '{hostname}-documents-{now}' + + unknown_unencrypted_repo_access_is_ok: true + +# Retention policy for how many backups to keep in each category. See +# https://borgbackup.readthedocs.org/en/stable/usage.html#borg-prune for details. +# At least one of the "keep" options is required for pruning to work. +retention: + # Keep all archives within this time interval. + keep_within: 3H + + # Number of minutely archives to keep. + keep_minutely: 60 + + # Number of hourly archives to keep. + keep_hourly: 24 + + # Number of daily archives to keep. + keep_daily: 7 + + # Number of weekly archives to keep. + keep_weekly: 4 + + # Number of monthly archives to keep. + keep_monthly: 6 + + # Number of yearly archives to keep. + keep_yearly: 1 + + # When pruning, only consider archive names starting with this prefix. + # Borg placeholders can be used. See the output of "borg help placeholders" for + # details. Default is "{hostname}-". + prefix: sourcehostname + +# Consistency checks to run after backups. See +# https://borgbackup.readthedocs.org/en/stable/usage.html#borg-check and +# https://borgbackup.readthedocs.org/en/stable/usage.html#borg-extract for details. +consistency: + # List of one or more consistency checks to run: "repository", "archives", and/or + # "extract". Defaults to "repository" and "archives". Set to "disabled" to disable + # all consistency checks. "repository" checks the consistency of the repository, + # "archive" checks all of the archives, and "extract" does an extraction dry-run + # of just the most recent archive. + checks: + - repository + - archives + + # Restrict the number of checked archives to the last n. Applies only to the "archives" check. + check_last: 3 + +# Shell commands or scripts to execute before and after a backup or if an error has occurred. +# IMPORTANT: All provided commands and scripts are executed with user permissions of borgmatic. +# Do not forget to set secure permissions on this file as well as on any script listed (chmod 0700) to +# prevent potential shell injection or privilege escalation. +hooks: + # List of one or more shell commands or scripts to execute before creating a backup. + before_backup: + - echo "`date` - Starting a backup job." + + # List of one or more shell commands or scripts to execute after creating a backup. + after_backup: + - echo "`date` - Backup created." + + # List of one or more shell commands or scripts to execute in case an exception has occurred. + on_error: + - echo "`date` - Error while creating a backup." diff --git a/borgmatic/config/crontab.txt b/borgmatic/config/crontab.txt new file mode 100644 index 0000000..0f6b500 --- /dev/null +++ b/borgmatic/config/crontab.txt @@ -0,0 +1 @@ +0 2 * * * /config/run.sh diff --git a/borgmatic/config/etc.yaml b/borgmatic/config/etc.yaml new file mode 100644 index 0000000..c5d54b7 --- /dev/null +++ b/borgmatic/config/etc.yaml @@ -0,0 +1,36 @@ +location: + source_directories: + - /shuttle/etc + repositories: + - /repo/etc +storage: + compression: lz4 + archive_name_format: '{now:%Y-%m-%d}' + +retention: + keep_daily: 7 + keep_weekly: 4 + keep_monthly: 6 + prefix: '20' + +consistency: + checks: + - repository + - archives + check_last: 3 + prefix: '20' + +hooks: + before_backup: + - echo -e "\n\n" + - echo "#" + - echo "# `date` - Starting a backup job." + - echo "#" + after_backup: + - echo "#" + - echo "# `date` - Backup created." + - echo "#" + on_error: + - echo "#" + - echo "# `date` - Error while creating a backup." + - echo "#" diff --git a/borgmatic/config/home.yaml b/borgmatic/config/home.yaml new file mode 100644 index 0000000..8cfba69 --- /dev/null +++ b/borgmatic/config/home.yaml @@ -0,0 +1,39 @@ +location: + source_directories: + - /shuttle/home + patterns: + - '- /shuttle/home/.snapshot' + - '- /shuttle/home/*/.cache' + repositories: + - /repo/home +storage: + compression: lz4 + archive_name_format: '{now:%Y-%m-%d}' + +retention: + keep_daily: 7 + keep_weekly: 4 + keep_monthly: 6 + prefix: '20' + +consistency: + checks: + - repository + - archives + check_last: 3 + prefix: '20' + +hooks: + before_backup: + - echo -e "\n\n" + - echo "#" + - echo "# `date` - Starting a backup job." + - echo "#" + after_backup: + - echo "#" + - echo "# `date` - Backup created." + - echo "#" + on_error: + - echo "#" + - echo "# `date` - Error while creating a backup." + - echo "#" diff --git a/borgmatic/config/opt.yaml b/borgmatic/config/opt.yaml new file mode 100644 index 0000000..dd7624e --- /dev/null +++ b/borgmatic/config/opt.yaml @@ -0,0 +1,42 @@ +location: + source_directories: + - /shuttle/opt + patterns: + - '- /shuttle/opt/.snapshot' + - '- /shuttle/opt/jupyter/conda' + - '- /shuttle/opt/emby/metadata' + - '- /shuttle/opt/btsync/var/*.journal*' + - '- /shuttle/opt/openvpn-server/*.log' + repositories: + - /repo/opt +storage: + compression: lz4 + archive_name_format: '{now:%Y-%m-%d}' + +retention: + keep_daily: 7 + keep_weekly: 4 + keep_monthly: 6 + prefix: '20' + +consistency: + checks: + - repository + - archives + check_last: 3 + prefix: '20' + +hooks: + before_backup: + - echo -e "\n\n" + - echo "#" + - echo "# `date` - Starting a backup job." + - echo "#" + after_backup: + - echo "#" + - echo "# `date` - Backup created." + - echo "#" + on_error: + - echo "#" + - echo "# `date` - Error while creating a backup." + - echo "#" diff --git a/borgmatic/config/root.yaml b/borgmatic/config/root.yaml new file mode 100644 index 0000000..0d6c39e --- /dev/null +++ b/borgmatic/config/root.yaml @@ -0,0 +1,38 @@ +location: + source_directories: + - /shuttle/root + patterns: + - '- /shuttle/root/.cache' + repositories: + - /repo/root +storage: + compression: lz4 + archive_name_format: '{now:%Y-%m-%d}' + +retention: + keep_daily: 7 + keep_weekly: 4 + keep_monthly: 6 + prefix: '20' + +consistency: + checks: + - repository + - archives + check_last: 3 + prefix: '20' + +hooks: + before_backup: + - echo -e "\n\n" + - echo "#" + - echo "# `date` - Starting a backup job." + - echo "#" + after_backup: + - echo "#" + - echo "# `date` - Backup created." + - echo "#" + on_error: + - echo "#" + - echo "# `date` - Error while creating a backup." + - echo "#" diff --git a/borgmatic/config/run.sh b/borgmatic/config/run.sh new file mode 100755 index 0000000..2176e46 --- /dev/null +++ b/borgmatic/config/run.sh @@ -0,0 +1,10 @@ +/usr/bin/borgmatic --stats -v 0 -c /config/home.yaml >> /log/home.log 2>&1 +/usr/bin/borgmatic --stats -v 0 -c /config/root.yaml >> /log/root.log 2>&1 +/usr/bin/borgmatic --stats -v 0 -c /config/opt.yaml >> /log/opt.log 2>&1 +/usr/bin/borgmatic --stats -v 0 -c /config/etc.yaml >> /log/etc.log 2>&1 +#/usr/bin/borgmatic --stats -v 0 -c /config/argenta.yaml >> /log/argenta.log 2>&1 +export REMOTE=/remote/server/bram +mkdir -p ${REMOTE} +sshfs user@bram.veenboer.xyz:/media/helios/Bram ${REMOTE} +/usr/bin/borgmatic --stats -v 0 -c /config/bram.yaml >> /log/bram.log 2>&1 +umount ${REMOTE}