Bt-teh.ru

БТ Тех
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Синхронизация файлов в Ubuntu/Debian с помощью Unison

Синхронизация файлов в Ubuntu/Debian с помощью Unison

Unison — это бесплатная кроссплатформенная утилита для синхронизации, которая поддерживает два экземпляра наборов файлов на двух машинах или на двух различных дисках в одной системе. В отличие от простого зеркалирования или резервного копирования она обновляет обе копии файла общей структуры директорий. Она обнаруживает и показывает конфликтующие обновления. В отличие от распределенных файловых систем Unison является программой пользовательского уровня и не требует модификации ядра или привилегий root на каждом хосте.
Unison работает на любой паре машин, подключенной к интернет напрямую либо через защищенный туннель SSH. Она нетребовательна к пропускной способности сети и хорошо работает даже на медленных соединениях. Передача небольших обновлений файлов большого размера оптимизирована с помощью протокола сжатия, похожего на rsync.
В этом руководстве я использую две системы, работающие под Ubuntu. Локальная система работает под Ubuntu Desktop, и ее IP-адрес 192.168.1.100/24. Удаленная система работает под Ubuntu Server и ее IP-адрес 192.168.1.201/24. Я собираюсь синхронизировать директорию /home/sk/Unixmen.

Установка Unison

На локальной и удаленной системах:

Обновите обе системы при помощи следующих команд:

Установите Unison в обеих системах:

Настройка

Теперь в локальной системе запустите утилиту Unison GUI. Она должна выглядеть примерно так.

утилита Unison GUI

Сначала нам нужно создать новый профиль для синхронизации. Для создания нового профиля кликните Add. Затем кликните Forward.

создание профиля

Введите имя для нового профиля и кликните Forward.

имя профиля

Здесь вас попросят указать метод синхронизации. Я хочу проводить синхронизацию между локальной машиной и удаленным сервером, используя SSH, поэтому выбираю «Using SSH». Введите IP-адрес и имя пользователя для удаленного сервера, как показано ниже, и кликните Forward.

настройка синхронизации

Теперь необходимо вернуться к локальной и удаленной папкам. Введите путь к локальной папке в Local Directory (у меня это /home/sk/Unixmen), а путь к удаленной — в Remote Directory. Кликните Forward.

задание пути к директориям

Если вы синхронизируете любые папки на разделах FAT, отметьте «FAT Partition» и кликните Forward.

выбор типа раздела

В конце кликните Apply.

завершение настройки

Мы успешно создали профиль. Кликните Open, чтобы начать синхронизацию.

запуск синхронизации

Вы увидите запрос пользовательского пароля для удаленной системы. Введите пароль и кликните Ok.

ввод пароля

Если вы запускаете приложение в первый раз, то увидите предупреждение, как показано ниже. Для продолжения кликните Ok.

предупреждение

Теперь вы увидите следующую картину:

процесс синхронизации

Скопируйте папки или файлы, которые вы хотите реплицировать на удаленной машине, в свою папку для синхронизации (/home/sk/unixmen), и кликните Go. Все будет происходить в фоновом режиме. Теперьт проверьте наличие файлов на удаленной машине. Они определенно должны быть там. Если вы добавите новый файл или директорию, кликните Rescan, затем Go для начала синхронизации.

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

Двунаправленная синхронизация файлов в ubuntu

Мне нужно несколько файлов, папок синхронизировать на двух серверах ubuntu.
Сервер синхронизируется с сервером B.
B сервер синхронизируется с A.

rsync: синхронизация в одну сторону
unison: синхронизация только одной папки.

Существуют ли какие-либо другие двухсторонние(двунаправленные) инструменты синхронизации файлов?

1 ответ

  • Есть ли двунаправленная карта в matlab?

Существует ли двунаправленная структура картографических данных в matlab, которая более эффективна, чем использование ключей и значений containers.Map’s в противоположном направлении? Кроме того, каков наиболее эффективный способ использования обычных карт для этой цели?

Я пытаюсь создать простое клиент-серверное приложение. Я наткнулся на DRuby и попробовал его. Кажется действительно хорошим, однако я не уверен, что двунаправленная связь разрешена. Функциональность, которую я хочу, заключается в следующем: Сервер запускает обслуживающий клиент с объектом. Клиент.

Unison может работать с несколькими папками. Возможно, вы думаете об их «root folders» как о единственном способе контролировать то, что получает резервное копирование, но у вас также есть пути.

Во всяком случае, единственная проблема (если это можно считать таковой) заключается в том, что, похоже, unison больше не обновляется.

Кроме того, первая синхронизация в унисон между двумя корнями может быть очень длительным процессом.

Похожие вопросы:

Я использую Vagrant, чтобы установить поле ubuntu на Virtualbox. В файле vagrant я указал синхронизированные папки для синхронизации моего кода с гостем: config.vm.synced_folder /host/target/webapp.

Читать еще:  Бинауральная синхронизация регулировки усиления и переключения программ

Я создаю приложение recording iPad, которое будет принимать некоторые умеренно большие записи на iPad (5-10 минуты полного аудио примерно 5-10Megabytes размера.) Как я могу синхронизировать такие.

Я пытаюсь захватить симметричный конвейер обработки данных с помощью стрелок и задаюсь вопросом, возможна ли двунаправленная композиция. Control.Arrow предоставляет следующие — | Left to right.

Существует ли двунаправленная структура картографических данных в matlab, которая более эффективна, чем использование ключей и значений containers.Map’s в противоположном направлении? Кроме того.

Я пытаюсь создать простое клиент-серверное приложение. Я наткнулся на DRuby и попробовал его. Кажется действительно хорошим, однако я не уверен, что двунаправленная связь разрешена.

У меня есть относительно большая база данных MySQL (более 300 таблиц), которую мне отчаянно нужно преобразовать в PostgreSQL и синхронизировать данные между двумя базами данных, если не в реальном.

Я впервые настраиваю балансировку нагрузки, и у меня есть несколько вопросов о синхронизации кодов, статических файлов и базы данных. Мой сервер Ubuntu 12.4 и будет использовать балансировку.

Классическая проблема: наличие базы данных на сервере и базы данных на Android, которые оба должны быть синхронизированы (с сервисом REST). После долгих исследований мне кажется, что это довольно.

Я установил клиент агента синхронизации на своем локальном компьютере и настроил синхронизацию между базой данных azure SQL и локальной базой данных. На портале Azure я установил время синхронизации.

У нас есть активный репозиторий svn, и мы планируем перейти на mercurial. Идея состоит в том, чтобы создать новое РЕПО mercurial, синхронизировать с ним РЕПО svn с историей, создать для него сборку.

Копирование данных при помощи rsync в Ubuntu

Rsync (Удаленная синхронизация) является полезным инструментом синхронизации для копирования и синхронизации файлов и каталогов в локальных и удаленных системах Linux. Можно синхронизировать файлы между двумя каталогами на том же компьютере между каталогами в двух системах в той же сети и между двумя каталогами в удаленной системе.

В этой статье я опишу некоторые случаи общего использования для rsync в Linux.

Установка Rsync на Ubuntu

Rsync предварительно установлен с некоторыми дистрибутивами Linux. Если это не предварительно установлено, можно установить его с помощью ниже команды:

Используя Rsync

Базовый синтаксис rsync:

# rsync [опции] [источник] [место назначения]

В опциях можно определить множество параметров.

Файлы копии локально

Для копирования всех файлов от исходного каталога до целевого каталога войдите ниже команды:

После выполнения вышеупомянутой команды все .odc файлы в исходном каталоге,/home/tin/Documents, будут скопированы в целевой каталог,/home/tin/Desktop/data.

Файлы копии от локального до удаленной системы

Rsync может скопировать файлы по сети, все, в чем Вы нуждаетесь, вход в систему SSH удаленного сервера или рабочего стола.

Эта команда копирует содержание локальной/var/www папки к папке,/var/www из системы на IP 192.168.0.100. Это использует пользователя ‘корень’ для вхождения в удаленную систему.

Копирование файлов на основе размера

Можно также определить максимальный размер файла, который может быть скопирован с помощью rsync. Скажем, в этом случае, я определяю максимальный размер к 0.2K. Файлы с размером, больше, чем это, не будут скопированы в/home/tin/Desktop/data.

Минимальный размер

Точно так же можно также определить минимальный размер, который может быть скопирован с помощью rsync.

В этом примере я определяю минимальный размер 30K. Файлы с размером меньше, чем 30K не получат скопированное использование rsync.

Прогресс представления

Можно также просмотреть прогресс при копировании файлов с помощью rsync. Добавьте — прогрессируют в команде rsync в синтаксисе как показано ниже:

Скопируйте всю папку с rsync

Подобный файлам, можно также скопировать всю папку и файлы, содержавшиеся в нем с помощью rsync команду.

Добавьте ниже команды в терминале:

Исключите файлы

Можно также исключить определенные файлы при копировании файла и папки с помощью rsync.

Путем ввода следующей команды все файлы будут скопированы от источника до места назначения кроме .odc файлов.

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

Синхронизация 2х папок между собой

music, подключил смартфон и эти 10 треков копируются на «шару» в SMB. Приветствуются как идеи, так и готовые реализации, если ошибся разделом — перенесите пожалуйста.

Читать еще:  Windows неправильно синхронизирует время

Перемещено mono из talks

Добавь хук при монтировании устройства, который запускает банальный rsync.

Именно SMB? Есть же готовые системы, вроде Ubuntu One.

Я к телефону подключаюсь через SMB (находятся в одной локальной сети), по другому никак (ибо в режиме Storage он работать не умеет, а проприетарщины в виде BB Link нет под Linux)

А вот это идея, попробую.

btsync — то, что тебе нужно, нафига тут вообще smb?

SMB — это подключение смартфона к ПК, другого способа это сделать нет, вопрос в том и был, синхронизация локальной папки с SMB «шарой».

тогда btsync между подмонтированной шарой и целевой директорией

Вот вопрос, что куда оно может, мне нужно чтобы из локальной дирректории (мой хомяк) добавлялись отсутствующие элементы в шару, оно это умеет?

Зачем на синхронизацию двух каталогов в локалке наворачивать bittorrent? Это болезнь такая?

причем здесь битторент? увидел две знакомые буковки в названии?

у него удобная и простая рожа под линукс и андроид, плюс его очень просто запускать в виде сервиса в режиме мониторинга, в отличие от rsync’a по крону

Морда мне не нужна, запуск и в ручную пойдет.

тогда rsync конечно

А что, вы про какой-то другой btsync?

у него удобная и простая рожа под линукс и андроид, плюс его очень просто запускать в виде сервиса в режиме мониторинга, в отличие от rsync’a по крону

Добавить в скрипт синхронизации логирование, и будет так же удобно. А рожа для скрипта не нужна.

Мизулиной на тебя нет!

А что, вы про какой-то другой btsync?

я повторяю свой вопрос

Добавить в скрипт синхронизации логирование

чтобы умел мониторить, туда нужно добавить поддержку inotify по меньшей мере. и потом, какой ещё скрипт? который ты сам напишешь, тратя на это время, которое мог бы потрать на что-то более полезное?

чтобы умел мониторить, туда нужно добавить поддержку inotify по меньшей мере.

Реальный мониторинг для такого — оверкилл. Достаточно, чтобы можно было глянуть в лог и убедиться, что всё работает.

и потом, какой ещё скрипт? который ты сам напишешь, тратя на это время, которое мог бы потрать на что-то более полезное?

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

Реальный мониторинг для такого — оверкилл

всякий раз, когда ты подключаешь smb-шару (можно вывести куда-нибудь шорткатом), файлы синхронизируются без необходимости консолей и прочего айтишного шлака. это оверкилл?

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

написание туповатых скриптов не имеет никакого отношения к разминке мозгов

всякий раз, когда ты подключаешь smb-шару (можно вывести куда-нибудь шорткатом), файлы синхронизируются без необходимости консолей и прочего айтишного шлака. это оверкилл?

Где тут мониторинг?

написание туповатых скриптов не имеет никакого отношения к разминке мозгов

Для кого как. Для меня, как и любого другого непрограммиста, вполне имеет.

Все бы сок, да один файл он почему-то постоянно перезаписывает (хотя он есть и там и там), запускаю вот так

Синхронизация папок с помощью bash и rsync

Bash скрипт, позволяющий делать простую одностороннюю синхронизацию папок. Можно использовать для бэкапа файлов на съёмный носитель и вообще для синхронизации любых папок на компьютере.

Производить синхронизацию будем с помощью rsync.

Собственно, вот весь скрипт:

Что оно делает

Скрипт в бесконечном цикле выполняет синхронизацию двух папок и имеет следующий синтаксис:

Изменения папки /source/dir/ применяются к папке /destination/dir/dir — переименование файлов, удаление, перемещение и т.п.

Как это работает

Разберём весь скрипт по порядку.

Прежде всего нас интересуют вот эти строчки:

В первой строке мы указываем путь к интерпретатору. Это стандартное начало для bash скриптов.

В следующих двух строчках вводим переменные syncfrom и syncto. Это будут наши параметры, которые мы будем указывать уже при запуске скрипта.

syncfrom будет содержать путь к исходной папке, а syncto путь к папке, в которую будет производиться копирование.

Читать еще:  Филипс синхронизация контактов с компьютером

Присваиваем им соотвестственно $1 и $2, что означает, что следующая команда запишет путь /source/dir/ в значение переменной syncfrom и путь /destination/dir/ в значение syncto:

Цифры 1 и 2 означают порядковый номер параметра. Если бы я указал 0, то это было бы название скрипта.

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

Здесь параметр -aP означает, что rsync будет действовать рекурсивно и выводить лог синхронизации в терминал.

—delete разрешает удаление, если файлы/папки были удалены из исходной папки. Если вам это не нужно, просто не указывайте этот параметр.

$syncfrom и $syncto это, как уже выше было сказано, пути к папкам.

Если вам надо, чтобы какие-то файлы не попадали в синхронизацию, можно настроить исключения. Делается это следующим образом — нужно указать параметры —exclude:

В этом примере исключаются файлы desktop.ini и все файлы с расширением .tmp.

В том же цикле, что и rsync вызывается команда sleep со значением 2. Это пауза в две секунды. Она тут ради экономии ресурсов компьютера, чтобы не проводить синхронизацию много тысяч раз в секунду. Раз в две секунды для наших целей вполне достаточно.

Если файл не успеет скопироваться за две секунды, то его копирование будет продолжено на следующей итерации и в итоге он будет записан целиком.

Так как в параметрах к rsync есть параметр —delete у нас появляется потенциальная угроза потерять данные в случае банальной опечатки или указания пустой директории как исходной.

Для того, чтобы синхронизация не началась с пустой или несуществующей папкой нужно написать обработчики. За это отвечают строки:

Строка c if проверяет существует ли указанная исходная папка и возвращает сообщение об ошибке, если результат ложь.

elif проверяет не пустая ли папка и сообщает, если это так.

Если оба условия выполнились, то синхронизация начинается.

! Важно. Так как проверка условий происходит до запуска цикла, то синхронизация продолжится если файлы будут удалены после запуска скрипта. Т.е. в сценарии, когда папка оказалась пустой, с уже выполняющейся синхронизацией, это приведёт к удалению файлов в папке назначения.

Как использовать

Положите файл sync.sh в любое удобное место и дайте ему права на выполнение:

Далее выполните скрипт с указанием параметров:

где /source/dir/ это путь к исходной папке, а /destination/dir/ путь к папке назначения.

Rsync

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

Однако следует отметить, что rsync позволяет очень легко случайно перезаписать ваши файлы. Поэтому мы рекомендуем перепроверить все перед синхронизацией или с помощью параметра –dry-run.

ТИПИЧНЫЙ ФОРМАТ

Типичный формат rsync не очень пугающий

ПАРАМЕТРЫ

Вот список основных опций rsync для начала работы.

-aрекурсивное копирование файлов и сохранение прав собственности на файлы при копировании файлов
–dry-runзапускает пробный запуск команды; не вносит никаких реальных изменений
–deleteудалить все посторонние файлы из каталога назначения
-eскажите rsync, какую оболочку использовать
-Exclude =»*. fileType »исключить все файлы определенного типа. Замените fileType фактическим типом файла, который следует исключить
-hотобразить помощь rsync
-progressпоказывает ход передачи во время выполнения команды
-qзапускает тихую версию команды; все запущенные процессы будут выполняться в фоновом режиме и не будут отображаться
-vзапускает подробную версию команды; все запущенные процессы будут записаны для чтения пользователем
-zсжать данные синхронизированы

НЮАНСЫ RSYNC

Rsync не лишен своих нюансов. Вот некоторые вещи, которые следует помнить при использовании rsync.

ОБЪЕДИНЕНИЕ ПАРАМЕТРОВ В КОМАНДАХ

Если используется несколько опций с дефисом (-), они могут быть объединены в один набор опций, который имеет только один дефис. Например, -avh будет вызывать опции -a , -v и -h.

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector