Резервное копирование Linux VPS с помощью Plakar
Установите plakar на Debian 12 или Ubuntu 24.04, создайте зашифрованное хранилище с дедупликацией, делайте резервные копии путей файловой системы и баз данных через stdin, автоматизируйте бэкапы и восстанавливайте файлы или полные дампы баз данных.
Что такое plakar и зачем его использовать для бэкапов VPS?
Plakar — это инструмент резервного копирования с открытым исходным кодом, написанный на Go. Поставляется как один бинарник со встроенным шифрованием, дедупликацией, веб-интерфейсом и нативным планировщиком. Шифрование включено по умолчанию при создании репозитория. Plakar делает бэкапы путей файловой системы, дампов баз данных через stdin и S3-бакетов. Проект вступил в Linux Foundation и CNCF в январе 2026 года.
Если ты уже используешь restic или borgbackup, вот чем отличается plakar. Restic требует внешний инструмент вроде rclone для удалённой синхронизации и cron для планирования. Borgbackup нуждается в borg-сервере на удалённой стороне и не имеет встроенного веб-интерфейса. Plakar решает всё это нативно: plakar sync реплицирует между хранилищами, plakar scheduler запускает бэкапы по интервалам, а plakar ui запускает браузерный интерфейс для просмотра снапшотов.
И restic, и plakar поддерживают бэкапы через stdin для передачи дампов баз данных. Borgbackup — нет. Все три делают дедупликацию. Plakar включает шифрование по умолчанию при создании репозитория, тогда как restic и borgbackup позволяют создавать незашифрованные репозитории.
Это руководство охватывает локальные бэкапы на одном VPS. Для offsite-репликации на удалённый сервер смотри Удаленное резервное копирование и репликация с Plakar.
Что нужно перед началом?
Тебе нужен VPS с Debian 12 или Ubuntu 24.04 с root-доступом или sudo. VPS от Virtua Cloud отлично подходит для этого. Также нужен SSH-доступ с аутентификацией по ключу и минимум 10 ГБ свободного места на диске для хранилища бэкапов.
Если планируешь бэкапить базы данных, сначала установи MySQL или PostgreSQL. Их установка здесь не рассматривается.
Все команды в этом руководстве выполняются от root. Если используешь пользователя с sudo, добавляй sudo перед каждой командой.
Как установить plakar на Debian 12 или Ubuntu 24.04?
Добавь официальный apt-репозиторий plakar, импортируй GPG-ключ подписи и установи пакет. Те же шаги работают и на Debian 12, и на Ubuntu 24.04. Apt-пакет автоматически обновляется через стандартный цикл обновления системы.
Установи зависимости:
apt update
apt install -y curl gnupg2
Импортируй GPG-ключ и добавь репозиторий:
curl -fsSL https://plakar.io/dist/keys/community-v1.1.0.gpg | gpg --dearmor -o /usr/share/keyrings/plakar.gpg
echo "deb [signed-by=/usr/share/keyrings/plakar.gpg] https://plakar.io/dist/repos/deb/ stable main" | tee /etc/apt/sources.list.d/plakar.list
GPG-ключ привязан к репозиторию через signed-by. Apt доверяет только пакетам, подписанным этим конкретным ключом. Это предотвращает внедрение пакетов из скомпрометированного стороннего репозитория.
Установи plakar:
apt update
apt install -y plakar
Проверь установку:
plakar version
plakar/v1.0.6
Как создать зашифрованное хранилище Kloset?
Хранилище Kloset — это бэкенд хранения plakar. Оно содержит все снапшоты в дедуплицированном, зашифрованном виде. Каждый блок данных шифруется перед записью на диск. Движок Kloset дедуплицирует до шифрования, поэтому идентичные блоки из разных снапшотов хранятся только один раз, при этом оставаясь полностью зашифрованными на диске.
Создай хранилище в /var/backups/plakar:
mkdir -p /var/backups/plakar
plakar at /var/backups/plakar create
Plakar запросит парольную фразу:
repository passphrase:
Сгенерируй надёжную парольную фразу:
openssl rand -base64 32
Сохрани эту парольную фразу в менеджере паролей или в отдельном безопасном месте. Если потеряешь её — потеряешь доступ ко всем снапшотам в хранилище. Механизма восстановления нет.
Установи права на директорию хранилища, чтобы только root имел доступ:
chmod 700 /var/backups/plakar
ls -la /var/backups/
drwx------ 5 root root 4096 Mar 20 10:00 plakar
По умолчанию хранилище создаётся в ~/.plakar, если не указать at <path>. На сервере используй отдельный путь вроде /var/backups/plakar, чтобы не зависеть от домашней директории пользователя.
Как бэкапить пути файловой системы с plakar?
Делай бэкапы директорий, которые важны на VPS: /etc для конфигурации системы, /home для данных пользователей и /var/www для веб-контента. Каждая команда plakar backup принимает один путь. Делай один бэкап на директорию или группируй их под общим родителем. Неизменённые файлы между снапшотами хранятся только один раз благодаря дедупликации.
plakar at /var/backups/plakar backup /etc
Каждый бэкап создаёт снапшот, идентифицируемый коротким hex-ID. Вывод показывает каждый обработанный файл и сводку:
a5bcf13b: OK ✓ /etc/hostname
a5bcf13b: OK ✓ /etc/ssh/sshd_config
...
info: backup: created unsigned snapshot a5bcf13b of size 1.4 MiB in 210ms (wrote 1.7 MiB)
Второй бэкап того же пути проходит быстрее, потому что сохраняются только изменённые блоки. Бэкапь дополнительные пути так же:
plakar at /var/backups/plakar backup /home
plakar at /var/backups/plakar backup /var/www
Тегирование снапшотов
Используй флаг -tag для маркировки снапшотов. Это помогает, когда у тебя много снапшотов и нужно их фильтровать:
plakar at /var/backups/plakar backup -tag "daily,filesystem" /etc
Исключение файлов
Лог-файлы, кеши и артефакты сборки занимают место в бэкапах впустую. Используй -ignore для inline-паттернов:
plakar at /var/backups/plakar backup -ignore "*.log" -ignore "cache/" /etc
Для длинного списка загружай паттерны из файла. Синтаксис следует правилам gitignore:
cat > /etc/plakar-excludes <<EOF
*.log
*.tmp
*.swp
cache/
.cache/
node_modules/
__pycache__/
.git/
EOF
chmod 600 /etc/plakar-excludes
plakar at /var/backups/plakar backup -ignore-file /etc/plakar-excludes /etc
Режим сканирования
Посмотри, что plakar будет бэкапить, не записывая ничего в хранилище:
plakar at /var/backups/plakar backup -scan /etc
Выводит каждый файл, соответствующий критериям бэкапа. Полезно при настройке паттернов исключения.
Проверка при бэкапе
Добавь -check, чтобы сразу после завершения бэкапа запустить проверку целостности:
plakar at /var/backups/plakar backup -check /etc
Это стоит нескольких дополнительных секунд, но позволяет обнаружить повреждения на ранней стадии.
Как бэкапить базу данных MySQL с plakar?
Направь вывод mysqldump напрямую в plakar через источник stdin:. Никакой промежуточный файл дампа не касается диска. SQL-поток идёт прямо из mysqldump в пайплайн шифрования и дедупликации plakar.
Для одной базы данных:
mysqldump --single-transaction \
--routines \
--triggers \
--events \
myapp_db | plakar at /var/backups/plakar backup stdin:myapp_db.sql
Что делает каждый флаг:
--single-transaction: создаёт консистентный снапшот InnoDB-таблиц без их блокировки. Остальные запросы продолжают работать.--routines: включает хранимые процедуры и функции.--triggers: включает триггеры таблиц.--events: включает запланированные события.
Для всех баз данных на сервере:
mysqldump --all-databases \
--single-transaction \
--routines \
--triggers \
--events \
--set-gtid-purged=OFF | plakar at /var/backups/plakar backup stdin:all_databases.sql
--set-gtid-purged=OFF убирает метаданные GTID. Это делает дамп переносимым между различными экземплярами MySQL без конфликтов GTID при импорте.
Снапшот хранит SQL-дамп как один файл, названный по метке stdin:. На это имя ссылаешься при восстановлении.
Как бэкапить базу данных PostgreSQL с plakar?
Подход тот же: направь pg_dump в plakar через stdin:. Аутентификация PostgreSQL обычно использует peer-аутентификацию для системного пользователя postgres, поэтому запускай команду дампа под этой учётной записью.
Для одной базы данных:
su - postgres -c "pg_dump --format=plain myapp_db" | plakar at /var/backups/plakar backup stdin:myapp_db.sql
Для всех баз данных и ролей используй pg_dumpall:
su - postgres -c "pg_dumpall" | plakar at /var/backups/plakar backup stdin:all_pg_databases.sql
pg_dumpall включает глобальные объекты вроде ролей и табличных пространств, которые pg_dump пропускает. Используй его, когда нужен полный бэкап кластера. pg_dump --format=plain создаёт обычный SQL-файл, который можно направить прямо в psql при восстановлении.
Как просматривать снапшоты plakar?
Выведи все снапшоты в хранилище командой plakar ls. Каждая строка показывает временную метку, ID снапшота, сжатый размер, время бэкапа и исходный путь.
plakar at /var/backups/plakar ls
2026-03-20T10:05:12Z a5bcf13b 1.4 MiB 0s /etc
2026-03-20T10:06:01Z 5fc17459 0 B 0s /home
2026-03-20T10:06:15Z 7ed22fb8 24 B 0s /var/www
2026-03-20T10:10:45Z ec916c75 2.0 KiB 0s /
2026-03-20T10:12:03Z 08ee9b7e 1.2 MiB 0s /
Бэкапы через stdin отображаются с / как исходным путём. ID снапшота используется для их различения.
Фильтрация по тегу:
plakar at /var/backups/plakar ls -tag daily
Просмотр содержимого конкретного снапшота файловой системы:
plakar at /var/backups/plakar ls a5bcf13b
Ограничение до поддиректории:
plakar at /var/backups/plakar ls a5bcf13b:/etc/ssh/
Веб-интерфейс
Для визуального интерфейса запусти встроенный веб-интерфейс. На сервере без десктопа добавь -no-spawn, чтобы не пытался открыть браузер:
plakar at /var/backups/plakar ui -no-spawn -addr localhost:8080
Интерфейс позволяет просматривать снапшоты, смотреть содержимое файлов и скачивать отдельные файлы. Plakar автоматически генерирует токен аутентификации и выводит URL с приложенным токеном.
Чтобы отключить аутентификацию по токену (не рекомендуется для продакшена):
plakar at /var/backups/plakar ui -no-spawn -no-auth -addr localhost:8080
Останови его через Ctrl+C. Для постоянного доступа поставь перед ним обратный прокси с TLS и оставь аутентификацию по токену включённой.
Как проверить целостность бэкапов с plakar?
Запусти plakar check для ID снапшота, чтобы проверить каждый блок. Plakar считывает каждый блок из хранилища, расшифровывает его и пересчитывает контрольные суммы. Если какой-либо блок повреждён или подделан, проверка завершится ошибкой.
plakar at /var/backups/plakar check a5bcf13b
info: a5bcf13b: ✓ /etc/hostname
info: a5bcf13b: ✓ /etc/ssh/sshd_config
info: a5bcf13b: ✓ /etc/apt/sources.list.d/plakar.list
...
info: check: verification of a5bcf13b:/etc completed successfully
Каждый файл получает галочку, если контрольная сумма совпадает. Повреждённые файлы показывают маркер ошибки.
Чтобы проверить все снапшоты в хранилище за раз:
plakar at /var/backups/plakar check
Для более быстрой структурной проверки без верификации дайджестов отдельных блоков:
plakar at /var/backups/plakar check -fast a5bcf13b
Запускай проверки целостности регулярно. Раз в неделю — разумная частота для большинства VPS-нагрузок. Бэкап, который ты никогда не проверяешь, — это бэкап, которому нельзя доверять.
Как восстановить файлы из бэкапа plakar?
Восстанови весь снапшот в целевую директорию командой plakar restore. Plakar воссоздаёт полное дерево директорий под целевым путём. Исходные права доступа и временные метки сохраняются.
mkdir -p /tmp/restore
plakar at /var/backups/plakar restore -to /tmp/restore a5bcf13b
info: restore: restoration of a5bcf13b:/etc at /tmp/restore completed successfully
Для восстановления одного файла используй plakar cat и перенаправь вывод:
plakar at /var/backups/plakar cat a5bcf13b:/etc/hostname > /tmp/hostname.restored
Для восстановления только одной директории из снапшота:
plakar at /var/backups/plakar restore -to /tmp/restore 7ed22fb8:/var/www
Это извлечёт только /var/www и его содержимое. Всё остальное в снапшоте останется нетронутым.
Всегда восстанавливай сначала во временную директорию. Сравни восстановленные файлы с текущим состоянием сервера, прежде чем перезаписывать что-то на месте. Неосторожное восстановление в / может перезаписать конфигурационные файлы, изменившиеся с момента создания снапшота.
Как восстановить дамп базы данных из plakar?
Используй plakar cat, чтобы передать SQL-дамп из снапшота напрямую в клиент базы данных. Никаких промежуточных файлов на диске. Используй ID снапшота stdin-бэкапа, который хочешь восстановить.
MySQL
Восстановить одну базу данных:
plakar at /var/backups/plakar cat ec916c75:myapp_db.sql | mysql myapp_db
Восстановить все базы данных из полного дампа:
plakar at /var/backups/plakar cat 08ee9b7e:all_databases.sql | mysql
PostgreSQL
Восстановить одну базу данных:
plakar at /var/backups/plakar cat f86ce26a:myapp_db.sql | su - postgres -c "psql myapp_db"
Восстановить весь кластер:
plakar at /var/backups/plakar cat c09e650e:all_pg_databases.sql | su - postgres -c "psql"
Тестируй восстановление на непродакшен базе или на свежем тестовом сервере. Стратегия бэкапов без протестированного восстановления — это не стратегия бэкапов. Планируй тест восстановления минимум раз в квартал.
Как автоматизировать бэкапы с планировщиком plakar?
У plakar есть встроенный планировщик, который запускает задачи бэкапа через заданные интервалы. Cron не нужен. Ты определяешь задачи в YAML-файле, а plakar занимается таймингом, выполнением и опциональными проверками целостности после бэкапа.
Сначала зарегистрируй хранилище с сохранёнными учётными данными, чтобы планировщик мог обращаться к нему без интерактивных запросов парольной фразы. Создай файл с парольной фразой с ограниченными правами:
mkdir -p /etc/plakar
openssl rand -base64 32 > /etc/plakar/passphrase
chmod 600 /etc/plakar/passphrase
chown root:root /etc/plakar/passphrase
ls -la /etc/plakar/passphrase
-rw------- 1 root root 45 Mar 20 10:20 /etc/plakar/passphrase
Используй эту парольную фразу при создании хранилища (или обнови хранилище, если уже создал его с другой парольной фразой). Зарегистрируй хранилище по имени:
plakar store add mybackups \
location=/var/backups/plakar \
passphrase_cmd="cat /etc/plakar/passphrase"
Теперь создай конфигурацию планировщика. Каждая задача бэкапит один путь:
mkdir -p /etc/plakar
cat > /etc/plakar/scheduler.yaml <<'EOF'
agent:
tasks:
- name: backup etc
repository: "@mybackups"
backup:
path: /etc
interval: 24h
check: true
- name: backup home
repository: "@mybackups"
backup:
path: /home
interval: 24h
- name: backup www
repository: "@mybackups"
backup:
path: /var/www
interval: 24h
EOF
chmod 600 /etc/plakar/scheduler.yaml
Сначала протестируй вручную:
plakar scheduler start -tasks /etc/plakar/scheduler.yaml
Планировщик работает на переднем плане и логирует выполнение задач. Останови его через Ctrl+C. Для работы в фоновом режиме используй systemd-сервис, описанный ниже.
Планировщик обрабатывает бэкапы файловой системы нативно. Дампы баз данных, которые нужно пропускать через mysqldump или pg_dump, требуют скрипт-обёртку. Создай его:
cat > /etc/plakar/backup-databases.sh <<'EOF'
#!/bin/bash
set -euo pipefail
# MySQL
if command -v mysqldump &>/dev/null; then
mysqldump --all-databases \
--single-transaction \
--routines \
--triggers \
--events \
--set-gtid-purged=OFF | plakar at @mybackups backup -tag "daily,mysql" stdin:all_databases.sql
fi
# PostgreSQL
if command -v pg_dump &>/dev/null; then
su - postgres -c "pg_dumpall" | plakar at @mybackups backup -tag "daily,postgresql" stdin:all_pg_databases.sql
fi
EOF
chmod 700 /etc/plakar/backup-databases.sh
Как запустить планировщик plakar как systemd-сервис?
Оберни планировщик в systemd-юнит, чтобы он запускался при загрузке, перезапускался при сбоях и интегрировался с journalctl для логирования.
cat > /etc/systemd/system/plakar-scheduler.service <<EOF
[Unit]
Description=Plakar Backup Scheduler
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/plakar scheduler start -tasks /etc/plakar/scheduler.yaml
ExecStop=/usr/bin/plakar scheduler stop
Restart=on-failure
RestartSec=30
User=root
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
Если ты также запускаешь скрипт бэкапа баз данных, создай для него отдельный таймер:
cat > /etc/systemd/system/plakar-db-backup.service <<EOF
[Unit]
Description=Plakar Database Backup
After=network.target mysql.service postgresql.service
[Service]
Type=oneshot
ExecStart=/etc/plakar/backup-databases.sh
User=root
EOF
cat > /etc/systemd/system/plakar-db-backup.timer <<EOF
[Unit]
Description=Run Plakar Database Backup Daily
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
EOF
Включи и запусти всё. enable --now обеспечивает запуск при загрузке и стартует сервис немедленно:
systemctl daemon-reload
systemctl enable --now plakar-scheduler.service
systemctl status plakar-scheduler.service
● plakar-scheduler.service - Plakar Backup Scheduler
Loaded: loaded (/etc/systemd/system/plakar-scheduler.service; enabled; preset: enabled)
Active: active (running)
Для таймера бэкапа баз данных:
systemctl enable --now plakar-db-backup.timer
systemctl list-timers plakar-db-backup.timer
NEXT LEFT LAST PASSED UNIT ACTIVATES
Fri 2026-03-21 02:00:00 UTC 15h left n/a n/a plakar-db-backup.timer plakar-db-backup.service
Мониторинг логов планировщика:
journalctl -u plakar-scheduler.service -f
Как удалить старые снапшоты?
Удали снапшот по его ID. По умолчанию plakar rm выполняет пробный запуск и показывает, что будет удалено. Добавь -apply, чтобы действительно удалить снапшот:
plakar at /var/backups/plakar rm a5bcf13b
rm: would remove these 1 snapshot(s), run with -apply to proceed
2026-03-20T10:05:12Z a5bcf13b 1.4 MiB 0s /etc
plakar at /var/backups/plakar rm -apply a5bcf13b
info: rm: removal of a5bcf13b completed successfully
Дедупликация plakar означает, что удаление снапшота освобождает место только для блоков данных, на которые не ссылается ни один оставшийся снапшот. Если два снапшота делят 90% данных, удаление одного освобождает только уникальные 10%.
Что-то пошло не так?
«repository passphrase» при каждой команде. Plakar требует парольную фразу при каждом интерактивном обращении к хранилищу. Зарегистрируй хранилище через plakar store add с passphrase_cmd, как показано в разделе планировщика. Потом ссылайся на хранилище по имени:
plakar at @mybackups backup /etc
Также можно использовать флаг -keyfile, чтобы указать на файл с парольной фразой для разовых команд:
plakar -keyfile /etc/plakar/passphrase at /var/backups/plakar backup /etc
Никогда не экспортируй PLAKAR_PASSPHRASE в профиле оболочки или .bashrc. Это попадёт в историю команд и списки процессов. Используй паттерн passphrase_cmd или флаг -keyfile.
«permission denied» при бэкапе. Plakar нужен доступ на чтение исходных файлов. Запуск от root решает эту проблему. Если используешь выделенного пользователя для бэкапов, дай права на чтение целевых директорий через ACL или членство в группе.
Снапшоты больше ожидаемого. Скорее всего, ты бэкапишь лог-файлы, кеши или артефакты сборки. Используй -ignore или -ignore-file для их исключения. Сначала запусти -scan, чтобы увидеть, что включается.
«no space left on device» во время бэкапа. Хранилище бэкапов и временные pack-файлы требуют дискового пространства. Проверь через df -h. Хранилище растёт со временем по мере добавления снапшотов. Следи за ним.
Чтение логов plakar. Plakar пишет вывод в stdout. Перенаправь stdout и stderr в файл:
plakar at /var/backups/plakar backup /etc > /var/log/plakar-backup.log 2>&1
Для подробного вывода используй глобальный флаг -trace (перед at):
plakar -trace all at /var/backups/plakar backup /etc > /var/log/plakar-debug.log 2>&1
Дальнейшие шаги
Твои бэкапы теперь работают по расписанию, но находятся на том же диске, что и данные, которые они защищают. Отказ диска, шифровальщик или скомпрометированный сервер уничтожит и то, и другое одновременно.
Перенеси бэкапы offsite. Удаленное резервное копирование и репликация с Plakar описывает репликацию снапшотов на удалённый сервер или S3-совместимое хранилище с помощью plakar sync.
Авторское право 2026 Virtua.Cloud. Все права защищены. Данный контент является оригинальным произведением команды Virtua.Cloud. Воспроизведение, повторная публикация или распространение без письменного разрешения запрещены.
Готовы попробовать?
Разверните свой сервер за секунды. Linux, Windows или FreeBSD.
Смотреть тарифы VPS