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
A basic DIY-project made using Python and MySQL

Banking-Using-Python-MySQL This is a basic DIY-project made using Python and MySQL. Pre-Requisite needed:-- MySQL command Line:- creating a database

ABHISHEK 0 Jul 03, 2022
WMIC Serial Checker For Python

WMIC Serial Checker Follow me here: Discord | Github FR: A but éducatif seulement. EN: For educational purposes only. ❓ Informations FR: WMIC Serial C

AkaTool's 0 Apr 25, 2022
In this project we will implement AirBnB clone using console

AirBnB Clone In this project we will implement AirBnB clone using console. Usage The shell should work like this

Nandweza Allan 1 Feb 07, 2022
Plugin to generate BOM + CPL files for JLCPCB

KiCAD JLCPCB tools Plugin to generate all files necessary for JLCPCB board fabrication and assembly Gerber files Excellon files BOM file CPL file Furt

bouni 566 Dec 29, 2022
Learn the basics of Python. These tutorials are for Python beginners. so even if you have no prior knowledge of Python, you won’t face any difficulty understanding these tutorials.

01_Python_Introduction Introduction 👋 Python is a modern, robust, high level programming language. It is very easy to pick up even if you are complet

Milaan Parmar / Милан пармар / _米兰 帕尔马 245 Dec 30, 2022
An application for automation of the mining function in the game Alienworlds.IO

alienautomation A Python script made to automate the tidious job of mining on AlienWorlds This script: Automatically opens the browser Automatically l

anonieXdev 42 Dec 03, 2022
Render your templates using .txt files

PizzaX About Run Run tests To run the tests, open your terminal and type python tests.py (WIN) or python3 tests.py (UNX) Using the function To use the

Marcello Belanda 2 Nov 24, 2021
ESteg - A simple steganography program for python

ESteg A simple steganography program to embed the contents of a text file into a

Jithin Renji 1 Jan 02, 2022
A python script for practicing Toki Pona.

toki.py A python script for practicing Toki Pona. Modified from a hirigana script by ~vilmibm. Example of the script running: $ ./toki.py This script

Dustin 2 Dec 09, 2021
A utility control surface for Ableton Live that makes the initialization of a Mixdown quick

Automate Mixdown initialization A script that transfers all the VSTs on your MIDI tracks to a new track so you can freeze your MIDI tracks and then co

Aarnav 0 Feb 23, 2022
People tracker on the Internet: OSINT analysis and research tool by Jose Pino

trape (stable) v2.0 People tracker on the Internet: Learn to track the world, to avoid being traced. Trape is an OSINT analysis and research tool, whi

Jose Pino 7.3k Dec 30, 2022
A wrapper around the python Tkinter library for customizable and modern ui-elements in Tkinter

CustomTkinter With CustomTkinter you can create modern looking user interfaces in python with tkinter. CustomTkinter is a tkinter extension which prov

4.9k Jan 02, 2023
An animal facts python module

An animal facts python module

Fayas Noushad 3 Dec 19, 2021
This is the repo for Uncertainty Quantification 360 Toolkit.

UQ360 The Uncertainty Quantification 360 (UQ360) toolkit is an open-source Python package that provides a diverse set of algorithms to quantify uncert

International Business Machines 207 Dec 30, 2022
An optional component handler for hikari, inspired by discord.py's views.

hikari-miru An optional component handler for hikari, inspired by discord.py's views.

43 Dec 26, 2022
For my Philips Airpurifier AC3259/10

Philips-Airpurifier For my Philips Airpurifier AC3259/10 I will try to keep this code

AcidSleeper 7 Feb 26, 2022
Find virtual hosts (vhosts) from IP addresses and hostnames

Features Enumerate vhosts from a list of IP addresses and domain names. Virtual Hosts are enumerated using the following process: Supplied domains are

3 Jul 09, 2022
An unofficial python API for trading on the DeGiro platform, with the ability to get real time data and historical data.

DegiroAPI An unofficial API for the trading platform Degiro written in Python with the ability to get real time data and historical data for products.

Jorrick Sleijster 5 Dec 16, 2022
Tools to convert SQLAlchemy models to Pydantic models

Pydantic-SQLAlchemy Tools to generate Pydantic models from SQLAlchemy models. Still experimental. How to use Quick example: from typing import List f

Sebastián Ramírez 893 Dec 29, 2022
Secret santa is a fun and easy way to get together with your friends and/or family with a gift for them.

Vaccine Validator Tool to validate domestic New Zealand vaccine passes Create a new virtual environment: python3 -m venv ./venv Activate virtual envi

2 Dec 06, 2021