Skip to content

Canonical path: resolve symbolic links? #8188

Description

@tobast

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)

borg -r /tmp/foo/ rlist

Describe the problem you're observing.

Borg has a built-in protection against repository relocation, which can be disabled with the BORG_RELOCATED_REPO_ACCESS_IS_OK 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 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.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions