我想pacman
在执行后备份同步数据库pacman -Sy
,创建“还原点”,pacman -Suu
可用于逆转失败的系统升级。可以找到更多背景这里。
我想通过手动锁定 pacman 数据库,/var/lib/pacman/db.lck
以确保数据库在保存/恢复时不会更改。
如何自动检查/创建/var/lib/pacman/db.lck
?
答案1
锁定数据库
mkdir
是一个原子操作,可以避免并发问题。
sudo mkdir /var/lib/pacman/db.lck 2>/dev/null && echo Got lock || echo Locked out
pacman -Syy
我在另一个 shell 中运行时测试了上述内容。 pacman 运行时输出为“Locked out”,完成后输出为“Got lock”。
相反,pacman -Syy
会说当目录存在时它无法锁定数据库。
备份
我写了一个paranoia_level=9bash
脚本它将同步数据库安全地保存到/var/lib/pacman/backup
由 ISO8601 日期命名的目录中。
该脚本还保存以下非依赖包列表:
- 所有套餐
- 同步包
- 国外(例如 AUR)包裹
备份的使用
使用该-b
选项为数据库指定不同的位置,例如:
pacman -Suu -b /var/lib/pacman/backup/2017-02-26T12:55:26+07:00