Simple, configuration-driven backup software for servers and workstations

Overview
title permalink
borgmatic
index.html

It's your data. Keep it that way.

borgmatic logo

borgmatic is simple, configuration-driven backup software for servers and workstations. Protect your files with client-side encryption. Backup your databases too. Monitor it all with integrated third-party services.

The canonical home of borgmatic is at https://torsion.org/borgmatic.

Here's an example configuration file:

location:
    # List of source directories to backup.
    source_directories:
        - /home
        - /etc

    # Paths of local or remote repositories to backup to.
    repositories:
        - [email protected]:backups.borg
        - [email protected]:repo
        - [email protected]:repo
        - /var/lib/backups/local.borg

retention:
    # Retention policy for how many backups to keep.
    keep_daily: 7
    keep_weekly: 4
    keep_monthly: 6

consistency:
    # List of checks to run to validate your backups.
    checks:
        - repository
        - archives

hooks:
    # Custom preparation scripts to run.
    before_backup:
        - prepare-for-backup.sh

    # Databases to dump and include in backups.
    postgresql_databases:
        - name: users

    # Third-party services to notify you if backups aren't happening.
    healthchecks: https://hc-ping.com/be067061-cf96-4412-8eae-62b0c50d6a8c

Want to see borgmatic in action? Check out the screencast.

borgmatic is powered by Borg Backup.

Integrations

PostgreSQL      MySQL      MariaDB      Healthchecks      Cronitor      Cronhub      PagerDuty      rsync.net      BorgBase     

Getting started

Your first step is to install and configure borgmatic.

For additional documentation, check out the links above for borgmatic how-to and reference guides.

Hosting providers

Need somewhere to store your encrypted off-site backups? The following hosting providers include specific support for Borg/borgmatic—and fund borgmatic development and hosting when you use these links to sign up. (These are referral links, but without any tracking scripts or cookies.)

  • BorgBase: Borg hosting service with support for monitoring, 2FA, and append-only repos
  • Lima-Labs: Affordable, reliable cloud data storage accessable via SSH/SCP/FTP for Borg backups or any other bulk storage needs

Additionally, rsync.net and Hetzner have compatible storage offerings, but do not currently fund borgmatic development or hosting.

Support and contributing

Issues

You've got issues? Or an idea for a feature enhancement? We've got an issue tracker. In order to create a new issue or comment on an issue, you'll need to login first. Note that you can login with an existing GitHub account if you prefer.

If you'd like to chat with borgmatic developers or users, head on over to the #borgmatic IRC channel on Libera Chat, either via web chat or a native IRC client. If you don't get a response right away, please hang around a while—or file a ticket instead.

Also see the security policy for any security issues.

Other questions or comments? Contact [email protected].

Contributing

borgmatic source code is available and is also mirrored on GitHub for convenience.

borgmatic is licensed under the GNU General Public License version 3 or any later version.

If you'd like to contribute to borgmatic development, please feel free to submit a Pull Request or open an issue first to discuss your idea. We also accept Pull Requests on GitHub, if that's more your thing. In general, contributions are very welcome. We don't bite!

Also, please check out the borgmatic development how-to for info on cloning source code, running tests, etc.

Build Status

