Chastniimastertver.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. Он может намного больше. Если вы хотите изучить его более углубленно, рекомендую почитать официальную документацию по приложению.

rsync

rsync (англ.  remote synchronization ) — программа для UNIX-подобных систем, которая эффективно выполняет синхронизацию файлов и каталогов в двух местах (необязательно локальных) с минимизированием трафика, используя кодирование данных при необходимости. Важным отличием rsync от многих других программ/протоколов является то, что зеркалирование осуществляется одним потоком в каждом направлении (а не по одному или несколько потоков на каждый файл). rsync может копировать или отображать содержимое каталога и копировать файлы, опционально используя сжатие и рекурсию. rsync передаёт только изменения файлов, что отражается на производительности программы.

Выпущен под лицензией GNU GPL.

Содержание

Синтаксис [ править | править код ]

Подобно rcp и scp, rsync требует указания источника и назначения; любой из них может быть удалённым, но не оба одновременно.

rsync [OPTION] … SRC … [USER@]HOST:DEST

rsync [OPTION] … [USER@]HOST:SRC [DEST]

где SRC  — это файл или каталог (или список из нескольких файлов и каталогов) для копирования, DEST  — файл или каталог для копирования, а квадратные скобки указывают необязательные параметры.

Читайте так же:
1с розница установка системы налогообложения

Демон [ править | править код ]

rsyncd — демон, реализующий протокол rsync. По умолчанию использует TCP-порт 873.

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

—daemon  — запустить rsync как демон, —address=ADDRESS  — связаться с определённым адресом, —config=FILE  — определить конфигурацию rsyncd »rsyncd.conf», —port=PORT  — указать порт подключения, —log-file=FILE  — переписать настройки логирования («log file»), —sockopts=OPTIONS  — указать TCP параметры, -h, —help  — посмотреть дополнительные опции (если указать после флага —daemon ).

Примеры [ править | править код ]

  1. rsync -arv somedirectory otherplace  — сохранить все атрибуты, синхронизировать рекурсивно, «богатый» вывод.
  2. rsync -arv local/directory user@remote.server.address:/remote/directory/  — копирование из локального каталога в удалённый.
  3. rsync -arv user@remote.server.address:/remote/data local/directory/  — копирование из удалённого каталога в локальный.
  4. rsync -arv —progress user@remote.server.address:/remote/data local/directory/  — показать прогресс в процентах для каждого файла.
  5. rsync -arv —exclude= <"*.jpg", "*.png">user@remote.server.address:/remote/data local/directory/  — исключить все файлы с расширением .jpg и .png.
  6. rsync -arv —delete user@remote.server.address:/remote/data local/directory/  — удалить файлы в каталоге назначения, если в каталоге-источнике больше таких файлов нет.

Некоторые дополнительные функции rsync [ править | править код ]

  • поддержка копирования ссылок, устройств, владельцев, групп и разрешений;
  • exclude и exclude-from опции, похожие на GNU tar;
  • режим исключения CVS для игнорирования тех же файлов, которые CVS игнорировал бы;
  • может использовать любую прозрачную удаленную оболочку, включая ssh или rsh;
  • не требует привилегий суперпользователя;
  • конвейерная передача файлов для минимизации затрат времени;
  • поддержка анонимных или аутентифицированных демонов rsync (идеально подходит для зеркалирования).

Алгоритм [ править | править код ]

Утилита rsync использует алгоритм, разработанный австралийским программистом Эндрю Триджеллом для эффективной передачи структур (например, файлов) по коммуникационным соединениям в том случае, когда принимающий компьютер уже имеет отличающуюся версию этой структуры.

Принимающий компьютер разделяет свою копию файла на неперекрывающиеся куски фиксированного размера S и вычисляет контрольную сумму для каждого куска: MD4-хеш и более слабый кольцевой хеш, и отправляет их серверу, с которым синхронизируется.

Сервер, с которым синхронизируются, вычисляет контрольные суммы для каждого кусочка размера S в своей версии файла, в том числе перекрывающиеся куски. Вычисления производятся эффективно ввиду особого свойства кольцевого хеша: если кольцевой хеш байт от n до n + S1 равняется R, то кольцевой хеш байт от n + 1 до n + S может быть посчитан, исходя из R, байта n и байта n + S без необходимости учитывать байты, лежащие внутри этого интервала. Таким образом, если уже подсчитан кольцевой хеш байт 1—25, то для подсчета кольцевого хеша байт 2—26 используется предыдущее значение и байты 1 и 26.

Применение [ править | править код ]

rsync была создана как замена для rcp и scp. Одним из первых применений rsync стало зеркалирование или резервное копирование клиентских Unix-систем на центральный Unix-сервер с использованием rsync/ssh и обычной учетной записи Unix. С планировщиком задач, таким как cron, возможно организовать автоматизированное основанное на rsync зеркалирование по защищенному криптографически каналу между многими компьютерами и центральным сервером.

Утилита rsync, синхронизация файлов в Linux

Rsync, что означает «remote sync«, в переводе “удаленная синхронизация” — средство синхронизации удаленных и локальных файлов. Утилита использует алгоритм, минимизирующий объем копируемых данных за счёт перемещения только тех участков файлов, которые были изменены. В данном руководстве мы рассмотрим основы использования этой мощной утилиты. В примерах используется Ubuntu 12.04 VPS, но вы можете работать в любом современном дистрибутиве Linux.

Что такое Rsync?

Rsync — очень гибкий инструмент сетевой синхронизации. Это название может также означать сетевой протокол, созданный для его работы. В данном руководстве под rsync мы будем понимать утилиту, а не протокол. Благодаря своей повсеместной распространенности в Linux и Unix-подобных системах и популярности в качестве инструмента для системных скриптов, rsync по умолчанию включена в большинство дистрибутивов Linux.

Опции rsync

  • -v — Выводить подробную информацию о процессе копирования
  • -q — Минимум информации
  • -c — Проверка контрольных сумм для файлов
  • -a — Режим архивирования
  • -R — относительные пути
  • -b — создание резервной копии
  • -u — не перезаписывать более новые файлы
  • -l — копировать символьные ссылки
  • -L — копировать содержимое ссылок
  • -H — копировать жесткие ссылки
  • -p — сохранять права для файлов
  • -g — сохранять группу
  • -t — сохранять время модификации
  • -x — работать только в этой файловой системе
  • -e — использовать другой порт для ssh пример rsync -e «ssh -p 1234»
  • -z — сжимать файлы перед передачей
  • —delete — удалять файлы которых нет в источнике
  • —exclude — исключить файлы по шаблону
  • -r —recursive — перебирать директории рекурсивно
  • —no-recursive — отключить рекурсию
  • —progress — выводить прогресс передачи файла
  • —stat — показать статистику передачи
  • —version — версия утилиты

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

Базовый синтаксис rsync очень прост и аналогичен ssh, scp и cp. Дли синхронизации содержимого директории dir1 в dir2 на той же системе введите команду:

Опция -r означает рекурсивную синхронизацию и обязательна для синхронизации директорий.

Вместо нее можно было воспользоваться флагом -a:

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

Важное замечание: В конце первого аргумента в рассмотренных выше командах указан слэш (/):

Он нужен для того, чтобы определить аргумент как “содержимое dir1”. Без слэша в dir2 была бы помещена сама директория со всеми файлами внутри:

Всегда внимательно проверяйте аргументы при выполнении команды rsync. Специально для этого существуют опции -n или —dry-run (тестовый прогон без фактической синхронизации). Флаг -v (verbose, подробная информация) также полезен для полноценного просмотра выходных данных:

Удалим слэш в конце аргумента и сравним результаты:

Видно, что была передана сама директория.

Использование rsync для синхронизации с удаленной системой

Если у вас есть SSH-доступ к удаленной машине, а rsync установлена на обеих компьютерах, синхронизация с удаленной системой элементарна. После подтверждения SSH-доступа можно синхронизировать директорию dir1 с удаленным компьютером, выполнив следующую команду (обратите внимание, что в данном случае нам нужно передать саму директорию, поэтому слэш в конце не указываем):

Такая операция называется «push» (“толчок”), потому что директория “толкается” из локальной системы в удаленную. Противоположная операция — “pull” (“извлечение”), она применяется для синхронизации с удаленной системы в локальную. Если бы директория dir1 была в удаленной системе, синтаксис был бы следующим:

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

Для автоматического копирования, например по cron. Необходимо настроить авторизацию по ключу, как это сделать читайте в этой статье. Тогда в cron достаточно будет добавить выше указанные команды и настроить время в которое они должны выполняться.

Полезные опции

У rsync есть множество опций, которые изменяют заданное по умолчанию функционирование. Мы уже рассмотрели некоторые из них выше. Если вы передаёте несжатые файлы, например, текстовые, можно снизить объем сетевого трафика при помощи опции -z, которая выполняет компрессию:

Очень полезной опцией является -P: она объединяет флаги —progress и —partial. Первый из них показывает ход выполнения передачи, а второй позволяет возобновлять прерванные передачи:

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

Если обновить время модификации некоторых файлов, rsync скопирует только их:

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

Это можно изменить при помощи опции —delete. Прежде чем воспользоваться ей, проведите тестирование с опцией -n, чтобы исключить потерю данных.

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

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

Наконец, опция —backup может использоваться для сохранения резервных копий важных файлов. Она используется совместно с опцией —backup-dir, которая указывает директорию для сохранения резервных копий.

Заключение

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

Владение rsync позволяет выполнять сложные операции резервного копирования и точно контролировать, что и как передаётся.

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

Как синхронизировать файлы с вашей учетной записью OneDrive в Ubuntu 14.04

В июне 2014 года Microsoft увеличила объем хранилища, который вы получаете с бесплатной учетной записью OneDrive, с 7 ГБ до 15 ГБ. Теперь, когда у вас есть бесплатное онлайн-хранилище, почему бы не использовать его? Вы говорите, что я использую Ubuntu, а не Windows. Не волнуйтесь. Выход есть.

Решение — установить инструмент под названием «OneDrive-D». Этот инструмент бесплатный, но его нет в программном центре Ubuntu. Мы покажем вам, как установить OneDrive-D и использовать его для подключения к вашей учетной записи OneDrive и синхронизации вашего контента.

ПРИМЕЧАНИЕ. Когда мы говорим ввести что-то в этой статье, а текст заключен в кавычки, НЕ вводите кавычки, если мы не укажем иное.

Первый шаг — это скачать программу с GitHub . Откройте диспетчер файлов и перейдите в каталог, в который вы загрузили файл. Чтобы извлечь содержимое файла .zip, щелкните файл правой кнопкой мыши и выберите «Извлечь сюда».

Откройте извлеченную папку «onedrive-d-master».

В папке onedrive-d-master вы найдете сценарий установки, который будет обрабатывать установку программы и необходимых зависимостей. Для запуска этого скрипта мы будем использовать Терминал.

Нажмите Ctrl + Alt + T, чтобы открыть окно терминала. В командной строке перейдите в каталог onedrive-d-master. Если вам нужна помощь в смене каталогов, прочтите нашу статью о с помощью терминала Linux .

Чтобы установить OneDrive-D, введите в командной строке следующую команду и нажмите «Enter».

При появлении запроса введите пароль и нажмите «Enter».

Отображается ход установки, а затем отображается сообщение о том, сколько места на диске будет использовано. Когда вас спросят, хотите ли вы продолжить, введите «Y» и нажмите Enter.

По завершении установки откроется диалоговое окно «Параметры» OneDrive-D. Сначала вам нужно будет подключиться к своей учетной записи OneDrive. Для этого нажмите «Подключиться к OneDrive.com».

