Как установить Unison (двусторонняя синхронизация файлов) на Linux
Синхронизация файлов на нескольких устройствах — обычная задача для пользователей Linux. Вы можете использовать как ноутбук, так и настольный компьютер, управлять домашним сервером и VPS или просто нуждаться в дополнительной копии важных файлов.
Для простого создания резервных копий такие инструменты, как rsync и scp, работают хорошо, но если вы вносите изменения на обеих системах, односторонняя синхронизация недостаточна, и вы рискуете перезаписать файлы или потерять обновления.
Вот где полезен Unison File Synchronizer — это инструмент двусторонней синхронизации, который сравнивает каталоги с обеих сторон, обнаруживает изменения и обновляет их, чтобы оба местоположения всегда оставались согласованными.
Это руководство проведет вас через основы использования Unison File Synchronizer в Linux.
К концу вы будете знать, как:
- Установите Unison на популярных дистрибутивах Linux.
- Синхронизировать файлы между двумя локальными папками.
- Синхронизируйте каталоги между удалёнными системами с использованием SSH.
- Создавайте профили, чтобы упростить выполнение повторяющихся задач синхронизации.
- Исправляйте распространённые проблемы, такие как несовпадение версий и конфликты файлов.
Давайте начнем…
Установка Unison на Linux
Вы можете установить Unison либо из репозитория пакетов вашей Linux-дистрибуции, либо скачав стабильную версию. Для большинства пользователей установка из репозитория является самым простым способом.
sudo apt install unison [On Debian, Ubuntu and Mint] sudo dnf install unison [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo apk add unison [On Alpine Linux] sudo pacman -S unison [On Arch Linux] sudo zypper install unison [On OpenSUSE] sudo pkg install unison [On FreeBSD]
Если вы хотите версию с графическим интерфейсом, вы можете установить её с помощью следующей команды, но версия с интерфейсом (unison-gtk) доступна только для дистрибутивов на базе Debian.
sudo apt install unison-gtk
После установки проверьте версию с помощью:
unison -version
Важное замечание: Unison строго соблюдает совместимость версий. Если вы планируете синхронизацию между двумя системами (например, ноутбуком и VPS), на обеих должна быть установлена точная версия Unison. В противном случае подключение будет отклонено.
Базовая локальная синхронизация
Прежде чем использовать Unison через сеть, полезно начать с синхронизации двух папок на одном компьютере, что поможет вам понять, как работает Unison, без необходимости беспокоиться о удалённых соединениях или SSH.
Допустим, у вас есть две папки:
~/Documents/work→ ваша основная рабочая папка~/Backup/work_sync→ ваша папка резервного копирования
Чтобы синхронизировать эти папки, выполните:
unison ~/Documents/work ~/Backup/work_sync
Вот разбивка команды:
- Сравнение: Unison просматривает обе директории и сравнивает имена файлов, размеры и временные метки.
- Отчёт о различиях: Он перечисляет все различия между двумя папками.
- Подтверждение пользователя: Если произошли изменения, Unison спросит вас, что делать: скопировать файлы слева направо, справа налево или пропустить их.
- Синхронизация: После подтверждения Unison обновляет обе директории, чтобы они совпадали.
Совет: Файлы, существующие только в одной папке, автоматически копируются в другую. Если файлы существуют в обеих папках, но были изменены по-разному, Unison предложит вам разрешить конфликт.
Этот двусторонний подход делает Unison безопаснее, чем простое использование cp или rsync в одном направлении. Вы можете редактировать файлы с обеих сторон, не беспокоясь о потере обновлений.
Синхронизация между удалёнными системами (с использованием SSH)
Теперь давайте перейдем к синхронизации файлов между двумя различными машинами через SSH, что означает, что соединение зашифровано и безопасно.
Вы хотите синхронизировать вашу локальную папку ~/Projects с удалённым сервером:
unison ~/Projects ssh://username@server-ip//home/username/Projects
Вот разбивка команды:
~/Projects→ локальная директория, которую вы хотите синхронизировать.ssh://username@server-ip//home/username/Projects→ полный путь на удалённой машине, доступный через SSH.- Обратите внимание на двойные косые черты
(//)после имени хоста: они указывают на полный путь, а не на относительный.
Совет профессионала: Настройте аутентификацию с помощью SSH-ключа, чтобы вам не приходилось вводить пароль каждый раз, что особенно важно, если вы хотите впоследствии автоматизировать задачи синхронизации.
Использование профилей для автоматизации
Набор длинных команд Unison каждый раз может стать утомительным. К счастью, Unison позволяет создавать профили — сохранённые наборы инструкций для повторяющихся задач синхронизации. Профили хранятся в ~/.unison/ с расширением .prf.
Создание нового файла профиля.
nano ~/.unison/work.prf
Добавьте следующий контент:
root = /home/youruser/Documents/work root = ssh://username@server-ip//home/username/Documents/work auto = true batch = true prefer = newer
Вот разбивка по каждому варианту:
root→ задаёт папки для синхронизации (локальные и удалённые).auto=true→ автоматически выполняет синхронизацию без запроса подтверждения.batch=true→ выполняется в неинтерактивном режиме (полезно для скриптов или заданий cron).prefer=newer→ в случае конфликтов сохраняет файл с наиболее поздним временем изменения.
Теперь вы можете просто выполнить следующую команду, и Unison автоматически использует ваш профиль, нет необходимости каждый раз вводить длинные команды.
unison work
Запуск непрерывной синхронизации (режим онлайн)
Иногда вы хотите, чтобы ваши каталоги оставались синхронизированными автоматически по мере внесения изменений, используя режим наблюдения, который непрерывно отслеживает каталоги.
unison work -repeat watch
С этой командой:
- Unison продолжает сканировать ваши каталоги на предмет изменений.
- Любой файл, добавленный или изменённый на любой стороне, синхронизируется автоматически.
- Это особенно полезно для проектов разработки, где файлы постоянно обновляются.
Примечание: Режим наблюдения может потреблять больше системных ресурсов, если каталоги очень большие, поэтому используйте его с умом.
Планирование синхронизаций с помощью Cron
Если вы предпочитаете периодическую синхронизацию вместо постоянного мониторинга, вы можете настроить автоматический запуск Unison с помощью cron-задач.
Сначала отредактируйте ваш crontab:
crontab -e
Добавьте следующую строку, чтобы синхронизировать ваш профиль каждый час:
0 * * * * unison work -batch
Вот разбивка команды:
0 * * * *→ выполняется в начале каждого часа.unison work -batch→ выполняет ваш рабочий профиль в неинтерактивном режиме.
Распространенные варианты унисона, которые вам следует знать
Вот краткое руководство по полезным параметрам Unison:
| Вариант | Описание |
|---|---|
-авто |
Автоматически выполнять простые обновления. |
-пакет |
Запуск без пользовательских запросов (полезно для планировщика заданий). |
-текст интерфейса |
Принудительно включить текстовый интерфейс терминала. |
-повторять watch |
Постоянно отслеживать изменения в папках. |
-предпочитать новые |
Сохраняйте самый недавно изменённый файл в случае конфликта. |
Пример объединения вариантов:
unison work -auto -batch -prefer newer
Это автоматически выполняет вашу синхронизацию, разрешает конфликты, сохраняя новые файлы, и не запрашивает подтверждения.
Почему выбирать Unison вместо других инструментов
| Инструмент | Тип синхронизации | Two-Way | Доступен графический интерфейс | Сценарий использования |
|---|---|---|---|---|
| rsync | В одну сторону | ❌ | ❌ | Резервное копирование, зеркалирование сервера |
| Унисон | Двусторонний | ✅ | ✅ (GTK) | Активные проекты на всех устройствах |
Заключительные мысли
Unison — это легкий, но мощный инструмент для всех, кому необходимо поддерживать согласованность между несколькими машинами Linux. В отличие от однонаправленных инструментов, таких как rsync, он позволяет безопасно синхронизировать файлы в обе стороны, предотвращая случайную перезапись и потерю файлов.

Добавить комментарий