Как синхронизировать файлы с Unison в Linux
В этом подробном руководстве объясняется, что такое инструмент синхронизации файлов Unison, как установить Unison в Linux и как синхронизировать файлы с помощью Unison между двумя разными каталогами и /или диски в одной системе и на двух разных машинах Linux в локальной сети.
Что такое Унисон?
Unison — это бесплатный, многоплатформенный и двунаправленный инструмент для синхронизации файлов с открытым исходным кодом. Он используется для хранения двух реплик файлов и каталогов в двух разных системах или на разных дисках одной системы.
Реплики файлов и каталогов изменяются отдельно, а затем обновляются путем распространения изменений в каждой реплике на другую.
Проще говоря, любые изменения в одном месте будут реплицированы в другое место и наоборот.
Поскольку это мультиплатформенное приложение, вы можете синхронизировать файлы и каталоги между компьютерами, работающими под управлением разных операционных систем.
Например, вы можете синхронизировать файлы, хранящиеся на компьютере Linux, с компьютерами Windows или Unix и наоборот. Не только содержимое файла, но и права собственности на файл и разрешения также будут синхронизированы.
Если содержимое обеих реплик различно, это вызывает конфликт. Unison обнаружит и отобразит такие конфликты. В этом случае вам необходимо указать Unison, какая реплика должна переопределить другую. Обновления, которые не конфликтуют, будут распространяться автоматически.
Unison хорошо работает с любой парой компьютеров, подключенных к локальной сети или Интернету. Файлы синхронизируются с удаленной системой через зашифрованное ssh соединение.
Еще одна примечательная особенность Unison — он хорошо работает на медленных каналах, таких как соединения PPP. Подобно rsync, Unison передает только те части файла, которые были изменены.
Встроенная в Unison реализация алгоритма rsync позволяет очень быстро передавать обновления существующих файлов.
Unison — это программа пользовательского уровня, поэтому нет необходимости модифицировать ядро или иметь права суперпользователя на любом хосте.
Программа Unison создана Бенджамином К. Пирсом и распространяется под лицензией GPL. Он работает на платформах GNU/Linux, Windows и Unix.
Установите Unison в Linux
Unison доступен в репозиториях по умолчанию в официальных репозиториях многих операционных систем Linux.
Чтобы установить Unison в Alpine Linux, запустите:
sudo apk add unison
Установите Unison в Arch Linux и его вариантах, таких как EndeavourOS и Manjaro Linux:
sudo pacman -S unison
Дебиан, Убунту, Линукс Минт:
sudo apt install unison
Федора:
sudo dnf install unison
ЦентОС 7:
Сначала включите репозиторий [EPEL]:
sudo yum install epel-release
И затем установите унисон:
sudo yum install unison
openSUSE:
sudo zypper install unison
Существует также простой графический интерфейс под названием unison-gtk для тех, кто предпочитает GUI, а не CLI. Он доступен в репозиториях по умолчанию в нескольких дистрибутивах Linux.
В Alpine Linux вы можете установить Unison-gtk с помощью команды:
sudo apk add unison-gui
В Arch Linux и его вариантах установите Unison-gtk с помощью команды:
sudo pacman -S unison-gtk2
Если вы используете систему на базе Debian, установите ее с помощью следующей команды:
sudo apt install unison-gtk
Обратите внимание: если вы хотите синхронизировать файлы между двумя разными системами, вам необходимо установить Unison на все системы, которые вы хотите синхронизировать. Кроме того, рекомендуется использовать одну и ту же версию в обеих системах.
Синхронизировать файлы с Unison в Linux
Мы можем использовать Unison в следующих трех разных режимах:
- Синхронизировать файлы, хранящиеся в разных каталогах на одном компьютере,
- Синхронизировать файлы и каталоги, хранящиеся на разных дисках на одном компьютере,
Синхронизируйте файлы и каталоги между локальными и удаленными компьютерами:
- Синхронизируйте файлы с удаленным компьютером через прямое соединение,
- Синхронизируйте файлы с удаленным компьютером с помощью SSH.
1. Синхронизируйте файлы, хранящиеся в разных каталогах на одном компьютере.
Для целей данного руководства я собираюсь создать два корневых каталога (то есть реплики), а именно directory1
и directory2
.
mkdir ~/directory1
mkdir ~/directory2
Поместите некоторое содержимое в любой из вышеуказанных каталогов. Я сохранил несколько файлов и каталогов внутри directory1
.
Давайте посмотрим на содержимое directory1
:
ls -ltRF directory1/
Пример вывода:
directory1/:
total 7780
drwxrwxr-x 2 sk sk 4096 Oct 2 15:35 dir1/
-rw-rw-r-- 1 sk sk 7779007 Sep 25 16:51 file2
-rw-rw-r-- 1 sk sk 179765 Aug 17 12:51 file1
directory1/dir1:
total 140
-rw-rw-r-- 1 sk sk 141729 Aug 6 22:34 file3
Как вы можете видеть, у меня есть папка с именем dir1
и два других файла, а именно file1
и file2
в корне directory1
. Внутри dir1
есть еще один файл с именем file3
.
А реплика directory2
не имеет никакого содержимого.
ls -ltRF directory2/
directory2/:
total 0
Давайте синхронизируем эти два каталога, используя команду unison:
unison directory1/ directory2/
Вам будет предложено продолжить синхронизацию содержимого directory1
с directory2
. Просто нажмите клавишу ENTER
. Далее Unison попросит вас подтвердить файлы и каталоги для синхронизации. Нажмите ENTER
или клавишу f
, чтобы подтвердить файлы и папки, которые вы хотите синхронизировать. Наконец, нажмите y
и нажмите клавишу ENTER
, чтобы продолжить распространение обновлений.
Contacting server...
Looking for changes
Warning: No archive files were found for these roots, whose canonical names are:
/home/sk/directory1
/home/sk/directory2
This can happen either
because this is the first time you have synchronized these roots,
or because you have upgraded Unison to a new version with a different
archive format.
Update detection may take a while on this run if the replicas are
large.
Unison will assume that the 'last synchronized state' of both replicas
was completely empty. This means that any files that are different
will be reported as conflicts, and any files that exist only on one
replica will be judged as new and propagated to the other replica.
If the two replicas are identical, then no changes will be reported.
If you see this message repeatedly, it may be because one of your machines
is getting its address from DHCP, which is causing its host name to change
between synchronizations. See the documentation for the UNISONLOCALHOSTNAME
environment variable for advice on how to correct this.
Donations to the Unison project are gratefully accepted:
http://www.cis.upenn.edu/~bcpierce/unison
Reconciling changestinue.[<spc>] / file1
directory1 directory2
dir ----> dir1 [f] f
file ----> file1 [f] f
file ----> file2 [f] f
Proceed with propagating updates? [] y
Propagating updates
UNISON 2.48.4 started propagating changes at 15:43:29.75 on 02 Oct 2020
[BGN] Copying dir1 from /home/sk/directory1 to /home/sk/directory2
[END] Copying dir1
[BGN] Copying file1 from /home/sk/directory1 to /home/sk/directory2
[END] Copying file1
[BGN] Copying file2 from /home/sk/directory1 to /home/sk/directory2
[END] Copying file2
UNISON 2.48.4 finished propagating changes at 15:43:29.81 on 02 Oct 2020
Saving synchronizer state
Synchronization complete at 15:43:29 (3 items transferred, 0 skipped, 0 failed)
Синхронизировать каталоги с Unison из командной строки
Теперь все содержимое directory1
будет реплицировано в directory2
. Вы можете проверить это с помощью команды ls
:
Перечислить содержимое унисонных реплик
Видеть? Содержимое обеих реплик идентично. Как я уже упоминал, права доступа к файлам и номера индексных дескрипторов файлов и папок в обоих местах также синхронизируются. Вы можете видеть, что разрешения и индексные дескрипторы также идентичны в приведенном выше выводе.
Вы заметили стрелки на выводе при синхронизации каталогов? Например, вы должны были заметить следующие строки в середине вывода:
directory1 directory2
dir ----> dir1 [f] f
file ----> file1 [f] f
file ----> file2 [f] f
Стрелки указывают направление, в котором необходимо распространить изменение. В нашем случае стрелки указывают слева направо. Это означает, что dir1
, file1
и file2
передаются во вторую реплику, то есть directory2
.
Теперь создайте новый файл в реплике directory2
и посмотрите, что произойдет.
touch directory2/file4
Синхронизируйте две реплики с помощью команды:
unison directory1/ directory2/
Теперь вы увидите, что стрелка указывает справа налево. Это означает, что изменения во второй реплике распространяются на первую реплику. Другими словами, содержимое directory2
реплицируется в directory1
.
Contacting server...
Looking for changes
Reconciling changes
directory1 directory2
<---- new file file4 [f] f
Proceed with propagating updates? [] y
Propagating updates
UNISON 2.48.4 started propagating changes at 16:04:08.78 on 02 Oct 2020
[BGN] Copying file4 from /home/sk/directory2 to /home/sk/directory1
[END] Copying file4
UNISON 2.48.4 finished propagating changes at 16:04:08.78 on 02 Oct 2020
Saving synchronizer state
Synchronization complete at 16:04:08 (1 item transferred, 0 skipped, 0 failed)
Unison автоматически распознает, какие файлы необходимо обновить в обеих репликах. Когда вы запускаете Unison в первый раз, он записывает метку времени изменения, разрешения, владельца и номера индексных дескрипторов всех файлов и папок в обоих местах. На основе этой информации Unison решит, какие файлы необходимо обновить, когда вы снова запустите ту же команду. Как говорилось ранее, вся информация будет храниться в каталоге ~/.unison
.
Чтобы убедиться в этом самостоятельно, измените содержимое существующего файла. Я собираюсь изменить содержимое file4
в реплике directory1
.
echo "Welcome to OSTechNix" > directory1/file4
Теперь снова запустите синхронизацию:
unison directory1/ directory2/
На этот раз Unison синхронизирует измененные файлы.
Contacting server...
Looking for changes
Reconciling changes
directory1 directory2
changed ----> file4 [f] f
Proceed with propagating updates? [] y
Propagating updates
UNISON 2.48.4 started propagating changes at 16:05:27.13 on 02 Oct 2020
[BGN] Updating file file4 from /home/sk/directory1 to /home/sk/directory2
[END] Updating file file4
UNISON 2.48.4 finished propagating changes at 16:05:27.14 on 02 Oct 2020
Saving synchronizer state
Synchronization complete at 16:05:27 (1 item transferred, 0 skipped, 0 failed)
Как видно из приведенного выше вывода, Unison обнаружил, что file4
был изменен в первой реплике, и синхронизировал его со второй репликой.
Если обе реплики изменены и их содержимое различно, то изменения находятся в конфликте. В таких случаях Unison спросит пользователя, как распространять обновления на обе стороны. Конфликты будут отображаться стрелками влево и вправо, как показано ниже.
directory1 directory2
new file <-?-> new file file6 []
Если какое-либо действие по умолчанию указано стрелкой, просто нажмите клавишу ENTER
, чтобы перейти к следующему измененному файлу. Если вы хотите сделать с этим файлом что-то другое, вы можете нажать либо "<"
, либо ">"
, чтобы принудительно распространить изменение справа налево или слева. направо.
directory1 directory2
new file <==== new file file6 [] <
Если вы не хотите вносить какие-либо изменения, просто нажмите "/"
, чтобы пропустить этот файл и оставить обе реплики в покое.
1.1. Унисонные профили
Unison использует профили для синхронизации файлов и папок между двумя каталогами на одном или двух разных компьютерах. Профиль — это не что иное, как текстовый файл, в котором мы определяем фактический путь к корневым каталогам и настройки пути, которые следует синхронизировать. Все профили будут храниться в каталоге .unison
в вашем каталоге $HOME
.
При первом запуске Unison профиль по умолчанию с именем default.prf
создается в каталоге ~/.unison
. В профиле по умолчанию не определены никакие предпочтения. Таким образом, все, что хранится в одной реплике, будет синхронизировано с другой репликой.
Мы также можем создавать собственные профили со списком предпочтений пути. Это поможет вам избежать синхронизации всех двух реплик.
Используя пользовательские профили, мы можем указать Unison:
- для синхронизации определенных файлов и папок,
- игнорировать определенный файл или определенный тип файлов при синхронизации.
Давайте посмотрим пример.
Создайте две реплики и сохраните несколько файлов и папок в одной реплике, а другую оставьте пустой.
mkdir ~/directory1
mkdir ~/directory2
Затем создайте новый профиль с именем dir_profile.prf
:
nano .unison/dir_profile.prf
Определите корневые каталоги и пути к файлам и каталогам, которые вы хотите синхронизировать:
Roots of the synchronization
root = /home/sk/directory1
root = /home/sk/directory2
Paths to synchronize
path = dir1
path = file2
Два корня могут быть заданы в любом порядке. Unison отсортирует их в каноническом порядке, прежде чем делать что-либо еще. Если вы не укажете никаких путей, Unison просто синхронизирует две полные реплики, начиная с заданной пары корней. Если заданы одно или несколько предпочтений пути, Unison будет синхронизировать только эти пути и их дочерние элементы.
В приведенном выше примере я определил, что dir1
и file2
должны быть синхронизированы с другим корневым каталогом. Сохраните и закройте файл.
После создания профиля запустите процесс синхронизации командой:
unison dir_profile.prf
Вам будет предложено продолжить синхронизацию содержимого directory1
с directory2
. Просто нажмите клавишу ENTER
, а затем клавишу f
, чтобы подтвердить пути для синхронизации. Наконец, нажмите y
и нажмите клавишу ENTER
, чтобы продолжить распространение обновлений.
Contacting server...
Looking for changes
Warning: No archive files were found for these roots, whose canonical names are:
/home/sk/directory1
/home/sk/directory2
This can happen either
because this is the first time you have synchronized these roots,
or because you have upgraded Unison to a new version with a different
archive format.
Update detection may take a while on this run if the replicas are
large.
Unison will assume that the 'last synchronized state' of both replicas
was completely empty. This means that any files that are different
will be reported as conflicts, and any files that exist only on one
replica will be judged as new and propagated to the other replica.
If the two replicas are identical, then no changes will be reported.
If you see this message repeatedly, it may be because one of your machines
is getting its address from DHCP, which is causing its host name to change
between synchronizations. See the documentation for the UNISONLOCALHOSTNAME
environment variable for advice on how to correct this.
Donations to the Unison project are gratefully accepted:
http://www.cis.upenn.edu/~bcpierce/unison
Reconciling changestinue.[<spc>] | dir1
directory1 directory2
dir ----> dir1 [f]
file ----> file2 [f]
Proceed with propagating updates? [] y
Propagating updates
UNISON 2.48.4 started propagating changes at 15:42:32.99 on 01 Oct 2020
[BGN] Copying dir1 from /home/sk/directory1 to /home/sk/directory2
[END] Copying dir1
[BGN] Copying file2 from /home/sk/directory1 to /home/sk/directory2
[END] Copying file2
UNISON 2.48.4 finished propagating changes at 15:42:33.04 on 01 Oct 2020
Saving synchronizer state
Synchronization complete at 15:42:33 (2 items transferred, 0 skipped, 0 failed)
Синхронизировать файлы с Unison из командной строки
Теперь перейдите ко второй реплике directory2
и посмотрите, синхронизировано ли ее содержимое.
1.1. Игнорировать файлы при синхронизации
Иногда вам может не потребоваться синхронизировать определенный файл или определенный тип файлов. Если да, вы можете определить, какие файлы игнорировать в профиле, как показано ниже.
ignore=Name text.*
ignore=Name .*~
ignore=Name *.pdf
Дополнительные примеры профилей можно найти здесь.
1.2. Синхронизируйте локальные файлы и каталоги с помощью unison-gtk.
Некоторым из вас может не нравиться командная строка. К счастью, Unison имеет простой графический интерфейс, который позволяет пользователям легко создавать профили и синхронизировать файлы на основе профилей через графическое окно.
Убедитесь, что вы установили пакет unison-gtk
, как показано в разделе установки выше. Запустите unison-gtk из меню или панели запуска приложений.
При первом запуске вы увидите окно выбора профиля. Если вы уже создали профиль, как описано, вы увидите его там.
Окно выбора профиля Unison
В окне профилей вы можете создать новый профиль с новыми корневыми каталогами и путями для синхронизации. Или вы можете просто отредактировать существующий профиль и изменить корневые каталоги, добавить новые файлы или изменить пути для синхронизации.
Редактировать профили Unison
Если профиль вам больше не нужен, просто выберите его и нажмите «Удалить».
Я собираюсь создать новый профиль. Для этого нажмите кнопку Добавить в окне выбора профиля и нажмите Вперед.
Создать новый профиль в Unison-gtk
Введите подходящее имя для вашего нового профиля с небольшим описанием:
Введите имя и описание профиля Unison.
Затем выберите тип синхронизации, которую вы хотите выполнить. Поскольку это синхронизация между двумя локальными каталогами, я выбрал локальный.
Выбираем тип синхронизации в Unison
Выберите два корневых каталога, которые вы хотите синхронизировать.
Выберите каталоги для синхронизации
Установите следующий флажок, если один из ваших корневых каталогов находится в разделе FAT. Обычно это относится к флэш-накопителю USB.
Синхронизация с использованием раздела FAT
Наконец, нажмите «Применить», чтобы создать профиль.
Создать профиль унисона
Вновь созданный профиль появится в окне выбора профиля. Выберите его и нажмите «Открыть».
Выберите унисонный профиль
Графическое изображение Unison теперь покажет вам изменения, которые необходимо внести с обеих сторон. Как и в интерфейсе командной строки Unison, действие по умолчанию также обозначается стрелкой в графическом интерфейсе. Как вы видите на снимке экрана ниже, файлы распространяются слева направо, то есть от первой реплики ко второй реплике. Если содержимое реплик не идентично, Unison запросит инструкции о том, какая реплика должна переопределить другую.
Если вас устраивают инструкции по распространению изменений, нажмите Перейти на панели инструментов или выберите Синхронизация -> Перейти в строке меню.
Синхронизировать файлы с помощью интерфейса unison-gtk
После успешного завершения синхронизации вы увидите галочки в разделе «Статус».
Синхронизация успешно завершена в унисон
2. Синхронизируйте файлы и каталоги, хранящиеся на разных дисках на одном компьютере.
Синхронизация файлов между двумя дисками аналогична описанной выше. Просто убедитесь, что вы указали правильный путь к корневому каталогу на внешнем диске.
Теперь вы знаете, как синхронизировать файлы между двумя каталогами на одном жестком диске и на разных дисках локальной системы. В следующем разделе объясняется, как синхронизировать файлы между двумя разными системами.
3. Синхронизируйте файлы и каталоги между локальными и удаленными компьютерами.
Как говорилось ранее, Unison может синхронизировать файлы между локальными и удаленными системами через прямое соединение через сокет и через зашифрованное соединение SSH. Как вы уже знаете, SSH намного лучше и безопаснее, чем метод сокетов. В этом руководстве я буду использовать метод SSH для синхронизации файлов.
Убедитесь, что вы установили openSSH и Unison в обеих системах. Также убедитесь, что обе системы могут обмениваться данными через SSH. Обратите внимание, что на ваших локальных и удаленных системах должна быть установлена одна и та же версия Unison.
Чтобы проверить версию Unison, выполните следующую команду в локальной и удаленной системе:
unison -version
unison version 2.48.4
Поскольку файлы будут синхронизироваться через SSH, не имеет значения, есть ли в удаленной системе unison-gtk или нет. Интерфейса командной строки Unison достаточно на удаленной машине! На вашем локальном компьютере вы можете использовать текстовый или графический унисон-интерфейс.
3.1. Синхронизируйте файлы и каталоги между локальными и удаленными компьютерами из командной строки.
Теперь давайте синхронизируем directory1
из нашей локальной системы с directory1
в удаленной системе, используя unison, выполнив следующую команду:
unison directory1/ ssh://ostechnix@192.168.225.52/directory1/
Здесь ostechnix@192.168.225.52
— это имя пользователя и IP-адрес моей удаленной системы.
Вам будет предложено ввести пароль удаленного пользователя. Затем нажмите ENTER, чтобы согласиться на синхронизацию содержимого directory1
локального компьютера с directory
1 удаленного компьютера. Затем нажмите клавишу f
, чтобы подтвердить пути для синхронизации. Наконец, нажмите y
и нажмите клавишу ENTER
, чтобы продолжить распространение обновлений.
Contacting server...
ostechnix@192.168.225.52's password:
Connected [//ostechnix//home/sk/directory1 -> //ubuntuserver//home/ostechnix/directory1]
Looking for changes
Warning: No archive files were found for these roots, whose canonical names are:
/home/sk/directory1
//ubuntuserver//home/ostechnix/directory1
This can happen either
because this is the first time you have synchronized these roots,
or because you have upgraded Unison to a new version with a different
archive format.
Update detection may take a while on this run if the replicas are
large.
Unison will assume that the 'last synchronized state' of both replicas
was completely empty. This means that any files that are different
will be reported as conflicts, and any files that exist only on one
replica will be judged as new and propagated to the other replica.
If the two replicas are identical, then no changes will be reported.
If you see this message repeatedly, it may be because one of your machines
is getting its address from DHCP, which is causing its host name to change
between synchronizations. See the documentation for the UNISONLOCALHOSTNAME
environment variable for advice on how to correct this.
Donations to the Unison project are gratefully accepted:
http://www.cis.upenn.edu/~bcpierce/unison
Press return to continue.[<spc>] Waiting for changes from server
Reconciling changes
local ubuntuserver
file ----> file1 [f] f
file ----> file2 [f] f
Proceed with propagating updates? [] y
Propagating updates
UNISON 2.48.4 started propagating changes at 14:49:18.44 on 03 Oct 2020
[BGN] Copying file1 from /home/sk/directory1 to //ubuntuserver//home/ostechnix/directory1
[BGN] Copying file2 from /home/sk/directory1 to //ubuntuserver//home/ostechnix/directory1
[END] Copying file1
[END] Copying file2
UNISON 2.48.4 finished propagating changes at 14:49:18.45 on 03 Oct 2020
Saving synchronizer state
Synchronization complete at 14:49:18 (2 items transferred, 0 skipped, 0 failed)
Синхронизируйте файлы и каталоги между локальными и удаленными компьютерами с помощью Unison.
Приведенная выше команда реплицирует содержимое directory1
из локальной системы в directory1
в удаленной системе. Теперь добавьте новый файл или обновите существующий файл и повторите попытку синхронизации. Вы должны увидеть одинаковые результаты с обеих сторон.
Если вы хотите синхронизировать содержимое где-то еще, кроме домашнего каталога удаленной системы, вы должны указать абсолютный путь к удаленному каталогу, добавив дополнительную косую черту между именем удаленного хоста и началом пути. > как показано ниже:
unison directory1/ ssh://ostechnix@192.168.225.52//sync/the/files/here/
Если вы не хотите синхронизировать весь каталог, просто создайте собственный профиль и определите пути для синхронизации, как описано в разделе 1.1. Профили Unison выше.
3.2. Синхронизируйте файлы и каталоги между локальными и удаленными компьютерами с помощью unison-gtk.
Запустите приложение Unison-gtk из меню или панели запуска. Нажмите кнопку Добавить в окне выбора профиля, чтобы создать новый профиль.
Добавить новый профиль унисона
Нажмите «Вперед».
Помощник по созданию профиля Unison
Введите имя профиля Unison и его описание и нажмите «Вперед».
Введите имя профиля унисона
Вот важный шаг. Выберите "ssh" в раскрывающемся списке «Тип синхронизации». Введите IP-адрес или имя хоста удаленной системы и имя удаленного пользователя. Также установите флажок «Включить сжатие», чтобы улучшить производительность передачи данных.
Выберите SSH в раскрывающемся списке типа синхронизации.
Выберите локальные и удаленные каталоги, которые вы хотите синхронизировать.
Выберите локальные и удаленные каталоги для синхронизации с Unison.
Если один из ваших каталогов находится в разделе FAT, вы должны отметить эту опцию. Обычно это касается USB-накопителей.
Синхронизация с использованием раздела FAT
Нажмите Применить, чтобы завершить создание профиля.
Нажмите «Применить», чтобы завершить создание профиля Unison.
Вновь созданный профиль появится в окне выбора профиля. Выберите профиль и нажмите «Открыть».
Открыть профиль Unison
Вам будет предложено ввести пароль удаленного пользователя. Введите пароль и нажмите ОК.
Введите пароль удаленного пользователя
После ввода пароля Unison выведет список изменений, которые будут переданы с локального на удаленный компьютер. Действие по умолчанию указано стрелкой. Если вам не нужно действие по умолчанию, нажмите опции "слева направо" или "справа налево" в строке меню, чтобы указать, какая реплика должна переопределять другую. Наконец, нажмите Перейти, чтобы выполнить репликацию.
Синхронизируйте файлы и каталоги между локальными и удаленными компьютерами с помощью unison-gtk.
Unison теперь реплицирует все содержимое локального каталога в удаленный каталог. После завершения синхронизации вы увидите галочку в разделе «Статус».
Синхронизируйте локальные и удаленные каталоги с Unison
Вы можете проверить содержимое файлов и каталогов в обоих местах.
Вышеупомянутый метод синхронизирует все содержимое локальной реплики с удаленной репликой. Если вы хотите синхронизировать определенные файлы или каталоги, создайте собственный профиль и определите пути для синхронизации, как описано в разделе 1.1. Профили Unison выше.
3.3. Настройка аутентификации на основе ключей SSH (необязательно)
Всякий раз, когда вы синхронизируете файлы между двумя разными системами через SSH, вам необходимо ввести пароль удаленного пользователя. Если вы не хотите каждый раз вводить пароль, вы можете настроить SSH-аутентификацию без пароля, как описано в ссылке ниже. Не создавайте пару ключей SSH с парольной фразой. В противном случае вам все равно придется вводить пароль при синхронизации файлов между системами.
- Как настроить аутентификацию на основе ключей SSH в Linux
3.4. Настройка задания cron (необязательно)
Мы можем автоматически синхронизировать файлы через определенный интервал времени, используя задания cron.
Например, добавьте следующую запись в файл crontab
, чтобы синхронизация выполнялась каждый день (она будет запускаться в 00:00):
0 0 * * * unison directory1/ ssh://ostechnix@192.168.225.52//home/ostechnix/directory1/
Более подробную информацию о настройке заданий cron можно найти в следующем руководстве:
- Руководство для начинающих по заданиям Cron
Получать помощь
Я рассмотрел только основы. Этого достаточно для настройки рабочей синхронизации в вашей системе Linux. Если вы хотите узнать более продвинутое использование, обратитесь к разделу справки Unison.
Чтобы отобразить локальную страницу документации, запустите:
unison -doc topics
Список доступных тем вы увидите в локальной документации.
Documentation topics:
about About Unison
people People
lists Mailing Lists and Bug Reporting
status Development Status
copying Copying
ack Acknowledgements
install Installation
tutorial Tutorial
basics Basic Concepts
failures Invariants
running Running Unison
ssh Installing Ssh
news Changes in Version 2.48.4
Type "unison -doc <topic>" for detailed information about <topic>
or "unison -doc all" for the whole manual
Чтобы просмотреть подробную информацию по теме, например unison tutorial, запустите:
unison -doc tutorial
Вы также можете отобразить все руководство Unison, используя следующую команду:
unison -doc all
Я также прикрепил официальные ссылки Unison в конце этого руководства. Изучите документацию и ознакомьтесь с тем, как работает Unison. Как только вы узнаете достаточно, попробуйте настроить локальную и/или удаленную синхронизацию с Unison в рабочей среде.
Заключение
Unison позволяет легко и эффективно поддерживать полную синхронизацию двух или более систем друг с другом независимо от того, какие изменения происходят в любой из систем. Если вы хотите поддерживать актуальность и идентичность двух экземпляров набора файлов и каталогов в двух системах, Unison — хороший выбор!
Ресурсы:
- Веб-сайт Unison
- Официальная документация Unison
- Репозиторий Unison GitHub
Связанное чтение:
- Синхронизация файлов между несколькими системами с помощью Syncthing
- Как синхронизировать локальные и удаленные каталоги в Linux
- Как синхронизировать файлы и каталоги с помощью Zaloha.sh