ПРИМЕЧАНИЕ. Оставьте окно терминала открытым. Мы будем использовать снова позже в этой статье.

В диалоговом окне «Подключиться к OneDrive.com» введите свой адрес электронной почты и пароль Microsoft и нажмите «Войти».

В другом диалоговом окне отображается сообщение о том, что OneDrive-D требуется разрешение на доступ к вашей информации OneDrive. Чтобы продолжить, нажмите «Да».

Над кнопкой «Подключиться к OneDrive.com» отображается сообщение, указывающее, что вы подключились к своей учетной записи OneDrive.

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

Создав каталог для содержимого OneDrive, щелкните раскрывающийся список «Местоположение» и выберите «Другое…».

В диалоговом окне «Выберите локальную папку OneDrive» перейдите в каталог, который вы создали для содержимого OneDrive, и нажмите «Открыть».

ПРИМЕЧАНИЕ. Если вам нужно создать новую папку, используйте кнопку «Создать папку».

По умолчанию в разделе «Исключения» установлены все флажки для типов файлов, которые нужно исключить при синхронизации. Если вы не хотите исключать определенные типы, снимите соответствующие флажки. Когда вы закончите выбирать настройки, нажмите «ОК».

Отображается сообщение об успешном сохранении ваших предпочтений. Нажмите «ОК», чтобы закрыть диалоговое окно.

Вы вернетесь в диалоговое окно «Настройки». Нажмите «Закрыть».

Теперь вы должны указать OneDrive-D выполнить синхронизацию с OneDrive, чтобы поместить ваш контент в указанный вами каталог. Для этого вернитесь в открытое окно Терминала, введите в командной строке следующую команду и нажмите «Enter».

Начнется процесс синхронизации, и прогресс отобразится в окне Терминала.

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

Когда синхронизация завершена, OneDrive-D устанавливает «часы». Это позволяет OneDrive-D синхронизироваться в режиме реального времени, когда вы вносите изменения в файлы в синхронизированном каталоге или добавляете файлы или удаляете файлы из каталога.

Чтобы часы продолжали работать, вы должны оставить окно Терминала открытым. Если закрыть окно терминала, отобразится следующее сообщение. Если вы действительно хотите завершить процесс наблюдения, нажмите «Закрыть терминал». В противном случае нажмите «Отмена», чтобы продолжить работу часов.

Если вы вносите изменения в содержимое OneDrive на нескольких компьютерах или других устройствах, например на телефоне или планшете, вы можете захотеть автоматически синхронизировать свой контент при загрузке компьютера с Ubuntu. Сделать это, добавить OneDrive-D в запускаемые приложения . У вас должен быть элемент, похожий на элемент OneDrive Sync на изображении ниже. Убедитесь, что он установлен, и нажмите «Закрыть».

Вы также можете добавить ярлык на рабочий стол так что вы можете быстро запустить OneDrive-D для синхронизации содержимого OneDrive, если вы не добавляли программу в автозагрузку или если вы просто хотите снова выполнить синхронизацию, все еще находясь в сеансе.

ПРИМЕЧАНИЕ. Ссылка на статью о добавлении ярлыков на рабочий стол относится к Ubuntu 11.04 и 11.10. Однако в Ubuntu 14.04 этот процесс все еще работает.

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

Когда вы используете ярлык для запуска OneDrive-D и синхронизации содержимого OneDrive, программа продолжает работать в фоновом режиме. Если вы не хотите, чтобы он продолжал работать, вы можете использовать команды «ps» и «kill», чтобы остановить процесс. Смотрите нашу статью о управление процессами из Терминала Linux для информации о процессах уничтожения.

Как синхронизировать две папки с помощью инструментов командной строки?

Перейдя на Linux из Windows, я хотел бы найти альтернативное программное обеспечение для Winmerge или, скорее, изучить инструменты командной строки для сравнения и синхронизации двух папок в Linux. Я был бы признателен, если бы вы сказали мне, как выполнять следующие задачи в командной строке . (Я изучал diff и rsync, но мне все еще нужна помощь.)

