borgbackup / borgbackup/borg

Canonical path: resolve symbolic links?

Open
#8,188 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
13.7k
Forks
875
Avg merge
11h 15m
Merged PRs (30d)
192

Description

## Have you checked borgbackup docs, FAQ, and open GitHub issues?

Yes

## Is this a BUG / ISSUE report or a QUESTION?

Issue

## System information. For client/server mode post info for both machines.

#### Your borg version (borg -V).

Git repository `master` branch, `1.2.4` and probably all recent-ish versions

#### Operating system (distribution) and version.

Any

#### Hardware / network configuration, and filesystems used.

/

#### How much data is handled by borg?

/

#### Full borg commandline that lead to the problem (leave away excludes and passwords)

```bash
borg -r /tmp/foo/ rlist
```

## Describe the problem you're observing.

Borg has a built-in [protection against repository relocation](https://github.com/borgbackup/borg/blob/0c1df415d74ebb11f5e738cf7b0aae7a45967f07/src/borg/cache.py#L103), which can be disabled with the [`BORG_RELOCATED_REPO_ACCESS_IS_OK`](https://borgbackup.readthedocs.io/en/stable/usage/general.html) environment variable. This check, however, serves security purposes; if possible, it is better not to disable it.

On backup servers, I often find myself creating repositories in some non-root volume, mounted at eg. `/mnt/borg`. For convenience, I often create a symlink `~borg/repos --> /mnt/borg`.

This, however, breaks this check: repositories paths are not normalized by resolving symlinks, and if I eg. have a `borg prune` running automatically on the `~borg/repos/...` paths, but run once manually any command on `/mnt/borg/...`, the next automatic run of prune will break.

Would it be possible to resolve symlinks, eg. in the [`canonical_path`](https://github.com/borgbackup/borg/blob/0c1df415d74ebb11f5e738cf7b0aae7a45967f07/src/borg/helpers/parseformat.py#L575-L590) function, in order to fix this behaviour?

#### Can you reproduce the problem? If so, describe how. If not, describe troubleshooting steps you took before opening the issue.

```bash
borg -r /tmp/foo rcreate -e none # or whatever, this repository won't be really used
ln -s /tmp/foo /tmp/bar
borg -r /tmp/foo rlist # works fine
borg -r /tmp/bar rlist # complains with directory relocation
borg -r /tmp/foo rlist # complains again with directory relocation
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.