Synchronization and backup programs (Русский)
Эта статья содержит список и сравнение программ для синхронизации данных между двумя и более местоположениями, а также программ с расширенными возможностями, например, инкрементным резервным копированием. Данные темы достаточно схожи между собой и, соответственно, описываются в одной статье.
Contents
Введение в резервное копирование
Создание резервных копий является необходимой мерой, поскольку ошибки, совершаемые людьми и машинами, могут приводить к повреждению данных; физические носители также разрушаются со временем и однажды перестают работать. Чтобы выбрать лучшую программу для своих нужд, нужно учесть следующие моменты:
- тип носителя данных, используемый для бэкапов: 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] | ? | ? | ? | Да | многосторонняя; with git remotes [6] | переименование конфликтующих файлов [7] | ? | Да | git-annex assistant | GPLv3 | macOS, Android (beta), Windows (beta) | Да | Manage files with git |
osync.sh | osyncAUR | Bash, based on rsync | rsync | rsync | ? | Да | Нет | Да | двухсторонняя | сохраняет несколько версий файла [8] | опционально [9] | Да | Нет | BSD | Да | ||
rclone | rclone | Go | Нет [10] | ? | ? | ? | ? | ? | односторонняя [11] | ? | ? | Да | RcloneBrowser | MIT | *BSD, Plan9, Solaris, Windows, macOS | Да | Оптимизировано для работы с облачными хранилищами, поведение варьируется в зависимости от возможностей удалённого хранилища. |
rdiff-backup | rdiff-backup | Python 2, librsync | rsync | rsync | Да | ? | Нет | Да | односторонняя | Нет | Да | Нет | GPL | Win32 | ? | ||
Resilio Sync | rslsyncAUR | C++ | Да | Да | ? | Да | ? | Да | многосторонняя | ? | ? | Нет | Web | Proprietary freemium | FreeBSD, Windows, macOS, Android, iOS, Windows Phone, Amazon Kindle Fire | Да | P2P sync |
rsync | rsync | C | Да | SSH или свой протокол | Да | Да | Нет |
|
односторонняя | Нет | Да | Rsync#Front-ends | GPLv3 | Win32 | Да | Стандартный инструмент, доступный во всех дистрибутивах Linux. | |
SparkleShare | sparkleshare | C#, git | Да | AES-256 [13] | ? | ? | Да | Да | ? | ? | ? | Нет | Да | GPLv3 | Windows, macOS | Да | Может синхронизировать с любым Git-сервером через SSH. |
Syncany | syncanyAUR | Java | ? | ? | ? | ? | ? | ? | ? | ? | ? | Да | Да | GPLv3 | Нет [14] | ||
Syncthing | syncthing | Go | Да [15] | Да [16] | частично [17] | Да | ? | Да [18], старые версии перемещаются в архивный каталог | многосторонняя | переименовывает один файл [19] | Да | Да | Web, GTK | MPL v2 | BSD, Windows, macOS, Android, Kindle Paperwhite | Да | P2P sync |
Synkron | synkronAUR | C++ | ? | ? | ? | ? | ? | ? | многосторонняя | ? | ? | Нет | Qt | GPLv2 | Windows, macOS | No | |
taskd | taskd | C++, Python | Да | Да | ? | Да | ? | ? | многосторонняя | ? | Нет | Да | Нет | MIT | Android | Да | |
Unison | unison | OCaml | Да | Да | частично [20] | опционально [21] | Нет | Да [22] | двухсторонняя | interactive | Нет | Да | GTK2 | GPL | FreeBSD, Windows, macOS, Android | Да [23] |
Инкрементное резервное копирование
Приложения, которые могут создавать инкрементные резервные копии, запоминают и учитывают, какие данные были скопированы во время последнего запуска (так называемые «различия») и устраняют необходимость хранить дубликаты неизменённых данных. Восстановление данных к определённому моменту времени потребует размещения последней полной резервной копии и всех инкрементных резервных копий с того момента, когда предполагается, что они будут восстановлены. Этот вид бэкапов полезен для тех, кто делает их очень часто.
См. также:
- Список приложений/Безопасность#Резервное копирование
- Wikipedia:List of backup software
- Wikipedia:Comparison of backup software
- Wikipedia:Comparison of online backup services
Легенда:
- Название: название приложения, со ссылкой на ArchWiki или официальный сайт.
- Пакет: ссылка на пакет.
- Реализация: язык программирования, библиотеки или утилиты, на базе которых создано приложение.
- Сжатое хранилище: использование сжатия для хранилища бэкапов.
- Зашифрованное хранилище: использование шифрования для хранилища бэкапов.
- Delta transfer: передача только изменённых частей файла.
- Зашифрованная передача: передача данных зашифрованном виде по умолчанию при использовании сети.
- Метаданные ФС: сохранение прав доступа и атрибутов файловой системы.
- Лёгкий доступ: бэкап хранится как есть на файловой системе или может быть примонтирован для удобной работы с ним.
- Возобновляемая: возможность возобновления синхронизации в случае её прерывания.
- Переименования: перемещённые/переименованные файлы определяются и не хранятся или не передаются дважды. Обычно это означает подсчёт хеш-сумм файлов или их частей.
- CLI: наличие у приложения интерфейса командной строки, что означает возможность использования в скриптах.
- Другие интерфейсы: наличие указанных пользовательских интерфейсов, например GUI, TUI или web.
- Лицензия: лицензия серверного и клиентского приложения.
- Другие платформы: поддержка других операционных систем помимо Linux.
- Поддержка: поддерживается ли сейчас проект разработчиками.
- Особенности: заметки об особых функциях, которые выделяют приложение среди других.
Одно устройство
Эти приложения ориентированы на бэкап данных того устройства, на котором они установлены, хотя место для хранения бэкапов может быть расположено на внешнем хранилище или другой системе.
Инкременты на основе фрагментов (chunks)
При изменении файла приложении сохраняют только изменившиеся части в следующем снимке. В отличие от инкрементов на основе файлов, они более экономно расходуют место, особенно когда есть большие файлы с малыми изменениями; с другой стороны, такие бэкапы могут быть прочитаны только тем приложением, которое их создало, так как исходные файлы должны быть реконструированы по сохранённым в бэкапе различиям между версиями.
Название | Пакет | Реализация | Сжатое хранилище | Зашифрованное хранилище | Delta transfer | Зашифрованная передача | Метаданные ФС | Лёгкий доступ | Возобновляемая | Переименования | CLI | Другие интерфейсы | Лицензия | Другие платформы | Поддержка | Особенности |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Areca Backup | arecaAUR | Java | Zip, Zip64 | AES128, AES256 | Да | Да | Да | Нет | Pausing only | Нет | Да | Да | GPLv2 | Windows | Да | |
BorgBackup | borg | Python, C (Cython) | lz4, zlib, lzma, zstd | AES256 | Да | SSH | Да [24] | Да [25] | Да [26] | Да | Да | third party | BSD | *BSD, macOS, Windows (Cygwin / WSL)[27] | Да | Deduplication based on variable length chunks; support both local and SSH-based remote backup destination. |
btar | btarAUR[ссылка недействительна: сохранено в aur-mirror] | C | Да | Да | Да | Да | ? | Нет | ? | ? | Да | Нет | GPLv3 | Да | Redundancy, indexed extraction, multicore compression, input and output serialisation, tolerance to partial archive errors. | |
bup | bup bup-gitAUR | C, Python, git | Да | Нет | Да | Да | Immature | Да [28] | pick up where you left off [29] | Да | Да | bupsAUR | GPLv2 | NetBSD, Windows, macOS | Да | Same storage format as git. |
Duplicati | duplicati-latestAUR | C# | Да | Да | Да | Да | Да | Нет | Pausing only | Нет | Да | Да | LGPL | Windows | Да | |
Duplicity | duplicity | librsync | gzip | gpg | Да | Да | ? | Нет | Да | Нет | Да | Yes | GPL | Да | ||
Kup Backup System | kup | rsync, bup front-end | Да | Да | Да | Да | Immature | Да | Нет | Да | bup | Qt | GPLv2 | Да | ||
obnam | obnamAUR | Python | Да | GnuPG | Да | Да | ? | Да | checkpoints every 100MB | ? | Да | Нет | GPLv3 | No | ||
restic | restic restic-gitAUR | Go | Нет [30] | AES-256 [31] | Да | Да | Да [32] | Да [33] | Да [34] | Да | Да | Нет [35] | BSD | OpenBSD, Windows, macOS | Да | Supports storage on various cloud services natively and through rclone. |
ZBackup | zbackupAUR | C++ | LZMA, LZO | AES | Да | Да | ? | планируется [36] | Нет | Kinda through tar | Да | Нет | GPLv2 | Да | Repository consists of immutable files. |
Инкременты на основе файлов
Когда файл изменяется, эти приложения сохраняют новую его версию полностью в следующем снимке. В отличие от инкрементов на основе фрагментов, они менее экономно расходую место, особенно когда есть большие файлы с малыми изменениями; с другой стороны, зачастую такие бэкапы могут быть открыты без использования создавшего их приложения.
Легенда:
- Жёсткие ссылки: хранение неизменённых файлов в виде жёстких ссылок на предыдущие версии.
Название | Пакет | Реализация | Сжатое хранилище | Зашифрованное хранилище | Delta transfer | Зашифрованная передача | Метаданные ФС | Лёгкий доступ | Возобновляемая | Переименования | Жёсткие ссылки | CLI | Другие интерфейсы | Лицензия | Другие платформы | Поддержка | Особенности |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Back In Time | backintimeAUR | Python, rsync, diff | Нет | Нет | rsync | rsync | rsync | Да | Нет | Нет | Да [37] | Да | Qt | GPLv2 | Да | ||
DAR (Disk ARchive) | darAUR | C++ | special archive format | Да | Да | Да | ? | ? | ? | ? | Нет [38] | Да | darguiAUR | GPL | FreeBSD, NetBSD, Windows, macOS | Да | |
Link-Backup | link-backupAUR | Python 2 | Нет | Нет | ? | SSH | ? | ? | Да | Да | Нет [39] | Да | Нет | MIT | Нет | It copies itself to the server. | |
rdup | rdupAUR | C | tar.gz | gpg, blowfish и другие | ? | ? | ? | Да | ? | Нет | Да | Да | Нет | GPLv3 | Нет | Set of command-line tools. | |
rsnapshot | rsnapshot | rsync | Нет | Нет | Да | Да | ? | ? | ? | ? | Да [40] | Да | Нет | GPLv2 | Win32 | Нет [41] | |
sbackup | sbackupAUR | Python | gzip, bzip2 | Нет | ? | SSH | ? | Нет | Нет | Нет | Нет | Нет | GTK | GPLv3 | Нет | ||
TimeShift | timeshiftAUR | rsync | Нет | Нет | rsync | rsync | ? | ? | ? | ? | Да | Нет | GTK | GPLv3 | Designed for full-system backups to dedicated devices. | Да |
Сетевая структура
Эти приложения были разработаны для централизованного архивирования данных с нескольких машин, соединённых по сети, с использованием клиент-серверной модели. В целом они более сложны в развёртывании в сравнении с одним устройством.
Легенда:
- Направление: Pull: сервер пишет в клиент. Push: клиент начинает сессию архивирования.
-
Тиип инкремента: стратегия уменьшения дублирования данных для экономии места (помимо сжатия).
-
файлы: при изменении файла в новом снимке сохраняется новая версия целиком.
- жёсткие ссылки: хранение неизменённых файлов в виде жёстких ссылок на предыдущие версии.
- чанки: при изменении файла в снимке хранятся только изменённые части.
-
файлы: при изменении файла в новом снимке сохраняется новая версия целиком.
Название | Пакет | Реализация | Направление | Сжатое хранилище | Зашифрованное хранилище | Delta transfer | Зашифрованная передача | Метаданные ФС | Лёгкий доступ | Возобновляемая | Переименования | Тиип инкремента | CLI | Другие интерфейсы | Лицензия | Другие платформы | Поддержка | Особенности |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
BackupPC | backuppc | Perl | Pull | Да | Нет | Да | Да | Да | Нет | Да | ? | файлы, жёсткие ссылки [42] | Нет | Web | GPLv2 | Any (no client needed) | Да | Identical files across backups of the same or different clients are stored only once. |
Bacula | bacula* in AUR | C++ | Pull | Да | Да | ? | Да | ? | ? | Да | ? | файлы [43] | Да | GUI, Web | AGPLv3 | Windows, macOS | Да | |
burp | burp-backupAUR | librsync | Push | Да | Да | Да | Да | Да | ? | Да | ? | чанки [44] | Да | burp-ui | AGPLv3 | Windows, macOS | Да | |
SafeKeep | safekeepAUR | rdiff-backup | Pull | Нет | Нет | ? | Да | ? | ? | ? | ? | чанки [45] | Да | Да | GPL | Нет | Integrates with LVM and databases to create consistent backups. Bandwidth throttling. | |
Snebu | snebuAUR[ссылка недействительна: сохранено в aur-mirror] | C | Push или Pull | Да | Нет | ? | Да | ? | ? | ? | ? | файлы [46] | Да | Нет | GPLv3 | ? | Supports arbitrary retention schedules. | |
Synbak | synbak | Multitool wrapper | ? | Да | Нет | Да | Да | Да | ? | ? | ? | ? | Нет | Web | GPLv3 | Да | Unifies several backup methods. | |
UrBackup | urbackup* in AUR | C++ | Pull | Нет | Нет | Да | Internet transfers only | Да | Да | Да | Да | файлы, жёсткие и символьные ссылки[47]/chunk-based CoW-Snapshots[48] | Да (client) | GUI, Web | AGPLv3+ | Windows, macOS | Да | Identical files across backups of the same or different clients are stored only once. Integrates with LVM, dattobd and btrfs for file system snapshots. |
Системы управления версиями
Хотя системы управления версиями чаще всего используются для исходного кода, они могут хранить любые файлы.
Смотрите 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
- Mirroring an Entire Site using Rsync over SSH[dead link 2018-09-14]
- Performance comparison of five remote incremental backup tools: Rsync, Rdiff-backup, Duplicity, Areca and Link-Backup
- rsync-snapshot.sh[dead link 2018-09-14] — Local and remote snapshot backup using rsync with hard links