Я хочу создать резервную копию баз данных синхронизации pacman
после выполнения pacman -Sy
, создав «точки восстановления», которые pacman - Suu
можно использовать для отмены неудачного обновления системы. Дополнительную информацию можно найти здесь .
Я хочу вручную заблокировать базы данных pacman через /var/lib/pacman/db.lck
, чтобы гарантировать, что базы данных не будут изменены во время сохранения / восстановления.
Как атомарно проверить / создать /var/lib/pacman/db.lck
?
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. Дата.
Сценарий также сохраняет списки независящих пакетов:
Используйте -b
, чтобы указать другое расположение для баз данных, например:
pacman -Suu -b /var/lib/pacman/backup/2017-02-26T12:55:26+07:00