Логотип

Как установить Unison File Synchronizer для двусторонней синхронизации файлов в Linux

Как установить Unison File Synchronizer для двусторонней синхронизации файлов в Linux

Синхронизация файлов на нескольких компьютерах — распространённая задача для пользователей Linux. Вы можете использовать как ноутбук, так и настольный компьютер, управлять домашним сервером и VPS или просто нуждаться в дополнительной копии важных файлов.

Для простого резервного копирования хорошо подходят такие инструменты, как rsync и scp, но если вы вносите изменения в обе системы, односторонней синхронизации будет недостаточно, и вы рискуете перезаписать файлы или потерять обновления.

Здесь на помощь приходит Unison File Synchronizer — инструмент двусторонней синхронизации, который сравнивает каталоги на обеих сторонах, обнаруживает изменения и обновляет их, чтобы оба каталога всегда были в актуальном состоянии.

В этой статье вы познакомитесь с основами использования Unison File Synchronizer в Linux.

К концу курса вы будете знать, как:

  • Установите Unison на популярных дистрибутивах Linux.
  • Синхронизация файлов между двумя локальными папками.
  • Синхронизируйте каталоги в удалённых системах с помощью SSH.
  • Создавайте профили, чтобы упростить выполнение повторяющихся задач по синхронизации.
  • Устраните распространённые проблемы, такие как несоответствие версий и конфликты файлов.

 

Давайте начнём…

 

Установка Unison в Linux

Вы можете установить Unison либо из репозитория пакетов вашего дистрибутива Linux, либо загрузив стабильную версию. Для большинства пользователей установка из репозитория является самым простым способом.

sudo apt install unison [В Debian, Ubuntu и Mint]
sudo dnf install unison [В RHEL/CentOS/Fedora и Rocky/AlmaLinux]
sudo apk add unison [В Alpine Linux]
sudo pacman -S unison [В Arch Linux]
sudo zypper install unison [В OpenSUSE] 
sudo pkg install unison [В FreeBSD]

 

Если вам нужна версия с графическим интерфейсом, вы можете установить её с помощью следующей команды, но версия с графическим интерфейсом (unison-gtk) доступна только в дистрибутивах на основе Debian.

sudo apt install unison-gtk

 

Читать  Использование команды Install в Linux

После установки проверьте версию с помощью:

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

 

Читать  Управление ресурсами системы с помощью команды Ulimit

Вот как выглядит эта команда:

  • ~/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 постоянно сканирует ваши каталоги на предмет изменений.
  • Любой файл, добавленный или изменённый с любой стороны, синхронизируется автоматически.
  • Это особенно полезно для проектов по разработке, в которых файлы постоянно обновляются.
Читать  Как использовать опцию команды find -exec в Linux

 

Примечание: режим просмотра может потреблять больше системных ресурсов, если каталоги очень большие, поэтому используйте его с умом.

 

Планирование синхронизации с помощью Cron

Если вы предпочитаете периодическую синхронизацию непрерывному мониторингу, вы можете настроить автоматический запуск Unison с помощью заданий cron.

Сначала отредактируйте свой crontab:

crontab -e

 

Добавьте следующую строку, чтобы синхронизировать свой профиль каждый час:

0 * * * * unison work -batch

 

Вот как выглядит эта команда:

  • 0 * * * * → запускается в начале каждого часа.
  • unison work -batch → запускает ваш рабочий профиль в неинтерактивном режиме.

 

Основные возможности Unison, о которых вам следует знать

Вот краткий список полезных опций Unison:

ВариантОписание
-autoАвтоматическое разрешение простых обновлений.
-batchЗапуск без запроса пользователя (полезно для cron).
-ui textИнтерфейс текстового режима терминала.
-repeat watchПостоянно отслеживайте изменения в папках.
-prefer newerНа случай конфликта сохраните файл с последней версией изменений.

 

Пример комбинирования параметров:

unison work -auto -batch -prefer newer

 

Это позволяет автоматически запускать синхронизацию, разрешать конфликты, сохраняя более новые файлы, и не запрашивать у вас подтверждение.

 

Почему стоит выбрать Unison среди других инструментов

ИнструментТип синхронизацииДвустороннийДоступный графический интерфейсПример использования
rsyncОдностороннийРезервное копирование, зеркалирование сервера
УнисонДвусторонний✅ (GTK)Активные проекты на разных машинах

Заключительные мысли

Unison — это простой, но мощный инструмент для тех, кому нужно поддерживать согласованность между несколькими компьютерами под управлением Linux. В отличие от односторонних инструментов, таких как rsync, он позволяет безопасно синхронизировать файлы в обоих направлениях, предотвращая случайную перезапись и потерю файлов.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала