diff --git a/docs/usage/compact.rst b/docs/usage/compact.rst index 9f28b964b..55a52ca59 100644 --- a/docs/usage/compact.rst +++ b/docs/usage/compact.rst @@ -4,6 +4,6 @@ Examples ~~~~~~~~ :: - # Compact segments and free repository disk space + # Free repository disk space by deleting unused chunks (rewriting packs as needed) $ borg compact diff --git a/docs/usage/diff.rst b/docs/usage/diff.rst index 9404326c1..574d55ac2 100644 --- a/docs/usage/diff.rst +++ b/docs/usage/diff.rst @@ -4,23 +4,33 @@ Examples ~~~~~~~~ :: + # By default, borg diff reports metadata changes (mode, mtime, ctime, ...) besides + # the content changes, so the lines can get quite long: $ borg diff archive1 archive2 - +17 B -5 B [-rw-r--r-- -> -rwxr-xr-x] file1 - +135 B -252 B file2 - added 0 B file4 - removed 0 B file3 + [mtime: Fri, 2026-08-28 12:26:23.433047048 +0200 -> Fri, 2026-08-28 12:26:24.204040020 +0200] [ctime: Fri, 2026-08-28 12:26:23.433047048 +0200 -> Fri, 2026-08-28 12:26:24.204040020 +0200] . + modified: +17 B -5 B [-rw-r--r-- -> -rwxr-xr-x] [mtime: Fri, 2026-08-28 12:26:23.431245244 +0200 -> Fri, 2026-08-28 12:26:24.199251801 +0200] [ctime: Fri, 2026-08-28 12:26:23.431245244 +0200 -> Fri, 2026-08-28 12:26:24.200688313 +0200] file1 + modified: +135 B -252 B [mtime: Fri, 2026-08-28 12:26:23.432895166 +0200 -> Fri, 2026-08-28 12:26:24.202236091 +0200] [ctime: Fri, 2026-08-28 12:26:23.432895166 +0200 -> Fri, 2026-08-28 12:26:24.202236091 +0200] file2 + added: 0 B file4 + removed: 0 B file3 - $ borg diff archive1 archive2 - {"path": "file1", "changes": [{"type": "modified", "added": 17, "removed": 5}, {"type": "mode", "old_mode": "-rw-r--r--", "new_mode": "-rwxr-xr-x"}]} - {"path": "file2", "changes": [{"type": "modified", "added": 135, "removed": 252}]} - {"path": "file4", "changes": [{"type": "added", "size": 0}]} - {"path": "file3", "changes": [{"type": "removed", "size": 0}]} + # --content-only hides the metadata changes and only reports content differences: + $ borg diff --content-only archive1 archive2 + modified: +17 B -5 B file1 + modified: +135 B -252 B file2 + added: 0 B file4 + removed: 0 B file3 + # Use --json-lines to get one JSON object per changed path: + $ borg diff --json-lines --content-only archive1 archive2 + {"changes": [{"added": 17, "removed": 5, "type": "modified"}], "path": "file1"} + {"changes": [{"added": 135, "removed": 252, "type": "modified"}], "path": "file2"} + {"changes": [{"added": 0, "removed": 0, "type": "added"}], "path": "file4"} + {"changes": [{"added": 0, "removed": 0, "type": "removed"}], "path": "file3"} # Use --sort-by with a comma-separated list; sorts apply stably from last to first. # Here: primary by net size change descending, tie-breaker by path ascending - $ borg diff --sort-by=">size_diff,path" archive1 archive2 - +17 B -5 B [-rw-r--r-- -> -rwxr-xr-x] file1 - removed 0 B file3 - added 0 B file4 - +135 B -252 B file2 + $ borg diff --content-only --sort-by=">size_diff,path" archive1 archive2 + modified: +17 B -5 B file1 + removed: 0 B file3 + added: 0 B file4 + modified: +135 B -252 B file2 diff --git a/docs/usage/find.rst b/docs/usage/find.rst index dc7e7041c..01a476c67 100644 --- a/docs/usage/find.rst +++ b/docs/usage/find.rst @@ -6,14 +6,14 @@ Examples # In which archives is this file? Searched / printed from newest to oldest archive. $ borg find home/user/file.txt - 41a2ed21 docs -rw-rw-r-- user user 1522 Sun, 2022-02-06 21:02:18 home/user/file.txt - 20e70e3a docs -rw-rw-r-- user user 1440 Sun, 2022-01-30 20:47:32 home/user/file.txt + 41a2ed21 docs -rw-rw-r-- user user 1522 Sun, 2022-02-06 21:02:18 +0100 home/user/file.txt + 20e70e3a docs -rw-rw-r-- user user 1440 Sun, 2022-01-30 20:47:32 +0100 home/user/file.txt # Find all jpg files in the last 3 archives. $ borg find 'sh:**/*.jpg' --last 3 - 39c8956e photos -rw-rw-r-- user user 919337 Sat, 2022-01-01 14:20:21 photos/paris/eiffel.jpg - 39c8956e photos -rw-rw-r-- user user 1023881 Sun, 2022-02-06 09:12:44 photos/rome/colosseum.jpg - 04061a53 photos -rw-rw-r-- user user 919337 Sat, 2022-01-01 14:20:21 photos/paris/eiffel.jpg + 39c8956e photos -rw-rw-r-- user user 919337 Sat, 2022-01-01 14:20:21 +0100 photos/paris/eiffel.jpg + 39c8956e photos -rw-rw-r-- user user 1023881 Sun, 2022-02-06 09:12:44 +0100 photos/rome/colosseum.jpg + 04061a53 photos -rw-rw-r-- user user 919337 Sat, 2022-01-01 14:20:21 +0100 photos/paris/eiffel.jpg # Only print the archive and the path, nothing else. $ borg find --format '{archiveid:.8} {archivename} {path}{NL}' home/user/file.txt diff --git a/docs/usage/general.rst b/docs/usage/general.rst index 36afedf2d..53ec9c2fc 100644 --- a/docs/usage/general.rst +++ b/docs/usage/general.rst @@ -6,7 +6,7 @@ a number of arguments and options and interprets various environment variables. The following sections will describe each command in detail. Commands, options, parameters, paths, and similar elements are shown in ``fixed-width``. -Option values are `underlined. Borg has a few options that accept a fixed set +Option values are underlined. Borg has a few options that accept a fixed set of values (e.g., ``--encryption`` of :ref:`borg_repo-create`). .. container:: experimental diff --git a/docs/usage/info.rst b/docs/usage/info.rst index 22f1d97d2..7af04eedd 100644 --- a/docs/usage/info.rst +++ b/docs/usage/info.rst @@ -4,18 +4,19 @@ Examples ~~~~~~~~ :: - $ borg info aid:f7dea078 + $ borg info aid:059743db Archive name: source-backup - Archive fingerprint: f7dea0788dfc026cc2be1c0f5b94beb4e4084eb3402fc40c38d8719b1bf2d943 + Archive fingerprint: 059743db538840c04ee323673ac579d0b5433f2741c41f9643975df6370474f0 Comment: - Hostname: mba2020 - Username: tw - Time (start): Sat, 2022-06-25 20:51:40 - Time (end): Sat, 2022-06-25 20:51:40 - Duration: 0.03 seconds - Command line: /usr/bin/borg -r path/to/repo create source-backup src - Utilization of maximum supported archive size: 0% - Number of files: 244 - Original size: 13.80 MB - Deduplicated size: 531 B + Hostname: host + Username: user + Tags: + Time (nominal): Fri, 2026-08-28 12:25:52 +0200 + Time (start): Fri, 2026-08-28 12:25:52 +0200 + Time (end): Fri, 2026-08-28 12:25:52 +0200 + Duration: 0.006 seconds + Command line: /usr/bin/borg -r /path/to/repo create source-backup src + Working Directory: /home/user + Number of files: 3 + Original size: 3.00 MB diff --git a/docs/usage/key.rst b/docs/usage/key.rst index 03052dff5..f6f2a2b48 100644 --- a/docs/usage/key.rst +++ b/docs/usage/key.rst @@ -13,34 +13,43 @@ Examples Initializing repository at "/path/to/repo" Enter new passphrase: Enter same passphrase again: + Do you want your passphrase to be displayed for verification? [yN]: n Remember your passphrase. Your data will be inaccessible without it. - Key in "/root/.config/borg/keys/mnt_backup" created. + Key in "/root/.config/borg/keys/f23b5f0703c06dc7d9d889b5867496d8cb8ef5b42a5005221d3c7373ec6d6353" created. Keep this key safe. Your data will be inaccessible without it. - Synchronizing index... - Archives: 0, w/ index: 0, w/ outdated index: 0, w/o index: 0. - Done. + ... # Change key file passphrase $ borg key change-passphrase -v - Enter passphrase for key /root/.config/borg/keys/mnt_backup: + Enter passphrase for key /root/.config/borg/keys/f23b5f0703c06dc7d9d889b5867496d8cb8ef5b42a5005221d3c7373ec6d6353: Enter new passphrase: Enter same passphrase again: + Do you want your passphrase to be displayed for verification? [yN]: n Remember your passphrase. Your data will be inaccessible without it. Key updated + Key location: /root/.config/borg/keys/4881c2f73d9f173bd4c4d30a9f397a596bc742bfa1f652fac3f83cee3f26cb00 .. note:: + Automatically placed key files are named after the SHA-256 hash of their own + contents, not after the repository directory name. Because changing the + passphrase re-encrypts the key, the key file is rewritten under a new name and + the previous one is removed — that is why the two paths above differ. Use + ``BORG_KEY_FILE`` if you want to choose the key file name yourself. + The key file paths shown above are the defaults for Linux (``~/.config/borg/keys/``). On macOS, key files are stored in ``~/Library/Application Support/borg/keys/``. - On Windows, they are stored in ``C:\Users\\AppData\Roaming\borg\keys\``. + On Windows, they are stored in ``C:\Users\\AppData\Local\borg\borg\keys\``. See :ref:`env_vars` for details. :: - # Import a previously-exported key into the specified - # key file (creating or overwriting the output key) - # (keyfile repositories only) - $ BORG_KEY_FILE=/path/to/output-key borg key import /path/to/exported + # Import a previously-exported key into a key file, using BORG_KEY_FILE to + # choose the output key file (creating or overwriting it). + # --key-location=keyfile is required: "borg key import" defaults to + # --key-location=repokey, which stores the key in the repository and + # ignores BORG_KEY_FILE. + $ BORG_KEY_FILE=/path/to/output-key borg key import --key-location=keyfile /path/to/exported Fully automated using environment variables: diff --git a/docs/usage/list.rst b/docs/usage/list.rst index 34610a3a5..79ce11654 100644 --- a/docs/usage/list.rst +++ b/docs/usage/list.rst @@ -5,35 +5,35 @@ Examples :: $ borg list root-2016-02-15 - drwxr-xr-x root root 0 Mon, 2016-02-15 17:44:27 . - drwxrwxr-x root root 0 Mon, 2016-02-15 19:04:49 bin - -rwxr-xr-x root root 1029624 Thu, 2014-11-13 00:08:51 bin/bash - lrwxrwxrwx root root 0 Fri, 2015-03-27 20:24:26 bin/bzcmp -> bzdiff - -rwxr-xr-x root root 2140 Fri, 2015-03-27 20:24:22 bin/bzdiff + drwxr-xr-x root root 0 Mon, 2016-02-15 17:44:27 +0100 . + drwxrwxr-x root root 0 Mon, 2016-02-15 19:04:49 +0100 bin + -rwxr-xr-x root root 1029624 Thu, 2014-11-13 00:08:51 +0100 bin/bash + lrwxrwxrwx root root 6 Fri, 2015-03-27 20:24:26 +0100 bin/bzcmp -> bzdiff + -rwxr-xr-x root root 2140 Fri, 2015-03-27 20:24:22 +0100 bin/bzdiff ... $ borg list root-2016-02-15 --pattern "- bin/ba*" - drwxr-xr-x root root 0 Mon, 2016-02-15 17:44:27 . - drwxrwxr-x root root 0 Mon, 2016-02-15 19:04:49 bin - lrwxrwxrwx root root 0 Fri, 2015-03-27 20:24:26 bin/bzcmp -> bzdiff - -rwxr-xr-x root root 2140 Fri, 2015-03-27 20:24:22 bin/bzdiff + drwxr-xr-x root root 0 Mon, 2016-02-15 17:44:27 +0100 . + drwxrwxr-x root root 0 Mon, 2016-02-15 19:04:49 +0100 bin + lrwxrwxrwx root root 6 Fri, 2015-03-27 20:24:26 +0100 bin/bzcmp -> bzdiff + -rwxr-xr-x root root 2140 Fri, 2015-03-27 20:24:22 +0100 bin/bzdiff ... $ borg list archiveA --format="{mode} {user:6} {group:6} {size:8d} {isomtime} {path}{extra}{NEWLINE}" - drwxrwxr-x user user 0 Sun, 2015-02-01 11:00:00 . - drwxrwxr-x user user 0 Sun, 2015-02-01 11:00:00 code - drwxrwxr-x user user 0 Sun, 2015-02-01 11:00:00 code/myproject - -rw-rw-r-- user user 1416192 Sun, 2015-02-01 11:00:00 code/myproject/file.ext - -rw-rw-r-- user user 1416192 Sun, 2015-02-01 11:00:00 code/myproject/file.text + drwxrwxr-x user user 0 2015-02-01T11:00:00.000000+01:00 . + drwxrwxr-x user user 0 2015-02-01T11:00:00.000000+01:00 code + drwxrwxr-x user user 0 2015-02-01T11:00:00.000000+01:00 code/myproject + -rw-rw-r-- user user 1416192 2015-02-01T11:00:00.000000+01:00 code/myproject/file.ext + -rw-rw-r-- user user 1416192 2015-02-01T11:00:00.000000+01:00 code/myproject/file.text ... $ borg list archiveA --pattern '+ re:\.ext$' --pattern '- re:^.*$' - -rw-rw-r-- user user 1416192 Sun, 2015-02-01 11:00:00 code/myproject/file.ext + -rw-rw-r-- user user 1416192 Sun, 2015-02-01 11:00:00 +0100 code/myproject/file.ext ... $ borg list archiveA --pattern '+ re:.ext$' --pattern '- re:^.*$' - -rw-rw-r-- user user 1416192 Sun, 2015-02-01 11:00:00 code/myproject/file.ext - -rw-rw-r-- user user 1416192 Sun, 2015-02-01 11:00:00 code/myproject/file.text + -rw-rw-r-- user user 1416192 Sun, 2015-02-01 11:00:00 +0100 code/myproject/file.ext + -rw-rw-r-- user user 1416192 Sun, 2015-02-01 11:00:00 +0100 code/myproject/file.text ... # Use --sort-by with a comma-separated list; sorts apply stably from last to first. diff --git a/docs/usage/mount.rst b/docs/usage/mount.rst index a680bff1d..07d97203a 100644 --- a/docs/usage/mount.rst +++ b/docs/usage/mount.rst @@ -39,7 +39,7 @@ Examples # Exclusion options are supported. # These can speed up mounting and lower memory needs significantly. - $ borg mount /path/to/repo /tmp/mymountpoint only/that/path + $ borg mount -r /path/to/repo /tmp/mymountpoint only/that/path $ borg mount --exclude '...' /tmp/mymountpoint diff --git a/docs/usage/notes.rst b/docs/usage/notes.rst index 3914058fe..27e68a9e5 100644 --- a/docs/usage/notes.rst +++ b/docs/usage/notes.rst @@ -14,7 +14,7 @@ resource usage (RAM and disk space) as the amount of resources needed is (also) determined by the total number of chunks in the repository (see :ref:`cache-memory-usage` for details). -``--chunker-params=fastcdc,10,23,16,2`` results in a fine-grained deduplication| +``--chunker-params=fastcdc,10,23,16,2`` results in a fine-grained deduplication and creates a large number of chunks and thus uses a lot of resources to manage them. This is good for relatively small data volumes and if the machine has a good amount of free RAM and disk space. @@ -60,19 +60,20 @@ a new repository when changing chunker parameters. For more details, see :ref:`chunker_details`. -``--noatime / --noctime`` -~~~~~~~~~~~~~~~~~~~~~~~~~ +``--atime / --noctime / --nobirthtime`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -You can use these ``borg create`` options to not store the respective timestamp -into the archive, in case you do not really need it. +``borg create`` does not store atime by default — use ``--atime`` if you do +need it. ctime and birthtime are stored by default and can be omitted with +``--noctime`` and ``--nobirthtime``. -Besides saving a little space by omitting the timestamp, it might also -affect metadata stream deduplication: if only this timestamp changes between -backups and is stored into the metadata stream, the metadata stream chunks -will not deduplicate just because of that. +Besides saving a little space by omitting a timestamp, storing fewer timestamps +might also help metadata stream deduplication: if only such a timestamp changes +between backups and is stored into the metadata stream, the metadata stream +chunks will not deduplicate just because of that. -``--nobsdflags / --noflags`` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +``--noflags`` +~~~~~~~~~~~~~ You can use this to avoid querying and storing (or extracting and setting) flags — in case you don't need them or if they are broken for your filesystem. diff --git a/docs/usage/recreate.rst b/docs/usage/recreate.rst index 89c5b257f..29cc593c2 100644 --- a/docs/usage/recreate.rst +++ b/docs/usage/recreate.rst @@ -5,26 +5,33 @@ Examples :: # Create a backup with fast, low compression - $ borg create archive /some/files --compression lz4 - # Then recompress it — this might take longer, but the backup has already completed, - # so there are no inconsistencies from a long-running backup job. - $ borg recreate -a archive --recompress --compression zlib,9 + $ borg create archive files --compression lz4 + # Then recompress the data already stored in the repository — this might take longer, + # but the backup has already completed, so there are no inconsistencies from a + # long-running backup job. Note that recompressing existing repository data is the + # job of "borg repo-compress", not of "borg recreate". + $ borg repo-compress --compression zlib,9 --stats + Recompression stats: + Packs: 2 total, 2 rewritten. + Objects: 5 total, 2 recompressed, 0 already had the desired compression, 3 kept as-is (recompression brings no gain). + Repository size: 301.59 kB before, 301.53 kB after, shrunk by 60 B. # Remove unwanted files from all archives in a repository. # Note the relative path for the --exclude option — archives only contain relative paths. $ borg recreate --exclude home/icke/Pictures/drunk_photos - # Change the archive comment - $ borg create --comment "This is a comment" archivename ~ + # Change the archive comment. Note that recreate writes a new archive, + # so the archive fingerprint changes. + $ borg create --comment "This is a comment" archivename files $ borg info -a archivename - Name: archivename - Fingerprint: ... + Archive name: archivename + Archive fingerprint: 6cfecdd4e963bbe150c08169407de0353a4c5f2f90221646a9ebb0ce9be2529a Comment: This is a comment ... $ borg recreate --comment "This is a better comment" -a archivename $ borg info -a archivename - Name: archivename - Fingerprint: ... + Archive name: archivename + Archive fingerprint: 259b5302a8de9c889fb4915fe5df128f6c22776966db2dc3c7d3c8e741bf45b6 Comment: This is a better comment ... diff --git a/docs/usage/repo-delete.rst b/docs/usage/repo-delete.rst index 92be6be9a..e2dfae278 100644 --- a/docs/usage/repo-delete.rst +++ b/docs/usage/repo-delete.rst @@ -6,9 +6,10 @@ Examples # delete the whole repository and the related local cache: $ borg repo-delete - You requested to DELETE the repository completely *including* all archives it contains: - repo Mon, 2016-02-15 19:26:54 - root-2016-02-15 Mon, 2016-02-15 19:36:29 - newname Mon, 2016-02-15 19:50:19 + You requested to DELETE the following repository completely *including* 2 archives it contains: + ------------------------------------------------------------------------------ + Repository ID: e7046adda9b2a76bb4fac8d707ab7dc12a836391c8c3612cc12d461e713c5bc1 + Location: /path/to/repo + ------------------------------------------------------------------------------ Type 'YES' if you understand this and want to continue: YES diff --git a/docs/usage/repo-info.rst b/docs/usage/repo-info.rst index a5f30880f..02e14647f 100644 --- a/docs/usage/repo-info.rst +++ b/docs/usage/repo-info.rst @@ -5,13 +5,10 @@ Examples :: $ borg repo-info - Repository ID: 0e85a7811022326c067acb2a7181d5b526b7d2f61b34470fb8670c440a67f1a9 - Location: /Users/tw/w/borg/path/to/repo + Repository ID: 0a2744f216526be75ae14a5fa5b123127bb218558219f6203e09e4f220e45903 + Location: /path/to/repo + Repository version: 4 Encrypted: Yes (repokey, aes256-ocb, sha256) - Cache: /Users/tw/.cache/borg/0e85a7811022326c067acb2a7181d5b526b7d2f61b34470fb8670c440a67f1a9 - Security dir: /Users/tw/.config/borg/security/0e85a7811022326c067acb2a7181d5b526b7d2f61b34470fb8670c440a67f1a9 - Original size: 152.14 MB - Deduplicated size: 30.38 MB - Unique chunks: 654 - Total chunks: 3302 + Security directory: /home/user/.local/share/borg/security/0a2744f216526be75ae14a5fa5b123127bb218558219f6203e09e4f220e45903 + Cache: /home/user/.cache/borg/0a2744f216526be75ae14a5fa5b123127bb218558219f6203e09e4f220e45903 diff --git a/docs/usage/serve.rst b/docs/usage/serve.rst index 693343add..127dec5bd 100644 --- a/docs/usage/serve.rst +++ b/docs/usage/serve.rst @@ -13,6 +13,15 @@ options. This list currently contains: such as ``--verbose``, ``--info``, ``--debug``, ``--debug-topic``, etc. - ``--lock-wait`` to allow the client to control how long to wait before giving up and aborting the operation when another process is holding a lock. +- ``--backend`` to allow the client to choose *which* repository it wants to + use (see ``borg serve --rest``). The forced command keeps pinning the + restrictions: the client-given backend is validated against + ``--restrict-to-path`` / ``--restrict-to-repository``. + +Notably, ``--rest`` is *not* in the allowlist, so the forced command pins the +mode (current ``rest://`` repositories vs. legacy Borg 1.x repositories), and +neither are ``--restrict-to-path``, ``--restrict-to-repository``, ``--umask`` +and ``--permissions``. Environment variables (such as BORG_XXX) contained in the original command sent by the client are *not* interpreted, but ignored. If BORG_XXX environment @@ -24,12 +33,15 @@ locations like ``/etc/environment`` or in the forced command itself (example bel # Allow an SSH keypair to run only borg, and only have access to /path/to/repo. # Use key options to disable unneeded and potentially dangerous SSH functionality. # This will help to secure an automated remote backup system. + # --rest serves a current (rest://) repository; without it, a legacy Borg 1.x + # repository would be served. The client supplies --backend FILE:, + # which is validated against --restrict-to-path. $ cat ~/.ssh/authorized_keys - command="borg serve --restrict-to-path /path/to/repo",restrict ssh-rsa AAAAB3[...] + command="borg serve --rest --restrict-to-path /path/to/repo",restrict ssh-rsa AAAAB3[...] # Specify repository permissions for an SSH keypair. $ cat ~/.ssh/authorized_keys - command="borg serve --permissions=read-only",restrict ssh-rsa AAAAB3[...] + command="borg serve --rest --permissions=read-only",restrict ssh-rsa AAAAB3[...] # Set a BORG_XXX environment variable on the "borg serve" side $ cat ~/.ssh/authorized_keys diff --git a/docs/usage/tar.rst b/docs/usage/tar.rst index d5d64faf9..37fb03487 100644 --- a/docs/usage/tar.rst +++ b/docs/usage/tar.rst @@ -33,14 +33,16 @@ Examples Archives transfer script ~~~~~~~~~~~~~~~~~~~~~~~~ -Outputs a script that copies all archives from repo1 to repo2: +Outputs a script that copies all archives from repo1 to repo2 +(``bash``, because it uses process substitution). Remove the ``echo`` to +actually run the commands instead of just printing them: :: - for N I T in `borg list --format='{archive} {id} {time:%Y-%m-%dT%H:%M:%S}{NL}'` + while read -r N I T do echo "borg -r repo1 export-tar --tar-format=BORG aid:$I - | borg -r repo2 import-tar --timestamp=$T $N -" - done + done < <(borg -r repo1 repo-list --format='{name} {id} {time:%Y-%m-%dT%H:%M:%S}{NL}') Kept: diff --git a/docs/usage/transfer.rst b/docs/usage/transfer.rst index afdd8ec84..9902f7191 100644 --- a/docs/usage/transfer.rst +++ b/docs/usage/transfer.rst @@ -8,7 +8,9 @@ locations and passphrases first: :: - export BORG_REPO=ssh://borg2@borgbackup/./tests/b20 + # The destination is a Borg 2 repository: use a rest:// (or local) location, + # ssh:// is only supported for the legacy Borg 1.x source repository. + export BORG_REPO=rest://borg2@borgbackup/tests/b20 export BORG_PASSPHRASE='your-borg2-repo-passphrase' export BORG_OTHER_REPO=ssh://borg2@borgbackup/./tests/b1x export BORG_OTHER_PASSPHRASE='your-borg1-repo-passphrase' @@ -27,7 +29,8 @@ locations and passphrases first: # between old archives (copied with borg transfer) and future ones. # The AEAD cipher does not matter (everything must be re-encrypted and # re-authenticated anyway); you could also choose chacha20-poly1305. - $ borg repo-create -e aes256-ocb + # --from-borg1 is required so the other repository is opened as a Borg 1.x repository. + $ borg repo-create --from-borg1 -e aes256-ocb # 2. Check what and how much it would transfer: $ borg transfer --from-borg1 --dry-run @@ -54,7 +57,8 @@ locations and passphrases first: # use for all future Borg 2.0 archives. # The AEAD cipher does not matter (everything must be re-encrypted and # re-authenticated anyway); you could also choose -e chacha20-poly1305 -i blake3. - $ borg repo-create -e aes256-ocb -i blake3 + # --from-borg1 is required so the other repository is opened as a Borg 1.x repository. + $ borg repo-create --from-borg1 -e aes256-ocb -i blake3 $ export CHUNKER_PARAMS="fastcdc,19,23,21,2" # 2. Check what and how much it would transfer: @@ -81,7 +85,7 @@ On **macOS**, Borg 1.x stored key files in ``~/.config/borg/keys/``, but Borg 2 defaults to ``~/Library/Application Support/borg/keys/``. On **Windows**, Borg 1.x used XDG-style paths (e.g. ``~/.config/borg/keys/``), -while Borg 2 defaults to ``C:\Users\\AppData\Roaming\borg\keys\``. +while Borg 2 defaults to ``C:\Users\\AppData\Local\borg\borg\keys\``. If Borg 2 cannot find your key file, you have several options: