Эта статья покажет вам, как настроить и использовать инструмент синхронизации файлов Unison в системах Debian. Используя Unison, вы можете синхронизировать файлы между двумя разными дисками или каталогами в одной или двух других системах по сети.
Технология Unison, разработанная Бенджамином С. Пирсом по лицензии GPL, позволяет пользователям синхронизировать два экземпляра одного файла в одной системе, но на разных дисках или двух других системах.
Unison позволяет сохранять обновленную и идентичную версию одного и того же файла или каталога. Его можно использовать в самых разных контекстах, таких как SSH, обеспечивая безопасную передачу данных между устройствами или каталогами.
Инструмент Unison является кроссплатформенным, позволяя пользователям синхронизировать файлы и каталоги между системами, работающими с одной или разными операционными системами. Например, вы можете синхронизировать файлы из системы Linux в систему BSD. Из-за своих функций безопасности Unison синхронизирует файлы и каталоги и применяет права владения и разрешения в обеих системах.
Инструмент Unison разработан с учетом требований безопасности и может выдерживать сбои, когда между точками синхронизации происходят прерывания. Если Unison обнаруживает конфликты файлов и каталогов, он сообщает о существующих конфликтах и позволяет пользователям выбрать, какая версия файлов должна применяться.
Unison может работать или поддерживать медленные сети, что делает его очень эффективным инструментом для использования полосы пропускания. Он синхронизирует только те части и каталоги, которые изменились, тем самым предотвращая тяжелую нагрузку и очень легко и быстро обновляя процесс синхронизации.
Несмотря на основной контекст использования, Unison – это мощный инструмент, который можно модифицировать для создания широкого спектра вариантов использования.
В этом руководстве будет рассказано, как установить и настроить систему синхронизации файлов Unison в Debian 10.
Унисон – популярный инструмент; благодаря этому он доступен в официальных репозиториях основных дистрибутивов Linux.
Чтобы установить версию Unison для командной строки в Debian, начните обновление системы:
sudo apt-get update && sudo apt-get upgrade
Затем используйте простую команду apt to для установки инструмента.
sudo apt-get install unison -y
Если в вашей системе установлена среда рабочего стола и вы предпочитаете версию инструмента с графическим интерфейсом, установите unison-gtk с помощью команды:
sudo apt-get install unison-gtk
Unison предоставляет нам способы синхронизации файлов и каталогов между локальными и удаленными машинами с использованием прямых соединений через сокеты и SSH. Поскольку мы выполняем синхронизацию между двумя серверами Debian, мы пропустим синхронизацию локальной машины.
Для синхронизации файлов и каталогов между удаленными машинами вам потребуется установить Unison в обеих системах, иметь SSH-доступ как к системам, так и к их IP-адресам.
Вы также можете использовать локальный компьютер в качестве одного сервера, а удаленное устройство – в качестве другого сервера.
Первый шаг – создать закрытый и открытый ключи на удаленном сервере1.
ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/csalem/.ssh/id_rsa): Created directory '/home/csalem/.ssh'. Enter passphrase (empty for no passphrase): Enter the same passphrase again: Your identification has been saved in /home/csalem/.ssh/id_rsa. Your public key has been saved in /home/csalem/.ssh/id_rsa.pub. The key fingerprint is: SHA256:4p5YuEBEa5lrINzqPgwHRVhSS0TNlIIl70A0q2MFcS8 csalem@Debian-PC The key’s random art image is: +---[RSA 2048]----+ |+/@=.. | |=*O== | |++OE . | |+*o.. | |o+= . S | |++. o . | |oo. . o | |.o . = . | | .. o o | +----[SHA256]-----+
Быстро пропустите процесс создания ключа и сохраните файл. Пожалуйста, не добавляйте парольную фразу, потому что она может препятствовать неконтролируемой синхронизации между серверами.
Затем скопируйте ключ с server1 на server2 с помощью команды:
ssh-copy-id 192.168.0.201
Теперь, когда у вас настроен SSH в обеих системах, вы можете запустить Unison для синхронизации файлов и каталогов.
Давайте протестируем использование Unison на обоих серверах, создав каталог, который мы будем синхронизировать на server1:
mkdir -p/dir1
На server2 создайте каталог, как указано выше
mkdir -p/dir2
Как уже упоминалось, Unison уважает разрешения пользователей. Следовательно, лучше всего изменить разрешения и владельца в обоих каталогах, чтобы оба каталога имели права на чтение и запись.
Затем добавьте все данные, которые вы хотите синхронизировать между серверами, в dir1. Например, добавьте несколько zip-файлов.
sudo mv ~/Documents.zip/dir1
Имея файлы, которые мы хотим синхронизировать в правильном каталоге, запустите команду unison для синхронизации с первого сервера как:
unison /dir1 ssh://192.168.0.201//dir2
При первом запуске Unison вы получите предупреждение о том, что процесс синхронизации может занять некоторое время. Если у вас есть большие файлы в каталогах, это может занять некоторое время, но поскольку мы используем его только для целей тестирования, это должно быть относительно быстро.
Нажмите Enter, чтобы начать процесс синхронизации. После завершения процесса синхронизации перейдите на server2, перейдите к dir2 и перечислите содержимое каталога как:
cd /dir2 && ls -la -rw-r--r-- 1 root root 436 Jan 5 12:57 Documents.zip
В большинстве случаев мы не хотим синхронизировать файлы между этими серверами в интерактивном режиме, поскольку процесс повторяется и неэффективен. Мы можем отредактировать файл конфигурации Unison, чтобы разрешить автоматическую синхронизацию файлов.
Используйте команду ниже для редактирования файла конфигурации по умолчанию:
sudo vi ~/.unison/default.prf
В файл добавьте следующие строки:
auto=true batch=true
Вышеупомянутые строки отключают запросы при синхронизации файлов, автоматизируя процесс.
Можно с уверенностью сказать, что программисты очень не любят делать что-то вручную, особенно когда есть возможность автоматизировать, как здесь. Мы можем настроить задание cron для Unison для автоматического выполнения синхронизации.
На server1 создайте простой сценарий bash для запуска команды unison как:
sudo touch/usr/bin/unisoncron && sudo vi/usr/bin/unisoncron
В файле начните с shebang и добавьте команду unison sync:
#!/bin/bash/ unison /dir1 ssh://192.168.0.201//dir2
Как обычно, сделайте скрипт разрешения на выполнение:
sudo chmod 755 /usr/bin/unisoncron
Теперь отредактируйте файл cronjob с помощью crontab:
sudo crontab -e
Если вы редактируете crontab впервые – мы надеемся, что нет – выберите свой редактор и введите следующую строку для синхронизации с Unison каждые 1 час:
*/60 * * * * /usr/bin/unisoncron &> /dev/null
Вы также можете настроить crontab для запуска в определенное время дня. Вам также не нужно использовать скрипт, и вы можете использовать необработанную команду в crontab.
В этой статье показано, как установить и настроить Unison в системе Debian для синхронизации файлов и каталогов.