Arch: безопасно сохранять и восстанавливать базы данных pacman

Я хочу создать резервную копию баз данных синхронизации pacman после выполнения pacman -Sy , создав «точки восстановления», которые pacman - Suu можно использовать для отмены неудачного обновления системы. Дополнительную информацию можно найти здесь .

Я хочу вручную заблокировать базы данных pacman через /var/lib/pacman/db.lck , чтобы гарантировать, что базы данных не будут изменены во время сохранения / восстановления.

Как атомарно проверить / создать /var/lib/pacman/db.lck ?

0
26.02.2017, 08:17
1 ответ

Блокировка баз данных

mkdir - это атомарная операция, которая позволит избежать проблем с параллелизмом.

sudo mkdir /var/lib/pacman/db.lck 2>/dev/null && echo Got lock || echo Locked out

Я тестировал описанное выше при запуске pacman -Syy в другой оболочке. Результатом будет «Заблокировано» во время работы pacman и «Получена блокировка» после его завершения.

В свою очередь, pacman -Syy скажет, что он не может заблокировать базу данных, пока каталог существует.

Резервное копирование

Я написал сценарий paranoia_level = 9 bash , который безопасно сохраняет базы данных синхронизации в каталогах в каталоге / var / lib / pacman / backup с именем ISO8601. Дата.

Сценарий также сохраняет списки независящих пакетов:

  • все пакеты
  • пакеты синхронизации
  • внешние (например, AUR) пакеты

Использование резервных копий

Используйте -b , чтобы указать другое расположение для баз данных, например:

pacman -Suu -b /var/lib/pacman/backup/2017-02-26T12:55:26+07:00
1
28.01.2020, 02:46

Теги

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