s12 CyberPanel — WebFactor Production Backup System
| Път | /var/backups/borg-home |
| Криптиране | Няма |
| Архиви | 52 |
| Оригинален размер | 13.46 TB (кумулативно) |
| Компресиран | 10.57 TB |
| Дедуплициран (реален) | 291.14 GB |
| Компресия | zstd,8 |
| /home/ размер | 266 GB |
| Хост | Incus контейнер на s1 |
| Файлова система | ZFS mainpool/backups |
| Общо | 40 TB |
| Заето | 203 GB (0.5%) |
| Свободно | ~40 TB |
| Borg инсталиран | Не |
| Borg repo | Не съществува |
| Наличен път | /backups/cyberpanel/ |
Всички remote borg бекъпи са счупени. backuprepo (Tailscale) — tmux retries fail. borgrepo1 — DNS не се resolve-ва. Логовете показват 6 последователни провала с rc=1. Единственият бекъп е локален — на същия диск.
Само 108 GB свободни от 2 TB. Borg repo-то заема 291 GB (14.5% от диска). С намаляване на retention от 52 седмици на 7 дни, очакваме спестяване на ~200 GB.
Бекъп контейнерът на s1 има 40 TB свободни, но няма borg. Директорията /backups/cyberpanel/ съществува, но е празна. Трябва да се инсталира borg и да се създаде repo.
Всички скриптове са в cyberpanel LXD контейнера на s12.
| Скрипт | Път | Статус | Описание |
|---|---|---|---|
| borg-home-local.sh | /root/scripts/backup/ | Active | Локален Borg create + prune + compact на /home |
| wp-export-all-db.sh | /root/scripts/backup/ | Active | WP DB export за всички сайтове → wp-content/db-*.sql |
| backup-manager.sh | /root/scripts/backup/ | Active | Интерактивно меню: backup / list / restore (+WP DB import) |
| borg-oneliner.sh | /root/scripts/backup/ | Disabled | Remote borg към backuprepo (Tailscale), JSON summary |
| backup-home-borg.sh | /root/ | Failing | Remote borg към backuprepo с tmux + retries |
| borg-repo-to-s1.sh | /root/scripts/backup/ | Unused | rsync на borg repo към s1.webfactor.com |
| full-backup-to-s1.sh | /root/scripts/backup/ | One-time | Пълен rsync бекъп (MySQL, /home, LiteSpeed, CyberPanel, Docker...) |
| backup-home.sh | /root/ | Broken | Remote borg към borgrepo1 (DNS fail) |
Локален repo: /var/backups/borg-home — от 17 септември 2025 до 24 февруари 2026
| # | Архив | Дата | Тип |
|---|---|---|---|
| 1 | cyberpanel-home-2025-09-17_06-11-51 | 17.09.2025 | weekly |
| 2 | cyberpanel-home-2025-09-21_22-10-01 | 21.09.2025 | weekly |
| 3 | cyberpanel-home-2025-09-28_22-10-01 | 28.09.2025 | weekly |
| 4 | cyberpanel-home-2025-10-05_22-10-01 | 05.10.2025 | weekly |
| 5 | cyberpanel-home-2025-10-12_22-10-01 | 12.10.2025 | weekly |
| 6 | cyberpanel-home-2025-10-19_22-10-01 | 19.10.2025 | weekly |
| 7 | cyberpanel-home-2025-10-26_12-10-01 | 26.10.2025 | weekly |
| 8 | cyberpanel-home-2025-11-09_20-10-01 | 09.11.2025 | weekly |
| 9 | cyberpanel-home-2025-11-16_22-10-01 | 16.11.2025 | weekly |
| 10 | cyberpanel-home-2025-11-23_22-10-01 | 23.11.2025 | weekly |
| 11 | cyberpanel-home-2025-11-30_22-10-01 | 30.11.2025 | weekly |
| 12 | cyberpanel-home-2025-12-07_22-10-01 | 07.12.2025 | weekly |
| 13 | cyberpanel-home-2025-12-14_22-10-01 | 14.12.2025 | weekly |
| 14 | cyberpanel-home-2025-12-21_22-10-01 | 21.12.2025 | weekly |
| 15 | cyberpanel-home-2025-12-28_22-10-01 | 28.12.2025 | weekly |
| 16 | cyberpanel-home-2026-01-04_22-10-01 | 04.01.2026 | weekly |
| 17 | cyberpanel-home-2026-01-11_22-10-01 | 11.01.2026 | weekly |
| 18 | cyberpanel-home-2026-01-18_22-10-01 | 18.01.2026 | weekly |
| 19 | cyberpanel-home-2026-01-25_22-10-02 | 25.01.2026 | weekly |
| 20 | cyberpanel-home-2026-02-01_22-10-01 | 01.02.2026 | weekly |
| 21 | cyberpanel-home-2026-02-08_22-10-01 | 08.02.2026 | weekly |
| 22 | cyberpanel-home-2026-02-15_22-10-01 | 15.02.2026 | weekly |
| 23 | cyberpanel-home-2026-02-16_22-10-01 | 16.02.2026 | daily |
| 24-28 | cyberpanel-home-2026-02-17 … 02-21 | 17-21.02 | daily |
| 29-52 | cyberpanel-home-2026-02-22 … 02-24 | 22-24.02 | 2h |
Бекъпите продължават да се правят на s12 както до сега. Веднъж дневно, нов архив се push-ва и към s1-backups (отделно borg repo). На s12 се пазят само последните 7 дни — по-старите се трият. На s1 всичко си остава — пълна история. При restore, менюто показва всички архиви от двете места — от което избереш, от него възстановява.
Borg create на /home
Всеки 2 часа
/var/backups/borg-home
Само последната седмица
~20 архива, ~50-80 GB
/backups/cyberpanel/borg-home
Пълна история (месеци / години)
40 TB налични
Показва [LOCAL] + [S1] архиви
Избираш → възстановява от съответното
Borg repo не може да се rsync-не и после да се prune-не различно на двете места. Ако rsync-неш с --delete и после prune-неш на s12, при следващия rsync старите архиви се трият и от s1. Без --delete пък се трупат orphan chunks и repo-то на s1 се разваля.
Затова: две отделни borg repo-та, всяко със своя retention. Бекъпът е един (прави се на s12), но се push-ва и към s1 като независим архив. Така на s12 можеш свободно да триеш стари архиви, а на s1 те си остават.
| s12 (локално) | s1-backups (remote) | |
|---|---|---|
| Какво е | Бърз кеш на бекъпи | Дългосрочен архив |
| Архиви | ~20 (последната седмица) | Всички — пълна история |
| Retention | keep-within 2d + keep-daily 7 | keep-daily 30 + keep-weekly 52 + keep-monthly 12 |
| Размер на repo | ~50-80 GB | ~300+ GB (расте) |
| Честота на бекъп | Всеки 2 часа | Веднъж дневно (04:00) |
| Скорост на restore | Бързо (локален диск) | По-бавно (през SSH/мрежа) |
| Диск | 2 TB (95% → ~85%) | 40 TB (0.5%) |
Контейнерът е Ubuntu на Incus, стандартен apt install.
Cyberpanel контейнерът вече има ed25519 ключ. Копираме го към s1-backups.
Без криптиране — същото като локалния repo за лесен достъп.
Вместо rsync, правим borg create от s12 към s1 repo-то. Но за първоначалния трансфер на всички 52 архива, rsync е по-бързо (после repo-то на s1 става самостоятелно и получава нови архиви чрез borg create).
Веднъж дневно прави borg create от s12 директно в repo-то на s1 през SSH. Плюс щаден borg prune за s1 (пази много повече).
САМО след като стъпки 1-5 са завършени и проверени! Махаме --keep-weekly=52.
Менюто показва архиви от двата repo-та. Избираш номер → системата знае от кой repo да restore-не.
Добавяме само един нов ред за ежедневния push към s1.
Бекъп хронология: DB export → (10 мин пауза) → Borg create + prune (локално) → (в 04:00) → Borg push to s1
backup-manager.sh автоматично списява архивите от двата repo-та. Маркира ги [LOCAL] или [S1]. Ти избираш номер — системата знае от кой repo да извлече. WP DB restore работи идентично и в двата случая.
1) Инсталираме borg на s1 → 2) Копираме всички 52 архива от s12 на s1 → 3) Проверяваме: borg list на s1 показва 52 архива → 4) Тестваме restore от s1 → 5) Чак тогава сменяме prune на s12 да пази само 7 дни → 6) Пускаме ежедневния push в cron. Старите скриптове (backup-home-borg.sh, borg-oneliner.sh и др.) остават непокътнати.