Comments
  • Fixed ruamel version (not working with ruamel >=0.15.5)

    Fixed ruamel version (not working with ruamel >=0.15.5)

    Ruamel 0.15.5 (released about 13 hours ago) not working correctly in conjunction with pykwalify. With a default config, when borgmatic starts

    pykwalify.errors.RuleError: <RuleError: error code 4: Value for keyword 'map/mapping' is not a dict: Path: '/'>

    Installing ruamel.yaml==0.15.4 seem to solve the issue.

    opened by filicivi 15
  • Added support for file globs in source_directories.

    Added support for file globs in source_directories.

    source_directories_glob can be used to enable glob support (defaults to disabled). Let me know what needs to be changed (option names or other stuff) for this patch to get accepted.

    opened by ypid 10
  • added Prometheus metrics module

    added Prometheus metrics module

    Hi @witten ,

    this PR adds the ability to capture and parse the output of borg itself. In my case, I wanted to export those metrics to a Prometheus Node exporter Textfile Collector, so I added that module.

    However it should be easy to add different metrics modules now, easily.

    Hope you like it and it will find its way into master :)

    Cheers

    opened by andreasnuesslein 9
  • Only check archives with matching prefix

    Only check archives with matching prefix

    Borg supports checking a subset of archives in a repo by providing a prefix --prefix PREFIX when doing check. This PR adds functionality to use the same prefix defined in retention config to be passed as this param to borg.

    http://borgbackup.readthedocs.io/en/stable/usage/check.html

    opened by nickw444 7
  • Fixed Broken pg_dumpall Restore

    Fixed Broken pg_dumpall Restore

    When the database name is set to 'all', borgmatic uses pg_dumpall instead of pg_dump to dump the database. pg_dumpall outputs a plain-text format and pg_restore does not accept that format. To run these plain-text outputs, psql is needed instead.

    This pull request implements that. Thanks!

    opened by ndbeals 5
  • Add Gitlab CI pyinstaller standalone binary autobuild

    Add Gitlab CI pyinstaller standalone binary autobuild

    I used https://github.com/cdrx/docker-pyinstaller for some hints on how to do this.

    It builds standalone binaries much like the borg project distributes. Creating a standalone build of borgmatic means it's possible use borg via borgmatic on a machine by simply copying two files onto it.

    I've only created a build for Linux amd64; there's no reason other platforms couldn't be supported. The docker-pyinstaller repo I linked above will provide a bit of guidance to anyone looking to add support for other platforms.

    opened by DanielDent 5
  • feat: add verify_ssl flag for Healthchecks

    feat: add verify_ssl flag for Healthchecks

    Hi :wave:,

    the following pull request adds the optional flag verify_ssl to the Healthchecks monitoring configuration. The variable defaults to True.

    Use case: When running a self-hosted Healthchecks instance with self-signed certificates the ping command fails with the error:

    /etc/borgmatic.d/config.yaml: Pinging Healthchecks finish
    /etc/borgmatic.d/config.yaml: Healthchecks error: HTTPSConnectionPool(host='<local_network_dns_redacted>', port=443): Max retries exceeded with url: /ping/1bb6a6f7-679f-4b14-8f47-4480b542a28a (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)')))
    

    Let me know what you think. Hope you don't mind me creating the pull request here at Github rather than over at torsion.org.

    opened by Tooa 4
  • TypeError with --json argument and dump SQL db

    TypeError with --json argument and dump SQL db

    With --json option and mysql dump database TypeError appear : Traceback (most recent call last): File "/opt/borgmatic/bin/borgmatic", line 8, in sys.exit(main()) File "/opt/borgmatic/lib/python3.8/site-packages/borgmatic/commands/borgmatic.py", line 920, in main summary_logs = parse_logs + list(collect_configuration_run_summary_logs(configs, arguments)) File "/opt/borgmatic/lib/python3.8/site-packages/borgmatic/commands/borgmatic.py", line 813, in collect_configuration_run_summary_logs results = list(run_configuration(config_filename, config, arguments)) File "/opt/borgmatic/lib/python3.8/site-packages/borgmatic/commands/borgmatic.py", line 114, in run_configuration yield from run_actions( File "/opt/borgmatic/lib/python3.8/site-packages/borgmatic/commands/borgmatic.py", line 350, in run_actions json_output = borg_create.create_archive( File "/opt/borgmatic/lib/python3.8/site-packages/borgmatic/borg/create.py", line 323, in create_archive return execute_command_with_processes( File "/opt/borgmatic/lib/python3.8/site-packages/borgmatic/execute.py", line 262, in execute_command_with_processes log_outputs( File "/opt/borgmatic/lib/python3.8/site-packages/borgmatic/execute.py", line 102, in log_outputs logger.log(output_log_level, line) File "/usr/lib/python3.8/logging/init.py", line 1508, in log raise TypeError("level must be an integer") TypeError: level must be an integer

    opened by deleb 4
  • Support for user hooks

    Support for user hooks

    This PR adds support for user-defined shell scripts or single commands to be executed before and after a backup, or if an error has occurred. The intended use case is just as described in two existing issues [1, 2].

    Using the "before_backup", "after_backup", and "on_error" sections in the config file, it is possible to list one or multiple commands to execute. For example, this can be used to send emails after successful / failed backups, check disk space, execute mysqldump prior to creating a backup, etc.

    For a better overview I've split the implementation into 3 commits:

    1. af38fdea01a145a6c3437df0193823bb04d20e21 enables the value of the "example" fields in schema.yaml to be false by default, e.g. when used in conjunction with type: bool. This comes in handy to demonstrate the use of hooks in the generated default config. As the user has to customize the commands to execute anyway, it seems advisable to disable the hooks by default.

    2. 55fd81332455270a94392adda3502fafd0b8b655 is the actual implementation for hooks. For now, I've moved exec_cmd() into the separate file hook.py. As it's only 4 lines it might as well fit into borgmatic.py but I guess that's a matter of taste :-)

    3. 7685613d280817c5efd954c715d12f339fa2753f removes "example" fields recursively from schema. It might be a bit overkill just for user hooks but I think it's useful anyway, considering that future config versions could add further "map" sections regardless of their position in the hierarchy.

    It may not be missed that shell support in borgmatic also has some security implications:

    • In the worst case scenario, a config file specifies a shell script that is also writable by attackers. For example, lets assume the specified script resides in the document root of a vHost user and the provided web application is not exactly secure. After successful exploitation an attacker might place his own commands into the script and wait for the next cron run of borgmatic. In that case, an attacker's payload would be executed with the same permissions as borgmatic. If borgmatic is called with higher-level permissions, the consequences could be fatal.

    • In another scenario, imagine config files having insecure file permissions. An attacker couldn't only read the encryption passphrase but might also be able to insert arbitrary shell commands. The implications would be the same as above.

    In summary, I think user hooks would be a very useful extension to borgmatic if used with care. Anyone enabling them should understand the security implications.

    [1] https://tree.taiga.io/project/witten-borgmatic/issue/16 [2] https://tree.taiga.io/project/witten-borgmatic/issue/38

    opened by Churro 4
  • specify pg dump/restore commands (#311)

    specify pg dump/restore commands (#311)

    add pg_dump_command, pg_restore_command and psql_command configuration options. In this way, users can specify alternative commands on a per-database basis.

    This is convenient if one needs to do backup/restore of different versions of postgres. A concrete example is the use of different versions of postgres running in docker containers for which one would want to use commands inside these containers while still being able to use pipes. Example:

    hooks:
      postgresql_databases:
        - name: my_pg_database
          pg_dump_command: docker exec my_pg_database pg_dump
          pg_restore_command: docker exec my_pg_database pg_restore
          psql_command: docker exec my_pg_database psql
    

    It partially fixes (#311) since it's just for the postgres hook.

    opened by jpaniagualaconich 3
  • Fix error on cleanup multiple database dumps

    Fix error on cleanup multiple database dumps

    Hallo witten,

    I have found a little error in your remove_database_dumps function. If you have multiple dumps of a database type, the function parameter dump_path is overwritten in foreach loop with dump_file. In the second loop, the database name is appended a second time to dump_path.

    This pull request fixed the error in the cleanup routine for database dumps.

    regards Raphael

    opened by raphaelheinrich 3
Releases(1.7.5)
  • 1.7.5(Nov 27, 2022)

    • #311: Override PostgreSQL dump/restore commands via configuration options.
    • #604: Fix traceback when a configuration section is present but lacking any options.
    • #607: Clarify documentation examples for include merging and deep merging.
    • #611: Fix "data" consistency check to support "check_last" and consistency "prefix" options.
    • #613: Clarify documentation about multiple repositories and separate configuration files.
    Source code(tar.gz)
    Source code(zip)
  • 1.7.4(Oct 14, 2022)

    • #596: Fix special file detection erroring when broken symlinks are encountered.
    • #597, #598: Fix regression in which "check" action errored on certain systems ("Cannot determine Borg repository ID").
    Source code(tar.gz)
    Source code(zip)
  • 1.7.3(Oct 12, 2022)

    • #357: Add "break-lock" action for removing any repository and cache locks leftover from Borg aborting.
    • #360: To prevent Borg hangs, unconditionally delete stale named pipes before dumping databases.
    • #587: When database hooks are enabled, auto-exclude special files from a "create" action to prevent Borg from hanging. You can override/prevent this behavior by explicitly setting the "read_special" option to true.
    • #587: Warn when ignoring a configured "read_special" value of false, as true is needed when database hooks are enabled.
    • #589: Update sample systemd service file to allow system "idle" (e.g. a video monitor turning off) while borgmatic is running.
    • #590: Fix for potential data loss (data not getting backed up) when the "patterns_from" option was used with "source_directories" (or the "~/.borgmatic" path existed, which got injected into "source_directories" implicitly). The fix is for borgmatic to convert "source_directories" into patterns whenever "patterns_from" is used, working around a Borg bug: https://github.com/borgbackup/borg/issues/6994
    • #590: In "borgmatic create --list" output, display which files get excluded from the backup due to patterns or excludes.
    • #591: Add support for Borg 2's "--match-archives" flag. This replaces "--glob-archives", which borgmatic now treats as an alias for "--match-archives". But note that the two flags have slightly different syntax. See the Borg 2 changelog for more information: https://borgbackup.readthedocs.io/en/2.0.0b3/changes.html#version-2-0-0b3-2022-10-02
    • Fix for "borgmatic --archive latest" not finding the latest archive when a verbosity is set.
    Source code(tar.gz)
    Source code(zip)
  • 1.7.2(Sep 8, 2022)

    • #577: Fix regression in which "borgmatic info --archive ..." showed repository info instead of archive info with Borg 1.
    • #582: Fix hang when database hooks are enabled and "patterns" contains a parent directory of "~/.borgmatic".
    Source code(tar.gz)
    Source code(zip)
  • 1.7.1(Aug 25, 2022)

    • #542: Make the "source_directories" option optional. This is useful for "check"-only setups or using "patterns" exclusively.
    • #574: Fix for potential data loss (data not getting backed up) when the "patterns" option was used with "source_directories" (or the "~/.borgmatic" path existed, which got injected into "source_directories" implicitly). The fix is for borgmatic to convert "source_directories" into patterns whenever "patterns" is used, working around a potential Borg bug: https://github.com/borgbackup/borg/issues/6994
    Source code(tar.gz)
    Source code(zip)
  • 1.7.0(Aug 22, 2022)

    • #463: Add "before_actions" and "after_actions" command hooks that run before/after all the actions for each repository. These new hooks are a good place to run per-repository steps like mounting/unmounting a remote filesystem.
    • #463: Update documentation to cover per-repository configurations: https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/
    • #557: Support for Borg 2 while still working with Borg 1. This includes new borgmatic actions like "rcreate" (replaces "init"), "rlist" (list archives in repository), "rinfo" (show repository info), and "transfer" (for upgrading Borg repositories). For the most part, borgmatic tries to smooth over differences between Borg 1 and 2 to make your upgrade process easier. However, there are still a few cases where Borg made breaking changes. See the Borg 2.0 changelog for more information: https://www.borgbackup.org/releases/borg-2.0.html
    • #557: If you install Borg 2, you'll need to manually upgrade your existing Borg 1 repositories before use. Note that Borg 2 stable is not yet released as of this borgmatic release, so don't use Borg 2 for production until it is! See the documentation for more information: https://torsion.org/borgmatic/docs/how-to/upgrade/#upgrading-borg
    • #557: Rename several configuration options to match Borg 2: "remote_rate_limit" is now "upload_rate_limit", "numeric_owner" is "numeric_ids", and "bsd_flags" is "flags". borgmatic still works with the old options.
    • #557: Remote repository paths without the "ssh://" syntax are deprecated but still supported for now. Remote repository paths containing "~" are deprecated in borgmatic and no longer work in Borg 2.
    • #557: Omitting the "--archive" flag on the "list" action is deprecated when using Borg 2. Use the new "rlist" action instead.
    • #557: The "--dry-run" flag can now be used with the "rcreate"/"init" action.
    • #565: Fix handling of "repository" and "data" consistency checks to prevent invalid Borg flags.
    • #566: Modify "mount" and "extract" actions to require the "--repository" flag when multiple repositories are configured.
    • #571: BREAKING: Remove old-style command-line action flags like "--create, "--list", etc. If you're already using actions like "create" and "list" instead, this change should not affect you.
    • #571: BREAKING: Rename "--files" flag on "prune" action to "--list", as it lists archives, not files.
    • #571: Add "--list" as alias for "--files" flag on "create" and "export-tar" actions.
    • Add support for disabling TLS verification in Healthchecks monitoring hook with "verify_tls" option.
    Source code(tar.gz)
    Source code(zip)
  • 1.6.6(Jul 20, 2022)

    • #559: Update documentation about configuring multiple consistency checks or multiple databases.
    • #560: Fix all database hooks to error when the requested database to restore isn't present in the Borg archive.
    • #561: Fix command-line "--override" flag to continue supporting old configuration file formats.
    • #563: Fix traceback with "create" action and "--json" flag when a database hook is configured.
    Source code(tar.gz)
    Source code(zip)
  • 1.6.5(Jul 1, 2022)

    • #553: Fix logging to include the full traceback when Borg experiences an internal error, not just the first few lines.
    • #554: Fix all monitoring hooks to warn if the server returns an HTTP 4xx error. This can happen with Healthchecks, for instance, when using an invalid ping URL.
    • #555: Fix environment variable plumbing so options like "encryption_passphrase" and "encryption_passcommand" in one configuration file aren't used for other configuration files.
    Source code(tar.gz)
    Source code(zip)
  • 1.6.4(Jun 24, 2022)

    • #546, #382: Keep your repository passphrases and database passwords outside of borgmatic's configuration file with environment variable interpolation. See the documentation for more information: https://torsion.org/borgmatic/docs/how-to/provide-your-passwords/
    Source code(tar.gz)
    Source code(zip)
  • 1.6.3(Jun 9, 2022)

    • #541: Add "borgmatic list --find" flag for searching for files across multiple archives, useful for hunting down that file you accidentally deleted so you can extract it. See the documentation for more information: https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/#searching-for-a-file
    • #543: Add a monitoring hook for sending push notifications via ntfy. See the documentation for more information: https://torsion.org/borgmatic/docs/how-to/monitor-your-backups/#ntfy-hook
    • Fix Bash completion script to no longer alter your shell's settings (complain about unset variables or error on pipe failures).
    • Deprecate "borgmatic list --successful" flag, as listing only non-checkpoint (successful) archives is now the default in newer versions of Borg.
    Source code(tar.gz)
    Source code(zip)
  • 1.6.2(May 31, 2022)

    • #523: Reduce the default consistency check frequency and support configuring the frequency independently for each check. Also add "borgmatic check --force" flag to ignore configured frequencies. See the documentation for more information: https://torsion.org/borgmatic/docs/how-to/deal-with-very-large-backups/#check-frequency
    • #536: Fix generate-borgmatic-config to support more complex schema changes like the new Healthchecks configuration options when the "--source" flag is used.
    • #538: Add support for "borgmatic borg debug" command.
    • #539: Add "generate-borgmatic-config --overwrite" flag to replace an existing destination file.
    • Add Bash completion script so you can tab-complete the borgmatic command-line. See the documentation for more information: https://torsion.org/borgmatic/docs/how-to/set-up-backups/#shell-completion
    Source code(tar.gz)
    Source code(zip)
  • 1.6.1(May 24, 2022)

    • #294: Add Healthchecks monitoring hook "ping_body_limit" option to configure how many bytes of logs to send to the Healthchecks server.
    • #402: Remove the error when "archive_name_format" is specified but a retention prefix isn't.
    • #420: Warn when an unsupported variable is used in a hook command.
    • #439: Change connection failures for monitoring hooks (Healthchecks, Cronitor, PagerDuty, and Cronhub) to be warnings instead of errors. This way, the monitoring system failing does not block backups.
    • #460: Add Healthchecks monitoring hook "send_logs" option to enable/disable sending borgmatic logs to the Healthchecks server.
    • #525: Add Healthchecks monitoring hook "states" option to only enable pinging for particular monitoring states (start, finish, fail).
    • #528: Improve the error message when a configuration override contains an invalid value.
    • #531: BREAKING: When deep merging common configuration, merge colliding list values by appending them. Previously, one list replaced the other.
    • #532: When a configuration include is a relative path, load it from either the current working directory or from the directory containing the file doing the including. Previously, only the working directory was used.
    • Add a randomized delay to the sample systemd timer to spread out the load on a server.
    • Change the configuration format for borgmatic monitoring hooks (Healthchecks, Cronitor, PagerDuty, and Cronhub) to specify the ping URL / integration key as a named option. The intent is to support additional options (some in this release). This change is backwards-compatible.
    • Add emojis to documentation table of contents to make it easier to find particular how-to and reference guides at a glance.
    Source code(tar.gz)
    Source code(zip)
  • 1.6.0(Apr 26, 2022)

    • #381: BREAKING: Greatly simplify configuration file reuse by deep merging when including common configuration. See the documentation for more information: https://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#include-merging
    • #473: BREAKING: Instead of executing "before" command hooks before all borgmatic actions run (and "after" hooks after), execute these hooks right before/after the corresponding action. E.g., "before_check" now runs immediately before the "check" action. This better supports running timing-sensitive tasks like pausing containers. Side effect: before/after command hooks now run once for each configured repository instead of once per configuration file. Additionally, the "repositories" interpolated variable has been changed to "repository", containing the path to the current repository for the hook. See the documentation for more information: https://torsion.org/borgmatic/docs/how-to/add-preparation-and-cleanup-steps-to-backups/
    • #513: Add mention of sudo's "secure_path" option to borgmatic installation documentation.
    • #515: Fix "borgmatic borg key ..." to pass parameters to Borg in the correct order.
    • #516: Fix handling of TERM signal to exit borgmatic, not just forward the signal to Borg.
    • #517: Fix borgmatic exit code (so it's zero) when initial Borg calls fail but later retries succeed.
    • Change Healthchecks logs truncation size from 10k bytes to 100k bytes, corresponding to that same change on Healthchecks.io.
    Source code(tar.gz)
    Source code(zip)
  • 1.5.24(Mar 14, 2022)

    • #431: Add "working_directory" option to support source directories with relative paths.
    • #444: When loading a configuration file that is unreadable due to file permissions, warn instead of erroring. This supports running borgmatic as a non-root user with configuration in ~/.config even if there is an unreadable global configuration file in /etc.
    • #469: Add "repositories" context to "before_" and "after_" command action hooks. See the documentation for more information: https://torsion.org/borgmatic/docs/how-to/add-preparation-and-cleanup-steps-to-backups/
    • #486: Fix handling of "patterns_from" and "exclude_from" options to error instead of warning when referencing unreadable files and "create" action is run.
    • #507: Fix Borg usage error in the "compact" action when running "borgmatic --dry-run". Now, skip "compact" entirely during a dry run.
    Source code(tar.gz)
    Source code(zip)
  • 1.5.23(Feb 10, 2022)

    • #394: Compact repository segments and free space with new "borgmatic compact" action. Borg 1.2+ only. Also run "compact" by default when no actions are specified, as "prune" in Borg 1.2 no longer frees up space unless "compact" is run.
    • #394: When using the "atime", "bsd_flags", "numeric_owner", or "remote_rate_limit" options, tailor the flags passed to Borg depending on the Borg version.
    • #480, #482: Fix traceback when a YAML validation error occurs.
    Source code(tar.gz)
    Source code(zip)
  • 1.5.22(Jan 5, 2022)

    • #288: Add database dump hook for MongoDB.
    • #470: Move mysqldump options to the beginning of the command due to MySQL bug 30994.
    • #471: When command-line configuration override produces a parse error, error cleanly instead of tracebacking.
    • #476: Fix unicode error when restoring particular MySQL databases.
    • Drop support for Python 3.6, which has been end-of-lifed.
    • Add support for Python 3.10.
    Source code(tar.gz)
    Source code(zip)
  • 1.5.21(Nov 22, 2021)

    • #28: Optionally retry failing backups via "retries" and "retry_wait" configuration options.
    • #306: Add "list_options" MySQL configuration option for passing additional arguments to MySQL list command.
    • #459: Add support for old version (2.x) of jsonschema library.
    Source code(tar.gz)
    Source code(zip)
  • 1.5.20(Oct 12, 2021)

  • 1.5.19(Oct 11, 2021)

    • #387: Fix error when configured source directories are not present on the filesystem at the time of backup. Now, Borg will complain, but the backup will still continue.
    • #455: Mention changing borgmatic path in cron documentation.
    • Update sample systemd service file with more granular read-only filesystem settings.
    • Move Gitea and GitHub hosting from a personal namespace to an organization for better collaboration with related projects.
    • 1k ★s on GitHub!
    Source code(tar.gz)
    Source code(zip)
  • 1.5.18(Aug 6, 2021)

  • 1.5.17(Jul 27, 2021)

  • 1.5.16(Jul 27, 2021)

    • #379: Suppress console output in sample crontab and systemd service files.
    • #407: Fix syslog logging on FreeBSD.
    • #430: Fix hang when restoring a PostgreSQL "tar" format database dump.
    • Better error messages! Switch the library used for validating configuration files (from pykwalify to jsonschema).
    • Link borgmatic Ansible role from installation documentation: https://torsion.org/borgmatic/docs/how-to/set-up-backups/#other-ways-to-install
    Source code(tar.gz)
    Source code(zip)
  • 1.5.15(Jun 18, 2021)

    • #419: Document use case of running backups conditionally based on laptop power level: https://torsion.org/borgmatic/docs/how-to/backup-to-a-removable-drive-or-an-intermittent-server/
    • #425: Run arbitrary Borg commands with new "borgmatic borg" action. See the documentation for more information: https://torsion.org/borgmatic/docs/how-to/run-arbitrary-borg-commands/
    Source code(tar.gz)
    Source code(zip)
  • 1.5.14(Jun 8, 2021)

    • #390: Add link to Hetzner storage offering from the documentation.
    • #398: Clarify canonical home of borgmatic in documentation.
    • #406: Clarify that spaces in path names should not be backslashed in path names.
    • #423: Fix error handling to error loudly when Borg gets killed due to running out of memory!
    • Fix build so as not to attempt to build and push documentation for a non-master branch.
    • "Fix" build failure with Alpine Edge by switching from Edge to Alpine 3.13.
    • Move #borgmatic IRC channel from Freenode to Libera Chat due to Freenode takeover drama. IRC connection info: https://torsion.org/borgmatic/#issues
    Source code(tar.gz)
    Source code(zip)
  • 1.5.13(Mar 30, 2021)

    • #373: Document that passphrase is used for Borg keyfile encryption, not just repokey encryption.
    • #404: Add support for ruamel.yaml 0.17.x YAML parsing library.
    • Update systemd service example to return a permission error when a system call isn't permitted (instead of terminating borgmatic outright).
    • Drop support for Python 3.5, which has been end-of-lifed.
    • Add support for Python 3.9.
    • Update versions of test dependencies (test_requirements.txt and test containers).
    • Only support black code formatter on Python 3.8+. New black dependencies make installation difficult on older versions of Python.
    • Replace "improve this documentation" form with link to support and ticket tracker.
    Source code(tar.gz)
    Source code(zip)
  • 1.5.12(Nov 21, 2020)

  • 1.5.11(Nov 19, 2020)

    • #341: Add "temporary_directory" option for changing Borg's temporary directory.
    • #352: Lock down systemd security settings in sample systemd service file.
    • #355: Fix traceback when a database hook value is null in a configuration file.
    • #361: Merge override values when specifying the "--override" flag multiple times. The previous behavior was to take the value of the last "--override" flag only.
    • #367: Fix traceback when upgrading old INI-style configuration with upgrade-borgmatic-config.
    • #368: Fix signal forwarding from borgmatic to Borg resulting in recursion traceback.
    • #369: Document support for Borg placeholders in repository names.
    Source code(tar.gz)
    Source code(zip)
  • 1.5.10(Aug 21, 2020)

    • #347: Add hooks that run for the "extract" action: "before_extract" and "after_extract".
    • #350: Fix traceback when a configuration directory is non-readable due to directory permissions.
    • Add documentation navigation links on left side of all documentation pages.
    • Clarify documentation on configuration overrides, specifically the portion about list syntax: http://torsion.org/borgmatic/docs/how-to/make-per-application-backups/#configuration-overrides
    • Clarify documentation overview of monitoring options: http://torsion.org/borgmatic/docs/how-to/monitor-your-backups/
    Source code(tar.gz)
    Source code(zip)
  • 1.5.9(Jul 23, 2020)

    • #300: Add "borgmatic export-tar" action to export an archive to a tar-formatted file or stream.
    • #339: Fix for intermittent timing-related test failure of logging function.
    • Clarify database documentation about excluding named pipes and character/block devices to prevent hangs.
    • Add documentation on how to make backups redundant with multiple repositories: https://torsion.org/borgmatic/docs/how-to/make-backups-redundant/
    Source code(tar.gz)
    Source code(zip)
  • 1.5.8(Jul 1, 2020)

Owner
borgmatic collective
borgmatic backup software and associated projects
borgmatic collective
EasyBuild is a software build and installation framework that allows you to manage (scientific) software on High Performance Computing (HPC) systems in an efficient way.

EasyBuild is a software build and installation framework that allows you to manage (scientific) software on High Performance Computing (HPC) systems in an efficient way.

EasyBuild community 87 Dec 27, 2022
Source-o-grapher is a tool built with the aim to investigate software resilience aspects of Open Source Software (OSS) projects.

Source-o-grapher is a tool built with the aim to investigate software resilience aspects of Open Source Software (OSS) projects.

Aristotle University 5 Jun 28, 2022
Prophet is a tool to discover resources detailed for cloud migration, cloud backup and disaster recovery

Prophet is a tool to discover resources detailed for cloud migration, cloud backup and disaster recovery

null 22 May 31, 2022
JD-backup is an advanced Python script, that will extract all links from a jDownloader 2 file list and export them to a text file.

JD-backup is an advanced Python script, that will extract all links from a jDownloader 2 file list and export them to a text file.

Kraken.snv 3 Jun 7, 2022
Using Python to parse through email logs received through several backup systems.

outlook-automated-backup-control Backup monitoring on a mailbox: In this mailbox there will be backup logs. The identification will based on the follo

Connor 2 Sep 28, 2022
A simple and easy to use Python's PIP configuration manager, similar to the Arch Linux's Java manager.

PIPCONF - The PIP configuration manager If you need to manage multiple configurations containing indexes and trusted hosts for PIP, this project was m

João Paulo Carvalho 11 Nov 30, 2022
Simple dotfile pre-processor with a per-file configuration

ix (eeks) Simple dotfile pre-processor with a per-file configuration Summary (TL;DR) ix.py is all you need config is an ini file. files to be processe

Poly 12 Dec 16, 2021
A community-driven python bot that aims to be as simple as possible to serve humans with their everyday tasks

JARVIS on Messenger Just A Rather Very Intelligent System, now on Messenger! Messenger is now used by 1.2 billion people every month. With the launch

Swapnil Agarwal 1.3k Jan 7, 2023
Lags valorant servers by rapidly picking up and throwing shorties.

Lags valorant servers by rapidly picking up and throwing shorties.

Eric Still 9 Dec 30, 2021
A multi-platform fuzzer for poking at userland binaries and servers

litefuzz A multi-platform fuzzer for poking at userland binaries and servers litefuzz intro why how it works what it does what it doesn't do support p

null 52 Nov 18, 2022
log4shell pwner for vulnerable minecraft servers

Log4-hell name supposed to be Log4$hell but oh well log4shell pwner for vulnerable minecraft servers install all reqs python + a minecraft client for

null 1 Jan 5, 2022
Lightweight library for accessing data and configuration

accsr This lightweight library contains utilities for managing, loading, uploading, opening and generally wrangling data and configurations. It was ba

appliedAI Initiative 7 Mar 9, 2022
validation for pre-commit.ci configuration

pre-commit-ci-config validation for pre-commit.ci configuration installation pip install pre-commit-ci-config api pre_commit_ci_config.SCHEMA a cfgv s

pre-commit.ci 17 Jul 11, 2022
Tenda D151 & D301 - Unauthenticated configuration download

Exploit Title: Tenda D151 & D301 - Unauthenticated configuration download (login included)

Ayoub 3 Jul 14, 2022
This is a method to build your own qgis configuration packages using osgeo4W.

This is a method to build your own qgis configuration packages using osgeo4W. Then you can automate deployment in your organization with a controled and trusted environnement.

Régis Haubourg 26 Dec 5, 2022
Generate Openbox Menus from a easy to write configuration file.

openbox-menu-generator Generate Openbox Menus from a easy to write configuration file. Example Configuration: ('#' indicate comments but not implement

null 3 Jul 14, 2022
A minimal configuration for a dockerized kafka project.

Docker Kafka Quickstart A minimal configuration for a dockerized kafka project. Usage: Run this command to build kafka and zookeeper containers, and c

Nouamane Tazi 5 Jan 12, 2022
Shai-Hulud - A qtile configuration for the (spice) masses

Shai-Hulud - A qtile configuration for the (spice) masses Installation Notes These dotfiles are set up to use GNU stow for installation. To install, f

null 16 Dec 30, 2022
An AddOn storing wireguard configuration

Wireguard Database Connector Overview Development Status: 0.1.7 (alpha) First of all, I'd like to thank Jared McKnight for wireguard who inspired me t

Markus Neubauer 3 Dec 30, 2021