Как к рекурсивному удаляют снимок btrfs?

Как я могу удалить снимок, которые содержат сам по себе другие снимки? Нормальное sudo btrfs subvolume delete даст ошибку.

0
задан 9 February 2015 в 01:04

2 ответа

Рекурсивное удаление подобъема (снимки - просто подобъемы только для чтения) еще не доступно в btrfs-инструментах. Чтобы удалить верхнего уровня, Вы должны сначала удалить более низкие уровни.

Вы можете получить список подобъемов с эти btrfs subvolume list команда.-o выбор должен позволить Вам отфильтровать результаты просто тем, Вы заботитесь о, но не стесняетесь экспериментировать. Вы должны тогда быть в состоянии спуститься по списку и удалить все подподобъемы, после которых Вам необходимо удалить подобъем верхнего уровня, и затем Вы сделаны.

0
ответ дан 3 August 2019 в 16:31

К сожалению btrfs subvolume list ненавидит исправность. Вот опытный сценарий.

Это работает над подобъемом в текущем каталоге, предполагает tmp, не существует, имеет тревожное небезопасное поведение на "специальных символах" (| или символы регулярного выражения в родитель каталоги), имеет неоткрытые ошибки и никакие комментарии. Проблемы regex нужно, вероятно, избежать путем перезаписи для использования сопоставления строк удара вместо sed. Если вывод btrfs subvolume list изменения в какой-то момент это съест Вас.

#!/bin/sh
# DISCLAIMER: see above
set -e

function my_ls_pwd() {
    btrfs sub list -o "$1" | cut -d " " -f 9
}

btrfs sub create tmp
btrfs sub create tmp/tmp
BTRFS_PWD=$(my_ls_pwd tmp | sed -e 's|tmp/tmp$||')
btrfs sub del tmp/tmp
btrfs sub del tmp

# `btrfs sub list` shows full path within the FS;
# we want path relative to the working directory
function my_ls() {
    my_ls_pwd $1 | sed -e "s|^$BTRFS_PWD||"
}

# Recursive subvolume delete
function my_deltree() {
    my_ls "$1" | while read i; do
        my_deltree "$i"
    done
    btrfs sub del "$1"
}
my_deltree $1
0
ответ дан 3 August 2019 в 16:31

Другие вопросы по тегам:

Похожие вопросы: