Полнота бэкапа: 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
@@ -20,9 +20,13 @@ type Manifest struct {
|
||||
Packages map[string]string `json:"packages,omitempty"` // apt-пакет → точная версия dpkg
|
||||
Features Features `json:"features"`
|
||||
SudoUsers []string `json:"sudo_users,omitempty"`
|
||||
Categories []Category `json:"categories"`
|
||||
Parts []string `json:"parts"` // main + heavy-части, вошедшие в этот бэкап
|
||||
Warnings []string `json:"warnings,omitempty"`
|
||||
Timezone string `json:"timezone,omitempty"`
|
||||
Swap []SwapFile `json:"swap,omitempty"`
|
||||
// ManualPackages — пакеты, поставленные вручную (apt-mark showmanual): restore доставит недостающие.
|
||||
ManualPackages []string `json:"manual_packages,omitempty"`
|
||||
Categories []Category `json:"categories"`
|
||||
Parts []string `json:"parts"` // main + heavy-части, вошедшие в этот бэкап
|
||||
Warnings []string `json:"warnings,omitempty"`
|
||||
}
|
||||
|
||||
type OSInfo struct {
|
||||
@@ -39,22 +43,28 @@ type Features struct {
|
||||
}
|
||||
|
||||
type Category struct {
|
||||
Name string `json:"name"`
|
||||
Type string `json:"type"`
|
||||
Auto bool `json:"auto,omitempty"` // найдена автоматически, в каталоге не описана
|
||||
Version string `json:"version,omitempty"`
|
||||
Install string `json:"install,omitempty"` // recipe установки бинарника
|
||||
Service *ServiceState `json:"service,omitempty"`
|
||||
Paths []string `json:"paths,omitempty"` // абсолютные пути в <cat>/files/
|
||||
Binaries []string `json:"binaries,omitempty"` // абсолютные пути в <cat>/bin/ (fallback)
|
||||
Dumps []Dump `json:"dumps,omitempty"`
|
||||
Volumes []Volume `json:"volumes,omitempty"`
|
||||
Heavy []string `json:"heavy,omitempty"` // пути, ушедшие в отдельную часть <cat>
|
||||
HeavySkipped bool `json:"heavy_skipped,omitempty"`
|
||||
Compose *Compose `json:"compose,omitempty"`
|
||||
EnsureDirs []string `json:"ensure_dirs,omitempty"`
|
||||
PostRestore []string `json:"post_restore,omitempty"`
|
||||
RestoreAfter []string `json:"restore_after,omitempty"`
|
||||
Name string `json:"name"`
|
||||
Type string `json:"type"`
|
||||
Auto bool `json:"auto,omitempty"` // найдена автоматически, в каталоге не описана
|
||||
Version string `json:"version,omitempty"`
|
||||
Install string `json:"install,omitempty"` // recipe установки бинарника
|
||||
Service *ServiceState `json:"service,omitempty"`
|
||||
Units []ServiceState `json:"units,omitempty"` // тип units: свои systemd-юниты и их состояние
|
||||
Paths []string `json:"paths,omitempty"` // абсолютные пути в <cat>/files/
|
||||
Binaries []string `json:"binaries,omitempty"` // абсолютные пути в <cat>/bin/ (fallback)
|
||||
Dumps []Dump `json:"dumps,omitempty"`
|
||||
Volumes []Volume `json:"volumes,omitempty"`
|
||||
Heavy []string `json:"heavy,omitempty"` // пути, ушедшие в отдельную часть <cat>
|
||||
HeavySkipped bool `json:"heavy_skipped,omitempty"`
|
||||
Compose *Compose `json:"compose,omitempty"`
|
||||
EnsureDirs []string `json:"ensure_dirs,omitempty"`
|
||||
PostRestore []string `json:"post_restore,omitempty"`
|
||||
RestoreAfter []string `json:"restore_after,omitempty"`
|
||||
}
|
||||
|
||||
type SwapFile struct {
|
||||
Path string `json:"path"`
|
||||
Size int64 `json:"size"` // байт
|
||||
}
|
||||
|
||||
type ServiceState struct {
|
||||
|
||||
Reference in new issue
Block a user