У нас есть две папки: «/ home / user / A» и «/ home / user / B»

Папка A — это место, где хранятся обычные файлы и папки, а папка B — это папка резервной копии, которая служит полным зеркалом папки A. (Пользователь ничего не сохраняет и не изменяет непосредственно в папке B.)

Как перечислить файлы, которые существуют только в папке B? (Например, те, которые были удалены из папки A с момента последней синхронизации.)

Как скопировать файлы, которые существуют только в папке B, обратно в папку A?

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

Как сделать точную копию папки A в папку B? Я имею в виду, скопируйте все из папки A в папку B, которая существует только в папке A, и удалите все из папки B, которая существует только в папке B, но не касаясь файлов, которые являются одинаковыми в обеих папках.

Это помещает папку A в папку B:

Если вы хотите, чтобы содержимое папок A и B было одинаковым, поместите /home/user/A/ (с косой чертой) в качестве источника. Это берет не папку A, а все ее содержимое и помещает ее в папку B. Вот так:

  • -a Выполните синхронизацию, сохранив все атрибуты файловой системы
  • -v бегать многословно
  • -u копировать только файлы с более новым временем модификации (или разницей в размере, если времена равны)
  • —delete удалить файлы в целевой папке, которые не существуют в источнике

Вы могли бы unison инструмент, разработанный Бенджамином Пирсом в U Penn.

Допустим, у вас есть два каталога,

/home/user/Documents/dirA/ а также /home/user/Documents/dirB/

Для синхронизации этих двух вы можете использовать:

$ unison -ui text /home/user/Documents/dirA/ /home/user/Documents/dirB/

В выходных данных unison будет отображаться каждый каталог и файл, которые отличаются в двух каталогах, которые вы просили синхронизировать. Он будет рекомендовать аддитивную синхронизацию (реплицировать отсутствующий файл в обоих местах) при первом запуске, затем создать и поддерживать дерево синхронизации на вашем компьютере, а при последующих запусках будет реализована истинная синхронизация (т. Е. Если вы удалите файл из . /dirA него, также будет удален из . /dirB . Вы также можете сравнить каждое изменение и, при желании, выбрать прямую или обратную синхронизацию между двумя каталогами.

При желании, чтобы запустить графический интерфейс, просто удалите -ui text опцию из вашей команды, хотя я считаю, что cli проще и быстрее в использовании.

Ответ от TuxForLife довольно хороший, но я настоятельно рекомендую вам использовать его -c при локальной синхронизации. Вы можете утверждать, что не стоит тратить время / сеть на удаленную синхронизацию, но это стоит того для локальных файлов, потому что скорость очень велика.

Это показывает, как наличие одинаковых размеров и временных меток может вас подвести.

Настройка

Rsync, который ничего не копирует, потому что все файлы имеют одинаковый размер и временную метку

Rsync, который работает правильно, потому что он сравнивает контрольные суммы

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

-r, —recursive Указывает
rsync рекурсивно копировать каталоги.

-t, —times
Это указывает rsync передавать время модификации вместе с файлами и обновлять их в удаленной системе.

-u, —update
Это заставляет rsync пропускать любые файлы, которые существуют в месте назначения и имеют измененное время, которое является более новым, чем исходный файл. (Если существующий конечный файл имеет время модификации, равное времени исходного файла, оно будет обновлено, если размеры будут другими.)

—delete
Это говорит rsync об удалении посторонних файлов с принимающей стороны (тех, которые не на отправляющей стороне), но только для каталогов, которые синхронизируются.

—info = FLAGS
Эта опция позволяет вам детально контролировать вывод информации, которую вы хотите увидеть.

Из rsync —info=help

Хотя это и менее очевидно, но это выглядит эквивалентно и короче:

-v, —verbose
Один -v даст вам информацию о том, какие файлы передаются, и краткую сводку в конце [stats1].

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