- Почему обычные инструменты это не панацея
- Установка Unison File Synchronizer проще некуда
- Первые шаги в Unison File Synchronizer, локальная синхронизация
- А теперь в бой: синхронизация по SSH
- Профили Unison: забудьте длинные команды
- Автоматизация и cron
- Режим наблюдения в Unison: синхронизация в реальном времени
- Когда Unison лучше других
- И в заключении
Знаете, есть такая штука, которую все откладывают на потом, банальную настройку синхронизации между компьютерами. Ну типа «Да ладно, потом разберусь, сейчас просто скопирую через флешку». А потом бац! один файл поменяли на ноутбуке, другой на сервере, третий случайно удалили, и теперь ты сидишь, смотришь на два одинаковых (но не совсем) каталога и не знаешь, какой из них настоящий. Вот тут-то и понимаешь, что пора перестать играть с rsync, как с тупым зеркалом, и познакомиться с нормальным инструментом Unison File Synchronizer.

Если коротко, Unison это как rsync, но гораздо умнее. Он не просто копирует из точки А в точку Б, а сверяет обе стороны, находит различия и аккуратно всё выравнивает, чтобы с обеих сторон было одно и то же. В двух словах это двусторонняя синхронизация. И работает это реально надёжно.
Почему обычные инструменты это не панацея
rsync очень классный парень. Я его уважаю. Но у него один характерный минус, он думает в одну сторону. Ты можешь копировать папку с сервера на ноутбук, но если потом поменяешь что-то на ноутбуке, то rsync этого не заметит. Он тупо перезапишет всё при следующей синхронизации. Как будто ты случайно выкинул все обновления, над которыми работал весь вечер. Эта боль знакома каждому кто пытался вручную управлять версиями файлов.
Вот именно поэтому я и обратил внимание на Unison. Этот инструмент не выбирает любимчиков из оборудования, он сравнивает обе стороны, находит изменения и аккуратно их объединяет. Без лишней драмы.
Установка Unison File Synchronizer проще некуда
Честно говоря, установка Unison это пожалуй самая скучная часть. Но пройти её всё равно нужно.
sudo apt install unison– для Debian, Ubuntu и их потомков.sudo dnf install unison– Fedora, CentOS и всё красношляпное семейство.sudo pacman -S unison– если вы на Arch.sudo apk add unison– для Alpine, где всё крошечное, но работает.
После установки обязательно проверьте версию: unison -version. Это не просто формальность, так как если версии на двух системах разные, синхронизации не будет. Unison обидчивый в этом плане. Читал на форуме один парень полдня искал ошибку, а оказалось, просто у него сервер обновился, а комп нет. Классика для Unison.
Первые шаги в Unison File Synchronizer, локальная синхронизация
Начните с малого. Возьмите две папки на одном компьютере, например:
~/Documents/work— основная рабочая папка~/Backup/work_sync— резервная копия
Запустите:
unison ~/Documents/work ~/Backup/work_sync
Unison просканирует обе папки, покажет различия и спросит, что делать дальше. Копировать в одну сторону, в другую или пропустить. Всё просто и прозрачно. И самое приятное если файлы отличаются с обеих сторон, он не перезапишет ничего без спроса, а предложит разрулить конфликт. Настоящая дипломатия.
После пары таких запусков начинаешь чувствовать себя волшебником, который щёлкает пальцами, и файлы сами выравниваются между каталогами. Красота.

