Synchronization and backup programs (Русский)
Эта статья содержит список и сравнение программ для синхронизации данных между двумя и более местоположениями, а также программ с расширенными возможностями, например, инкрементным резервным копированием. Данные темы достаточно схожи между собой и, соответственно, описываются в одной статье.
Введение в резервное копирование
Создание резервных копий является необходимой мерой, поскольку ошибки, совершаемые людьми и машинами, могут приводить к повреждению данных; физические носители также разрушаются со временем и однажды перестают работать. Чтобы выбрать лучшую программу для своих нужд, нужно учесть следующие моменты:
- тип носителя данных, используемый для резервных копий: CD, DVD, удалённый сервер, внешний жёсткий диск и т.д.;
- планируемая частота создания резервных копий: ежедневно, еженедельно, ежемесячно и т.д.;
- возможности, ожидаемые от инструмента: сжатие, шифрование, обработка переименований и т.д.;
- планируемый метод восстановления резервных копий при необходимости.
Синхронизация данных
Эти приложения просто «зеркалируют» содержимое каталогов по нескольким местам. Тем не менее большинство из них позволяют сохранять и возвращать старые версии изменённых или удалённых файлов.
См. также:
- List of applications/Utilities#File synchronization
- List of applications/Internet#Cloud synchronization clients
- Wikipedia:Comparison of file synchronization software
Легенда
- Название
- Название приложения, со ссылкой на ArchWiki или официальный сайт.
- Пакет
- Ссылка на пакет.
- Реализация
- Язык программирования, библиотеки или утилиты, на базе которых создано приложение.
- Delta transfer
- Передача только изменённых частей файла.
- Зашифрованная передача
- Передача данных зашифрованном виде по умолчанию при использовании сети.
- Метаданные ФС
- Сохранение прав доступа и атрибутов файловой системы.
- Возобновляемая
- Возможность возобновления синхронизации в случае её прерывания.
- Переименования
- Перемещённые/переименованные файлы определяются и не хранятся или не передаются дважды. Обычно это означает подсчёт хеш-сумм файлов или их частей. Приложения без поддержки этого можно комбинировать с hsyncAUR, который синхронизирует только переименования.
- Контроль версий
- Сохранение старых версий файла (reverse incremental backup).
- Передача изменений
- В каких направлениях могут передаваться изменения.
- односторонняя синхронизация между двумя местами;
- двухсторонняя синхронизация между двумя местами;
- многосторонняя — полная синхронизация между более чем двумя местами.
- Решение конфликтов
- Обработка конфликтов файлов, автоматически или интерактивно, то есть приложение не отклоняет конфликтующие файлы молча. Неприменимо для приложений с односторонней синхронизацией.
- Мониторинг ФС
- Обработка приложением событий файловой системы для запуска синхронизации.
- CLI
- Наличие у приложения интерфейса командной строки.
- Другие интерфейсы
- Наличие указанных пользовательских интерфейсов, например GUI, TUI или web.
- Лицензия
- Лицензия серверного и клиентского приложения.
- Другие платформы
- Поддержка других операционных систем помимо Linux.
- Поддержка
- Поддерживается ли сейчас проект разработчиками.
- Особенности
- Заметки об особых функциях, которые выделяют приложение среди других.
Таблица
Название | Пакет | Реализация | Delta transfer | Зашифрованная передача | Метаданные ФС | Возобновляемая | Переименования | Контроль версий | Передача изменений | Решение конфликтов | Мониторинг ФС | CLI | Другие интерфейсы | Лицензия | Другие платформы | Поддержка | Особенности |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FreeFileSync | freefilesyncAUR | C++ | ? | SFTP [1] | ? | ? | Да [2] | Да [3] | односторонняя / многосторонняя | Да | ? | Нет | Да | GPL | Windows, macOS | Да | |
git-annex | git-annex | Haskell, git | rsync [4] | rsync и другие [5] | Нет, но используются собственные, не относящиеся к ФС, метаданные [6] | Да [7] | Да, хранилище с адресацией по содержимому (content-addressable) | Да | многосторонняя; с удалёнными репозиториями [8] | переименование конфликтующих файлов [9] | Опционально, git-annex assistant | Да | git-annex assistant | GPLv3 | macOS, Android (beta), Windows (beta) | Да | Управление файлами с помощью git |
osync.sh | osyncAUR | Bash, основано на rsync | rsync | rsync | ? | Да | Нет | Да | двухсторонняя | сохраняет несколько версий файла [10] | опционально [11] | Да | Нет | BSD | Да | ||
rclone | rclone | Go | Нет [12] | ? | ? | ? | ? | ? | односторонняя [13] | ? | ? | Да | RcloneBrowser | MIT | *BSD, Plan9, Solaris, Windows, macOS | Да | Оптимизировано для работы с облачными хранилищами, поведение варьируется в зависимости от возможностей удалённого хранилища. |
rdiff-backup | rdiff-backup | Python, librsync | rsync | rsync | Да | ? | Нет | Да | односторонняя | Нет | Да | Нет | GPL | Win32 | ? | ||
Resilio Sync | rslsyncAUR | C++ | Да | Да | ? | Да | ? | Да | многосторонняя | ? | ? | Нет | Web | Проприетарная, freemium | FreeBSD, Windows, macOS, Android, iOS, Windows Phone, Amazon Kindle Fire | Да | P2P-синхронизация |
rsync | rsync | C | Да | SSH или собственный протокол | Да | Да | Нет |
|
односторонняя | Нет | Да | Rsync (Русский)#Графические интерфейсы | GPLv3 | Win32 | Да | Стандартный инструмент, доступный во всех дистрибутивах Linux. | |
SparkleShare | sparkleshare | C#, git | Да | AES-256 [15] | ? | ? | Да | Да | ? | ? | ? | Нет | Да | GPLv3 | Windows, macOS | Да | Может синхронизировать с любым Git-сервером через SSH. |
Syncany | syncanyAUR | Java | ? | ? | ? | ? | ? | ? | ? | ? | ? | Да | Да | GPLv3 | Нет [16] | ||
Syncthing | syncthing | Go | Да [17] | Да [18] | частично [19] | Да | ? | Да [20], старые версии перемещаются в архивный каталог | многосторонняя | переименовывает один файл [21] | Да | Да | Web, GTK | MPL v2 | BSD, Windows, macOS, Android, Kindle Paperwhite | Да | P2P-синхронизация |
Synkron | synkronAUR | C++ | ? | ? | ? | ? | ? | ? | многосторонняя | ? | ? | Нет | Qt | GPLv2 | Windows, macOS | No | |
taskd | taskd | C++, Python | Да | Да | ? | Да | ? | ? | многосторонняя | ? | Нет | Да | Нет | MIT | Android | Да | |
Unison | unison | OCaml | Да | Да | частично [22] | опционально [23] | Нет | Yes (Русский) [24] | двухсторонняя | Интерактивное | Нет | Да | GTK2 | GPL | FreeBSD, Windows, macOS, Android | Да [25] | |
Zaloha.sh | bash | Нет | Нет | Опционально | Нет | Нет | Нет | двухсторонняя | Интерактивное | Нет | Да | Нет | MIT | Windows под Cygwin | Да [26] | Небольшая и простая утилита |
Инкрементное резервное копирование
Приложения, которые могут создавать инкрементные резервные копии, запоминают и учитывают, какие данные были скопированы во время последнего запуска (так называемые «различия») и устраняют необходимость хранить дубликаты неизменённых данных. Восстановление данных к определённому моменту времени потребует размещения последней полной резервной копии и всех инкрементных резервных копий с того момента, когда предполагается, что они будут восстановлены. Этот вид резервных копий полезен для тех, кто делает их очень часто.
См. также:
- List of applications#File synchronization and backup
- Wikipedia:List of backup software
- Wikipedia:Comparison of backup software
- Wikipedia:Comparison of online backup services
Легенда:
- Название: название приложения со ссылкой на ArchWiki или официальный сайт.
- Пакет: ссылка на пакет.
- Реализация: язык программирования, библиотеки или утилиты, на базе которых создано приложение.
- Сжатое хранилище: использование сжатия для хранилища резервных копий.
- Зашифрованное хранилище: использование шифрования для хранилища резервных копий.
- Delta transfer: передача только изменённых частей файла.
- Зашифрованная передача: передача данных зашифрованном виде по умолчанию при использовании сети.
- Метаданные ФС: сохранение прав доступа и атрибутов файловой системы.
- Лёгкий доступ: резервные копии хранятся на файловой системе или могут быть примонтированы для удобной работы с ними.
- Возобновляемая: возможность возобновления синхронизации в случае её прерывания.
- Многопоточная: резервное копирование может производиться, используя несколько потоков.
- Переименования: перемещённые/переименованные файлы определяются и не хранятся или не передаются дважды. Обычно это означает подсчёт контрольных сумм файлов или их частей.
- CLI: наличие у приложения интерфейса командной строки, что означает возможность использования в скриптах.
- Другие интерфейсы: наличие указанных пользовательских интерфейсов, например, GUI, TUI или web.
- Лицензия: лицензия серверного и клиентского приложения.
- Другие платформы: поддержка других операционных систем помимо Linux.
- Поддержка: поддерживается ли сейчас проект разработчиками.
- Особенности: заметки об особых функциях, которые выделяют приложение среди других.
Одно устройство
Эти приложения ориентированы на резервное копирование данных того устройства, на котором они установлены, хотя целевое место хранения копий может быть расположено на внешнем хранилище или другой системе.
Инкременты на основе блоков данных
При изменении файла приложении сохраняют только изменившиеся части в следующем снимке. В отличие от инкрементов на основе файлов, они более экономно расходуют место, особенно когда есть большие файлы с малыми изменениями; с другой стороны, такие резервные копии могут быть прочитаны только тем приложением, которое их создало, так как исходные файлы должны быть реконструированы по сохранённым в копии различиям между версиями.
Название | Пакет | Реализация | Сжатое хранилище | Зашифрованное хранилище | Delta transfer | Зашифрованная передача | Метаданные ФС | Лёгкий доступ | Возобновляемая | Многопоточная | Переименования | CLI | Другие интерфейсы | Лицензия | Другие платформы | Поддержка | Особенности |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Areca Backup | arecaAUR | Java | Zip, Zip64 | AES128, AES256 | Да | Да | Да | Нет | Только приостановка | Нет [27] | Нет | Да | Да | GPLv2 | Windows | Да | |
BorgBackup | borg | Python, C (Cython) | lz4, zlib, lzma, zstd | AES256 | Да | SSH | Да [28] | Да [29] | Да [30] | Нет [31] | Да | Да | third party | BSD | *BSD, macOS, Windows (Cygwin / WSL)[32] | Да | Дедубликация на основе переменной длинны блоков данных; поддерживает как локальные, так и удалённые хранилища резервных копий (с помощью SSH). |
bup | bup bup-gitAUR | C, Python, git | Да | Нет | Да | Да | Недостаточно проработанная поддержка | Да [33] | Продолжение с того места, где вы остановились [34] | Нет | Да | Да | bupsAUR | GPLv2 | NetBSD, Windows, macOS | Да | Формат хранения данных, аналогичный git. |
Duplicacy | duplicacyAUR duplicacy-cli-bin-gitAUR duplicacy-gitAUR | Go | Да | Да | Да | Да | Да | Да [35] | Да [36] | Да [37] | Да [38] | Да | duplicacy-webAUR | Собственная | FreeBSD, macOS, Windows | Да | |
Duplicati | duplicati-latestAUR | C# | Да | Да | Да | Да | Да | Нет | Только приостановка | Да [39] | Нет | Да | Да | LGPL | Windows, macOS | Да | |
Duplicity | duplicity | librsync | gzip | gpg | Да | Да | ? | Нет | Да | Нет | Нет | Да | Yes | GPL | Да | ||
Kup Backup System | kup | rsync, bup front-end | Да | Да | Да | Да | Недостаточно проработанная поддержка | Да | Нет | ? | Да | bup | Qt | GPLv2 | Да | ||
obnam | obnamAUR | Python | Да | GnuPG | Да | Да | ? | Да | Сохранение каждые 100MB | ? | ? | Да | Нет | GPLv3 | Нет | ||
restic | restic restic-gitAUR | Go | Нет [40] | AES-256 [41] | Да | Да | Да [42] | Да [43] | Да [44] | Да [45] | Да | Да | Нет [46] | BSD | OpenBSD, Windows, macOS | Да | Имеет встроенную или основанную на rclone поддержку различных облачных хранилищ. |
ZBackup | zbackupAUR | C++ | LZMA, LZO | AES | Да | Да | ? | Планируется [47] | Нет | ? | С помощью tar | Да | Нет | GPLv2 | Нет | Репозиторий состоит из неизменяемых файлов. |
Инкременты на основе файлов
Когда файл изменяется, эти приложения сохраняют новую его версию полностью в следующем снимке. В отличие от инкрементов на основе фрагментов, они менее экономно расходую место, особенно когда есть большие файлы с малыми изменениями; с другой стороны, зачастую такие резервные копии могут быть открыты без использования создавшего их приложения.
Легенда:
- Жёсткие ссылки: хранение неизменённых файлов в виде жёстких ссылок на предыдущие версии.
Название | Пакет | Реализация | Сжатое хранилище | Зашифрованное хранилище | Delta transfer | Зашифрованная передача | Метаданные ФС | Лёгкий доступ | Возобновляемая | Переименования | Жёсткие ссылки | CLI | Другие интерфейсы | Лицензия | Другие платформы | Поддержка | Особенности |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Back In Time | backintimeAUR | Python, rsync, diff | Нет | Нет | rsync | rsync | rsync | Да | Нет | Нет | Да [48][устаревшая ссылка 2020-08-06] | Да | Qt | GPLv2 | Да | ||
DAR (Disk ARchive) | darAUR | C++ | Специальный формат архивов | Да | Да | Да | ? | ? | ? | ? | Нет [49] | Да | darguiAUR | GPL | FreeBSD, NetBSD, Windows, macOS | Да | |
Link-Backup | link-backupAUR | Python 2 | Нет | Нет | ? | SSH | ? | ? | Да | Да | Нет [50] | Да | Нет | MIT | Нет | Утилита копирует себя на сервер. | |
rdup | rdupAUR | C | tar.gz | gpg, blowfish и другие | ? | ? | ? | Да | ? | Нет | Да | Да | Нет | GPLv3 | Да [51] | Набор утилит командной строки. | |
rsnapshot | rsnapshot | rsync | Нет | Нет | Да | Да | ? | ? | ? | ? | Да [52] | Да | Нет | GPLv2 | Win32 | Да [53] | |
sbackup | sbackupAUR | Python | gzip, bzip2 | Нет | ? | SSH | ? | Нет | Нет | Нет | Нет | Нет | GTK | GPLv3 | Нет | ||
TimeShift | timeshiftAUR | rsync | Нет | Нет | rsync | rsync | ? | ? | ? | ? | Да | Да | GTK | GPLv3 | Создано для резервного копирования систем на выбранные устройства. | Да [54] |
Сетевые решения
Эти приложения были разработаны для централизованного архивирования данных с нескольких машин, соединённых по сети, с использованием клиент-серверной модели. В целом они более сложны в развёртывании в сравнении с реализациями для одного устройства.
Легенда:
- Направление: Pull: сессия архивирования инициализируется сервером. Push: сессия архивирования инициализируется клиентом.
-
Тип инкремента: стратегия уменьшения дублирования данных для экономии места (помимо сжатия).
-
на основе файлов: при изменении файла в новом снимке сохраняется новая версия целиком.
- с жёсткими ссылками: хранение неизменённых файлов в виде жёстких ссылок на предыдущие версии.
- на основе блоков данных: при изменении файла в снимке хранятся только изменённые части.
-
на основе файлов: при изменении файла в новом снимке сохраняется новая версия целиком.
Название | Пакет | Реализация | Направление | Сжатое хранилище | Зашифрованное хранилище | Delta transfer | Зашифрованная передача | Метаданные ФС | Лёгкий доступ | Возобновляемая | Переименования | Тип инкремента | CLI | Другие интерфейсы | Лицензия | Другие платформы | Поддержка | Особенности |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
BackupPC | backuppc | Perl | Pull | Да | Нет | Да | Да | Да | Нет | Да | ? | На основе файлов, c жёсткими ссылками [55] | Нет | Web | GPLv2 | Любые (нет необходимости в клиенте) | Да | Идентичные файлы резервных копий одного или более клиентов хранятся только в одном экземпляре. |
Bacula | bacula* в AUR (Русский) | C++ | Pull | Да | Да | ? | Да | ? | ? | Да | ? | На основе файлов [56] | Да | GUI, Web | AGPLv3 | Windows, macOS | Да | |
Bareos | bareos* в AUR (Русский) | C++ (Bacula fork) | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | AGPLv3 | Да | ||
burp | burp-backupAUR | librsync | Push | Да | Да | Да | Да | Да | ? | Да | ? | На основе блоков данных [57] | Да | burp-ui | AGPLv3 | Windows, macOS | Да | |
SafeKeep | safekeepAUR | rdiff-backup | Pull | Нет | Нет | ? | Да | ? | ? | ? | ? | На основе блоков данных [58] | Да | Да | GPL | Нет | Утилита интегрируется с LVM и базами данных для создание постоянных резервных копий. Также поддерживается регулирование пропускной способности канала. | |
Synbak[устаревшая ссылка 2020-08-06] | synbak | Надстройка над несколькими утилитами | ? | Да | Нет | Да | Да | Да | ? | ? | ? | ? | Нет | Web | GPLv3 | Да | Совмещает несколько способов резервного копирования. | |
UrBackup | urbackup* в AUR (Русский) | C++ | Pull | Нет | Нет | Да | Только при сетевой передачи данных | Да | Да | Да | Да | На основе файлов, c жёсткими и символьными ссылками ссылки[59]/CoW-снимки на основе блоков данных[60] | Да (client) | GUI, Web | AGPLv3+ | Windows, macOS | Да | Идентичные файлы резервных копий одного или более клиентов хранятся только в одном экземпляре. Поддерживается интеграция с LVM, dattobd и btrfs для создания снимков ФС. |
Системы управления версиями
Хотя системы управления версиями чаще всего используются для исходного кода, они могут хранить любые файлы.
См. List of applications/Utilities#Version control systems и dotfiles.
Смотрите также
- Краткий обзор open source средств резервного копирования
- Backing up Linux and other Unix(-like) systems
- Exhaustive list of backup solutions for Linux
- Performance comparison of five remote incremental backup tools: Rsync, Rdiff-backup, Duplicity, Areca and Link-Backup[устаревшая ссылка 2021-05-17]
- Mirroring an Entire Site using Rsync over SSH
- Performance comparison of five remote incremental backup tools: Rsync, Rdiff-backup, Duplicity, Areca and Link-Backup[устаревшая ссылка 2021-05-17]
- rsync-snapshots.sh rsync-snapshot.sh — Local and remote snapshot backup using rsync with hard links