2019-11-01 05:45:47 +01:00
|
|
|
---
|
|
|
|
title: How to extract a backup
|
2020-08-21 23:27:47 +02:00
|
|
|
eleventyNavigation:
|
2022-05-20 20:11:35 +02:00
|
|
|
key: 📤 Extract a backup
|
2020-08-21 23:27:47 +02:00
|
|
|
parent: How-to guides
|
2022-06-17 00:30:53 +02:00
|
|
|
order: 7
|
2019-11-01 05:45:47 +01:00
|
|
|
---
|
|
|
|
## Extract
|
|
|
|
|
|
|
|
When the worst happens—or you want to test your backups—the first step is
|
|
|
|
to figure out which archive to extract. A good way to do that is to use the
|
2022-08-16 00:04:40 +02:00
|
|
|
`rlist` action:
|
2019-11-01 05:45:47 +01:00
|
|
|
|
|
|
|
```bash
|
2022-08-16 00:04:40 +02:00
|
|
|
borgmatic rlist
|
2019-11-01 05:45:47 +01:00
|
|
|
```
|
|
|
|
|
2022-08-16 00:04:40 +02:00
|
|
|
(No borgmatic `rlist` action? Try `list` instead or upgrade borgmatic!)
|
2019-11-01 05:45:47 +01:00
|
|
|
|
|
|
|
That should yield output looking something like:
|
|
|
|
|
|
|
|
```text
|
2023-03-07 07:41:43 +01:00
|
|
|
host-2023-01-01T04:05:06.070809 Tue, 2023-01-01 04:05:06 [...]
|
|
|
|
host-2023-01-02T04:06:07.080910 Wed, 2023-01-02 04:06:07 [...]
|
2019-11-01 05:45:47 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
Assuming that you want to extract the archive with the most up-to-date files
|
|
|
|
and therefore the latest timestamp, run a command like:
|
|
|
|
|
|
|
|
```bash
|
2023-03-07 07:41:43 +01:00
|
|
|
borgmatic extract --archive host-2023-01-02T04:06:07.080910
|
2019-11-01 05:45:47 +01:00
|
|
|
```
|
|
|
|
|
2022-08-18 19:19:11 +02:00
|
|
|
(No borgmatic `extract` action? Upgrade borgmatic!)
|
2019-11-01 05:45:47 +01:00
|
|
|
|
2022-08-18 19:19:11 +02:00
|
|
|
Or simplify this to:
|
2020-01-30 02:08:03 +01:00
|
|
|
|
|
|
|
```bash
|
|
|
|
borgmatic extract --archive latest
|
|
|
|
```
|
|
|
|
|
2019-11-01 05:45:47 +01:00
|
|
|
The `--archive` value is the name of the archive to extract. This extracts the
|
|
|
|
entire contents of the archive to the current directory, so make sure you're
|
2022-08-18 19:19:11 +02:00
|
|
|
in the right place before running the command—or see below about the
|
|
|
|
`--destination` flag.
|
2019-11-01 05:45:47 +01:00
|
|
|
|
|
|
|
## Repository selection
|
|
|
|
|
|
|
|
If you have a single repository in your borgmatic configuration file(s), no
|
|
|
|
problem: the `extract` action figures out which repository to use.
|
|
|
|
|
|
|
|
But if you have multiple repositories configured, then you'll need to specify
|
2023-03-27 18:46:39 +02:00
|
|
|
the repository to use via the `--repository` flag. This can be done either
|
|
|
|
with the repository's path or its label as configured in your borgmatic configuration file.
|
2019-11-01 05:45:47 +01:00
|
|
|
|
|
|
|
```bash
|
2023-03-07 07:41:43 +01:00
|
|
|
borgmatic extract --repository repo.borg --archive host-2023-...
|
2019-11-01 05:45:47 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
## Extract particular files
|
|
|
|
|
|
|
|
Sometimes, you want to extract a single deleted file, rather than extracting
|
2019-11-01 18:00:26 +01:00
|
|
|
everything from an archive. To do that, tack on one or more `--path` values.
|
|
|
|
For instance:
|
2019-11-01 05:45:47 +01:00
|
|
|
|
|
|
|
```bash
|
2023-07-14 04:25:14 +02:00
|
|
|
borgmatic extract --archive latest --path path/1 --path path/2
|
2019-11-01 05:45:47 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
Note that the specified restore paths should not have a leading slash. Like a
|
2022-08-18 19:19:11 +02:00
|
|
|
whole-archive extract, this also extracts into the current directory by
|
|
|
|
default. So for example, if you happen to be in the directory `/var` and you
|
|
|
|
run the `extract` command above, borgmatic will extract `/var/path/1` and
|
|
|
|
`/var/path/2`.
|
|
|
|
|
2019-11-01 05:45:47 +01:00
|
|
|
|
2023-03-07 07:59:34 +01:00
|
|
|
### Searching for files
|
|
|
|
|
|
|
|
If you're not sure which archive contains the files you're looking for, you
|
|
|
|
can [search across
|
|
|
|
archives](https://torsion.org/borgmatic/docs/how-to/inspect-your-backups/#searching-for-a-file).
|
|
|
|
|
|
|
|
|
2019-11-01 18:00:26 +01:00
|
|
|
## Extract to a particular destination
|
|
|
|
|
|
|
|
By default, borgmatic extracts files into the current directory. To instead
|
|
|
|
extract files to a particular destination directory, use the `--destination`
|
|
|
|
flag:
|
|
|
|
|
|
|
|
```bash
|
2022-08-18 19:19:11 +02:00
|
|
|
borgmatic extract --archive latest --destination /tmp
|
2019-11-01 18:00:26 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
When using the `--destination` flag, be careful not to overwrite your system's
|
|
|
|
files with extracted files unless that is your intent.
|
|
|
|
|
2019-11-01 05:45:47 +01:00
|
|
|
|
|
|
|
## Database restoration
|
|
|
|
|
|
|
|
The `borgmatic extract` command only extracts files. To restore a database,
|
|
|
|
please see the [documentation on database backups and
|
|
|
|
restores](https://torsion.org/borgmatic/docs/how-to/backup-your-databases/).
|
|
|
|
borgmatic does not perform database restoration as part of `borgmatic extract`
|
|
|
|
so that you can extract files from your archive without impacting your live
|
|
|
|
databases.
|
|
|
|
|
|
|
|
|
2019-11-25 23:56:20 +01:00
|
|
|
## Mount a filesystem
|
|
|
|
|
|
|
|
If instead of extracting files, you'd like to explore the files from an
|
|
|
|
archive as a [FUSE](https://en.wikipedia.org/wiki/Filesystem_in_Userspace)
|
|
|
|
filesystem, you can use the `borgmatic mount` action. Here's an example:
|
|
|
|
|
|
|
|
```bash
|
2022-08-18 19:19:11 +02:00
|
|
|
borgmatic mount --archive latest --mount-point /mnt
|
2019-11-25 23:56:20 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
This mounts the entire archive on the given mount point `/mnt`, so that you
|
|
|
|
can look in there for your files.
|
|
|
|
|
2019-12-07 00:58:54 +01:00
|
|
|
Omit the `--archive` flag to mount all archives (lazy-loaded):
|
|
|
|
|
|
|
|
```bash
|
|
|
|
borgmatic mount --mount-point /mnt
|
|
|
|
```
|
|
|
|
|
2022-06-03 05:35:39 +02:00
|
|
|
Or use the "latest" value for the archive to mount the latest archive:
|
2020-01-30 02:08:03 +01:00
|
|
|
|
|
|
|
```bash
|
|
|
|
borgmatic mount --archive latest --mount-point /mnt
|
|
|
|
```
|
|
|
|
|
2019-11-25 23:56:20 +01:00
|
|
|
If you'd like to restrict the mounted filesystem to only particular paths from
|
|
|
|
your archive, use the `--path` flag, similar to the `extract` action above.
|
|
|
|
For instance:
|
|
|
|
|
|
|
|
```bash
|
2022-08-18 19:19:11 +02:00
|
|
|
borgmatic mount --archive latest --mount-point /mnt --path var/lib
|
2019-11-25 23:56:20 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
When you're all done exploring your files, unmount your mount point. No
|
|
|
|
`--archive` flag is needed:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
borgmatic umount --mount-point /mnt
|
|
|
|
```
|
2023-07-28 20:46:04 +02:00
|
|
|
|
|
|
|
## Extract the configuration files used to create an archive
|
|
|
|
|
|
|
|
<span class="minilink minilink-addedin">New in version 1.7.15</span> borgmatic
|
2023-08-04 07:11:02 +02:00
|
|
|
automatically stores all the configuration files used to create an archive
|
2023-11-15 18:05:52 +01:00
|
|
|
inside the archive itself. They are stored in the archive using their full
|
|
|
|
paths from the machine being backed up. This is useful in cases where you've
|
|
|
|
lost a configuration file or you want to see what configurations were used to
|
|
|
|
create a particular archive.
|
2023-07-28 20:46:04 +02:00
|
|
|
|
2023-08-04 07:11:02 +02:00
|
|
|
To extract the configuration files from an archive, use the `config bootstrap`
|
|
|
|
action. For example:
|
2023-07-28 20:46:04 +02:00
|
|
|
|
|
|
|
```bash
|
|
|
|
borgmatic config bootstrap --repository repo.borg --destination /tmp
|
|
|
|
```
|
|
|
|
|
2023-08-04 07:11:02 +02:00
|
|
|
This extracts the configuration file from the latest archive in the repository
|
|
|
|
`repo.borg` to `/tmp/etc/borgmatic/config.yaml`, assuming that the only
|
|
|
|
configuration file used to create this archive was located at
|
|
|
|
`/etc/borgmatic/config.yaml` when the archive was created.
|
2023-07-28 20:46:04 +02:00
|
|
|
|
2023-08-04 07:11:02 +02:00
|
|
|
Note that to run the `config bootstrap` action, you don't need to have a
|
2023-12-24 19:33:55 +01:00
|
|
|
borgmatic configuration file. You only need to specify the repository to use
|
|
|
|
via the `--repository` flag; borgmatic will figure out the rest.
|
2023-07-28 20:46:04 +02:00
|
|
|
|
2023-08-04 07:11:02 +02:00
|
|
|
If a destination directory is not specified, the configuration files will be
|
|
|
|
extracted to their original locations, silently *overwriting* any configuration
|
|
|
|
files that may already exist. For example, if a configuration file was located
|
|
|
|
at `/etc/borgmatic/config.yaml` when the archive was created, it will be
|
|
|
|
extracted to `/etc/borgmatic/config.yaml` too.
|
2023-07-28 20:46:04 +02:00
|
|
|
|
2023-08-04 07:11:02 +02:00
|
|
|
If you want to extract the configuration file from a specific archive, use the
|
|
|
|
`--archive` flag:
|
2023-07-28 20:46:04 +02:00
|
|
|
|
|
|
|
```bash
|
|
|
|
borgmatic config bootstrap --repository repo.borg --archive host-2023-01-02T04:06:07.080910 --destination /tmp
|
|
|
|
```
|
2023-08-04 07:11:02 +02:00
|
|
|
|
2023-12-24 19:33:55 +01:00
|
|
|
See the output of `config bootstrap --help` for additional flags you may need
|
|
|
|
for bootstrapping.
|
|
|
|
|
2023-08-04 07:11:02 +02:00
|
|
|
<span class="minilink minilink-addedin">New in version 1.8.1</span> Set the
|
|
|
|
`store_config_files` option to `false` to disable the automatic backup of
|
|
|
|
borgmatic configuration files, for instance if they contain sensitive
|
|
|
|
information you don't want to store even inside your encrypted backups. If you
|
|
|
|
do this though, the `config bootstrap` action will no longer work.
|
2024-01-09 22:47:20 +01:00
|
|
|
|
|
|
|
<span class="minilink minilink-addedin">New in version 1.8.7</span> Included
|
|
|
|
configuration files are stored in each backup archive. This means that the
|
|
|
|
`config bootstrap` action not only extracts the top-level configuration files
|
|
|
|
but also the includes they depend upon.
|