А теперь в бой: синхронизация по SSH
Вот тут начинается настоящая магия. Допустим, у вас есть ноутбук и сервер VPS, или домашний NAS. Хочется, чтобы папка ~/Projects синхронизировалась между ними без танцев с флешками. Для этого достаточно одной команды:
unison ~/Projects ssh://user@8.8.8.8//home/user/Projects
Две косые черты после адреса сервера очень важны, они указывают, что путь полный, а не относительный. Без них Unison может начать гадать, куда всё это складывать, и вы удивитесь результату. Проверено лично.
Кстати, настройте вход по SSH-ключам, чтобы не вводить пароль каждый раз. Это не только удобно, но и нужно, если вы хотите потом автоматизировать процесс например, через cron.
Профили Unison: забудьте длинные команды
Если вы, как и я, не любите каждый раз набирать километровые команды, Unison предлагает профили. Они хранятся в папке ~/.unison/ и позволяют хранить настройки синхронизации как шаблон.
Пример простого профиля work.prf:
root = /home/youruser/Documents/work
root = ssh://username@server-ip//home/username/Documents/work
auto = true
batch = true
prefer = newer
Теперь достаточно написать в терминале unison work и о чудо, всё пойдёт по плану, без вопросов и уточнений. Если где-то есть конфликт, Unison возьмёт более свежий файл. Это удобно, но будьте аккуратны иногда свежее не значит лучше. Можно случайно затереть черновик, который вы редактировали.
Автоматизация и cron
Если вы хотите, чтобы всё происходило вообще без вашего участия, то можно легко подключить cron. Например, чтобы каждый час Unison сам запускал ваш профиль:
0 * * * * unison work -batch
Вот в принципе и всё теперь файлы будут синхронизироваться автоматически, как часы. Даже если вы забыли об этом, Unison не забудет. А вы можете спокойно пить кофе и делать вид, что всё под контролем.
Режим наблюдения в Unison: синхронизация в реальном времени
Есть ещё один прикольный вариант это режим watch. Он отслеживает изменения в реальном времени и синхронизирует всё сразу после правки. Для активных проектов просто находка.
Запускается так:
unison work -repeat watch
Unison будет тихо следить за папками и реагировать на любые изменения. Минус только в том, что если у вас десятки гигабайт файлов, система может слегка задыхаться от постоянного мониторинга. Но в умеренных дозах это очень удобно.
Когда Unison лучше других
Вот простая таблица для понимания:
- rsync это однонаправленный, быстрый, надёжный, но без обратной связи.
- Unison это двусторонний, умный, и даже имеет графический интерфейс unison-gtk, если конечно вы на Debian/Ubuntu.
На практике Unison это такой баланс между гибкостью и безопасностью. Он не требует поднятия сложных сервисов вроде Nextcloud, но при этом надёжно следит за консистентностью данных. Для разработчиков, админов и просто аккуратных пользователей это самое то.
И в заключении
Когда я впервые попробовал Unison, у меня было чувство, будто я наконец перестал жонглировать флешками и zip архивами. Всё стало проще, изменил файл здесь и он уже там. Без суеты, без потерь, без дублирования final_v3_new_latest_really_final.txt.
Да, инструмент не самый модный, интерфейс у него слегка из нулевых, но зато работает железно. И если вы живёте в мире Linux, где ценится надёжность, простота и прозрачность, то Unison станет вашим хорошим другом. Таким, который не забудет, где лежит ваш последний файл. Даже если вы сами забыли.
Понравилась статья?
Помогите Setiwik.ru создавать больше глубоких обзоров и новостей. Один клик и ваш вклад помогает держать серверы включёнными и авторов мотивированными!
Поддержать проектСпасибо, что вы с нами!




Для Windows пользуюсь Exiland, Cobian, Create Synchronicity. Когда начал изучать Linux пробовал и Unison. И другие подобные синхронизаторы. Уже не помню, что конкретно в них не зашло. По итогу оказалось проще (и интереснее) самому состряпать сценарий на bash, который посредством rsync копирует изменённые и новые файлы с ноутбука на внешние диски, СХД.
rsync -rut –exclude=”*~” “/источник” “/назначение”
либо для простого:
cp -u “/источник” “/назначение”
Графический интерфейс мне здесь уже не нужен. Добавил создание списка скопированных файлов ( ls -Rths -lt “/путь” ), уведомление в случае (не)успешной отработки сценария. В качестве файлового менеджера использую Nemo, сценарии запускаются из контекстного меню (ПКМ), можно и горячие клавиши назначить, но это пока без надобности. Можно и автозапуск сделать, назначить период синхронизации (cron, wait etc). Да много чего.
В этом плане мне как раз и нравится Linux: каких-то программ с GUI либо нет, либо не хватает функционала, либо не осилил, зато можно самому написать минимальный сценарий.
В Windows и мотивации особо нет (ибо есть готовые программы), и с написанием сценариев сложнее (пока не разобрался).
Пользуюсь своими сценариями уже лет пять, время от времени что-то переделываю\дополняю\усложняю. Посему готовые программы синхронизации больше не интересуют.
Лет шесть назад подобная статья мне была бы полезна весьма, поскольку для меня было сложно и непривычно в Linux’е, приходилось тыкать наугад. В итоге дотыкался. Гы)))
Вот это я понимаю подход с душой и руками! Когда начинаешь разбираться с Linux, сначала ищешь готовое решение, а потом внезапно обнаруживаешь, что проще и интереснее написать своё. Особенно когда видишь, что rsync делает почти всё что надо.
Это два вечных инструмента rsync -rut и cp -u которые никогда не подведут.
А в Windows либо покупай готовое, так как нормальные продукты стоят денег, ну либо страдай
Спасибо за комментарий, очень по делу. Думаю, многим читателям будет полезно знать как это можно реализовать через bash и rsync.
А за финальное дотыкался отдельный лайк Это, пожалуй, самое точное определение пути в Linux.