Сегодня я поделюсь одним полезным советом, который позволяет разработчикам и системным администраторам 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

см. также:

 

Поделитесь статьей:

Добавить комментарий