Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение

Система резервного копирования Kopia : Операционные системы и программное обеспечение

10.11.2026 19:38


█ 09.11.2026 13:11
Я достаточно долгое время использовал (и использую) программку borg backup https://olegon.ru/showthread.php?t=28689
Вещь замечательная, но не без минусов, особенно, с отсутствием параллелизма и, что стало причиной для поиска альтернатив - очень плохо работает со снапшотами. "Плохо" в данном случае обозначало, что при отсутствии изменений файлов после переключения снапшотов, borg backup полностью перечитывает все файлы снапшота, чтобы убедиться, что они не поменялись. В некоторых случаях это плюс, но не в моем.

Нашел программку kopia

Она кроссплатформенная и сочетает в себе консольный вариант с возможностью настроек через GUI. В общем, очень интересный вариант, как минимум. В моем случае еще и отлично хешировала данные снапшотов, пролетая повторный запуск по целому серверу минут за 15. Я GUI не использую, так что это сами как-нибудь, можете видео на сайте автора посмотреть.

Суть, как и в случае borg backup, инициализация репозитория, после чего - напихивание в него бекапов. Можно монтировать бекап, но, как я понял, только один из ID, то есть, нельзя, как в borg, сразу несколько бекапов просмотреть по быстрому, только один подключил, посмотрел, отключил.

Многопоточность поддерживается. Дедубликация есть.

Из минусов, кроме выше упомянутого монтирования, для меня еще обнаружилось, что кусок архива может быть максимум 120Мб, то есть, во-первых, при передаче надо передать просто гору файликов, то есть тормоза на "открыл/закрыл", а во-вторых, управлять этим счастьем достаточно неудобно. Хотя, допускаю, что изменения гораздо проще и эффективнее упаковывать в эти маленькие кусочки.

В целом, пока использую. Посмотрим.
█ 10.11.2026 10:25
Забыл для затравки базовый скриптик на бекап оставить.
Обращаю еще внимание, что настройки задаются свойством репозитория и, например, исключающие расширения с каждым добавлением будут дублироваться и множиться. Чтобы это не происходило, я сначала сбрасываю настройку (clear), потом выставляю ее набело. Это дает некоторую централизованность управления настройками.

Код:
export KOPIA_LOG_DIR=/mnt/помойка
export KOPIA_CHECK_FOR_UPDATES=false
export KOPIA_FILE_LOG_LEVEL=info
export KOPIA_PASSWORD='ПаролищеСцифрами'
export REPO_PATH='/mnt/backup'
export LOG_FILE="${REPO_PATH}/../kopia.log"
exec > >(tee "$LOG_FILE") 2>&1
date
kopia repository create filesystem --path "$REPO_PATH" --password="$KOPIA_PASSWORD" --block-hash=BL
AKE3-256 --encryption=AES256-GCM-HMAC-SHA256
kopia repository connect filesystem --path "$REPO_PATH" --password="$KOPIA_PASSWORD"

kopia cache set --content-cache-size-mb=20000 --cache-directory=/mnt/e/cache
kopia policy set --global --metadata-compression=zstd-better-compression
kopia policy set --global --compression zstd-better-compression
kopia policy set --global --max-parallel-file-reads 4
kopia policy set --global --keep-daily 3 --keep-weekly 2 --keep-monthly 2 --keep-annual 0
kopia policy set --global --keep-hourly=3 --keep-latest=3
kopia policy set --global --ignore-identical-snapshots=true
kopia policy set --global --scan-one-filesystem=true
kopia policy set /mnt/backup --clear-ignore
kopia policy set /mnt/backup --add-ignore='/unsorted'
kopia policy set /mnt/snap/b/box_root_latest/ --clear-ignore
kopia policy set /mnt/snap/b/box_root_latest/ --add-ignore='/opt/Data/fdb'
kopia repository set-parameters --max-pack-size-mb=120
kopia policy set --global --clear-never-compress
kopia policy set --global \
  --add-never-compress=.zip,.gz,.7z,.rar,.bz2,.xz,.mp3,.aac,.flac,.mp4,.mkv,.avi,.zst,.br,.png,.jpg
,.jpeg,.gif,.svg,.mov

kopia repository disconnect
kopia repository connect filesystem --path "$REPO_PATH" --password="$KOPIA_PASSWORD"
kopia policy show --global
kopia snapshot create --auto-maintenance /mnt/d/snaps/b/tanya_home_latest/
date
kopia snapshot create --auto-maintenance /mnt/d/snaps/b/tanya_root_latest/
date
kopia snapshot expire
date
kopia maintenance run --full
date
kopia repository status
kopia content stats
kopia repository disconnect
date
скрипт получился достаточно большим, хотя, на самом деле достаточно проинициализировать директорию и сделать snapshot create. Но, чтобы не убирать примеры для того, что вам понадобиться, лишнее выкидывать не стал.
В 4 потока сжатие, хорошая степень компрессии, исключил архивы и картинки, максимальный кусок в 120Мб (если поменяете, придется перепаковывать весь архив, что по времени больше, чем просто пересоздать). Если снапшот не меняется, то он игнорируется.
Часовой пояс GMT +3, время: 19:38.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.