Как удалить файл из всех снимков в системе btrfs?
Я настроил сложную схему резервного копирования с ежечасным, ежедневным, еженедельным, ежемесячным резервным копированием, которое занимает (благодаря славе коровьей файловой системы btrfs) практически не оставляющее места на устройстве.
Но, к сожалению, я выбежал из космоса старомодным способом (скопировав в него много чего).
Теперь удаление чего-либо бесполезно, поскольку оно сохраняется во всех моментальных снимках. Чтобы освободить место на диске, я должен был бы удалить все снимки, так как файл был сначала скопирован на устройство. Я не хочу этого делать, потому что
- Трудно выяснить, когда именно это было (особенно, если файлы были изменены с тех пор)
- Я не хочу терять историю всех других файлов в этих снимках
- получить доступ к снимкам можно только путем их монтирования, с root-fs это немного сложнее, чем просто делать
rm -f
Итак, как мне сказать btrfs удалить один файл во всех снимках? Фактически это означает, что необходимо установить нулевой внутренний счетчик ссылок, чтобы освободить место.
Если это невозможно с помощью самих инструментов btrfs (что было бы немного недальновидно), я также рад любому стороннему инструменту, который может облегчить задачу поиска, монтирования и удаления файла во всех снимках,
1 ответ
Одним из обходных путей является временная установка доступных для записи снимков и удаление файлов для каждого снимка, в котором они появляются.
Чтобы установить записываемый снимок (из раздела Как сделать снимок btrfs доступным для записи?):
btrfs property set -ts <snapshot> ro false
Удалите файлы, чтобы освободить место, затем установите их обратно только для чтения с
btrfs property set -ts <snapshot> ro true
Как только все ссылки на файлы исчезнут, btrfs обнаружит, что свободного места больше.
К сожалению, этот метод не очень помогает, если вы потеряли отслеживание имен файлов. Но вы все еще можете использовать Baobab или K4DirStat или du -h | sort -h
чтобы найти, где большие файлы находятся на снимках.
Кроме того, вам не нужно отдельно монтировать каждый снимок, если вы можете просто смонтировать каталог, в котором они содержатся.