Сегодня я поделюсь одним полезным советом, который позволяет разработчикам и системным администраторам FreeBSD сделать резервную копию списка установленных пакетов FreeBSD и затем восстановить его.
Следовательно, это полезно для disaster recovery или просто для восстановления нового сервера.
Это сэкономит ваше время.
Как составить список установленных пакетов FreeBSD
Используйте команду pkg query следующим образом, чтобы получить список всех установленных пакетов FreeBSD:
# pkg query -e "%a = 0" "%n" > list.txt ## или ## # pkg query -e "%a = 0" "%o" > list.txt
Как создавать резервные копии имен пакетов FreeBSD
Вы можете использовать следующий алиас команды pkg, определенный в файле pkg.conf, чтобы сэкономить немного текста в CLI:
pkg prime-list > list.txt
или
pkg prime-origins > list.txt
Просмотрите список, используя cat /more или less:
cat list.txt
Образец выода релиза FreeBSD 13.1, созданный командой pkg prime-origins:
shells/bash shells/bash-completion textproc/bat sysutils/bhyve-firmware ftp/curl dns/dog graphics/drm-kmod devel/gdb sysutils/grub2-bhyve devel/hs-ShellCheck sysutils/htop security/keychain ftp/lftp sysutils/ncdu ports-mgmt/pkg mail/postfix sysutils/pwol net/py-s3cmd sysutils/rsnapshot net/rsync lang/rust sysutils/screen sysutils/smartmontools security/sudo editors/vim net/vnstat ftp/wget net/wireguard net/wol sysutils/zfs-stats
Копирование списка установленных пакетов FreeBSD
Затем скопируйте файл list.txt на целевую машину FreeBSD, используя ваш любимый инструмент безопасного удаленного копирования файлов, например, команду rsync или команду scp.
Например:
rsync list.txt user@new-freebsd-vm-box:/path/to/dest scp list.txt vivek@itisgood-f14-nuc:
Восстановление установленных пакетов FreeBSD из вашего списка
Затем войдите в систему на целевой машине FreeBSD.
Например:
ssh vivek@itisgood-f14-nuc {vivek@itisgood-f14-nuc ~}$ ls -l list.txt {vivek@itisgood-f14-nuc ~}$ cat list.txt
Обязательно попробуйте протестировать это на той же версии FreeBSD. Например, существует большая вероятность того, что список пакетов из FreeBSD 11/12 будет работать на FreeBSD 13. Например, в тех же случаях такие имена пакетов, как py27-s3cmd, могут быть недоступны на FreeBSD 13, а имена пакетов py37-s3cmd или py38-s3cmd могут быть доступны на FreeBSD 13.
Наконец, восстановите пакеты freebsd из файла list.txt, запустите:
pkglist=$(cat list.txt) {vivek@itisgood-f14-nuc ~}$ echo "$pkglist" {vivek@itisgood-f14-nuc ~}$ sudo pkg install $pkglist
Как создать резервную копию списка установленных пакетов с помощью скрипта shell
Шаги следующие:
- Сначала составьте список на источнике с помощью команды pkg prime-list > list.txt.
- Создайте список конфигурационных файлов, которые тоже нужно скопировать. Например, файл конфигурации wireguard из каталога /usr/local/etc/wireguard/ также должен быть скопирован на целевой блок после установки пакетов с помощью команды pkg install $pkglist.
- Поскольку каждая установка уникальна, написание скрипта shell/python оставим на усмотрение читателей.
Заключение
Надеюсь, это небольшое руководство поможет вам создать резервную копию имен ВСЕХ установленных пакетов в текстовый файл и восстановить ее при необходимости.
Проверьте страницу руководства по команде pkg с помощью команды man:
man pkg man pkg.conf
см. также:
- Полный обзор TrueOS – лучший FreeBSD для десктопа
- Интернет шлюз на FreeBSD
- Как сбросить или восстановить пароль пользователя root в FreeBSD