Skip to content

Feature Request: Add a command to purge one of the branch of a mergerfs pool #146

@donmor

Description

@donmor

Assume there's one of these situation:

  • You want to move a disk with a mergerfs branch on it to another machine, without breaking the pool
  • A disk with a mergerfs branch on it reports a SMART error, thus is going to be replaced as soon as possible
  • Or you just want tot shrink the size of the pool

Then we need to purge all files from the affected branches. I suggest a tool like:

usage: mergerfs.purge[<options>] <branch>...

This tool dup all files on the specified branches to other branches and then,
if specified with -e, delete the original files.

positional arguments:
  branch                    branch to purge

optional arguments:
  -A, --allocate      Try to allocate space before copying files. Aborts
                      if there's no enough space to perform the action.
  -C, --conflicts=    Specify which file to keep if a file with same path
                      and different hash is on target branch. (default: lost)
                      * source   : file from the source
                      * dest     : file on the dest
                      * newer    : file with larger mtime
                      * older    : file with smaller mtime
                      * smaller  : file with smaller size
                      * larger   : file with larger size
                      * mergerfs : file chosen by mergerfs' getattr
                      * lost     : put file from the source to lost+found
                      * ask      : prompt user to make a choice
  -f --force          Force reading unreadable files and put fragments in
                      lost+found.
  -F, include-frags   Include lost+found on the source branch.
  -e, --execute       Execute `rm` commands as well as print them.
  -u, --umount        Unmount path to the source branch if it is a mount
                      point.
  -h, --help          Print this help.

P.S.: There's a PR(#105 ) doing similiar thing, but is revoked.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions