Полнота бэкапа: SSH, весь UFW, свои юниты, конфиги пакетов, системные параметры
Агент: - ssh: sshd_config(.d), ключи хоста, authorized_keys root и пользователей - system: весь /etc/ufw и /etc/default/ufw, /etc/sysctl.conf, /etc/hosts, свои файлы в /etc/cron.d (пакетные отсекаются через dpkg -S) - certs: /etc/letsencrypt, /root/.acme.sh; xui: сертификаты по путям из базы - docker: daemon.json и логины в registry; telegraf: /etc/default/telegraf - caddy: бинарник бэкапится, если Caddy собран с плагинами - units: свои systemd-юниты с состоянием enabled/active и drop-in *.service.d - etc: изменённые конфиги любых пакетов (dpkg conffiles) и свои файлы в /etc, кроме привязанного к железу и облаку - в манифесте: часовой пояс, swap, вручную поставленные пакеты; версия apt-пакета в строке категории - предупреждения: программы юнитов вне бэкапа, каталоги /opt и /usr/local/bin без категории, контейнеры без compose Restore: - часовой пояс, swap-файл, доустановка вручную поставленных пакетов - свои юниты включаются и запускаются как на старом сервере Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cbd3cde01d
commit
1947b26913
14 files changed
+747
-45
No files matched your search
@@ -106,6 +106,7 @@ func Run(ctx context.Context, opts Options) error {
|
||||
return fmt.Errorf("подготовка сервера: %w", err)
|
||||
}
|
||||
}
|
||||
r.restoreSystem()
|
||||
if err := r.prepareVolumes(); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -403,6 +404,13 @@ func (r *restorer) restoreCategory(c manifest.Category) error {
|
||||
if err := r.restoreCompose(c); err != nil {
|
||||
return err
|
||||
}
|
||||
case catalog.TypeUnits:
|
||||
_ = sysx.Run(r.ctx, "systemctl", "daemon-reload")
|
||||
for i := range c.Units {
|
||||
if err := r.applyService(&c.Units[i]); err != nil {
|
||||
r.warn("%s: %v", c.Name, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
if c.Name == "system" {
|
||||
r.fixCrontabs()
|
||||
|
||||
Reference in new issue
Block a user