Linux как синхронизировать каталоги

Rsync: копирование и синхронизация файлов с удаленным сервером

Утилиту Rsync можно использовать для копирования и синхронизации файлов и папок с локального сервера Linux на удаленный и наоборот. Rsync позволяет копировать ваши данные между серверами внутри защищенного SSH соединения. Так же, rsync, поддерживает сжатие данных на лету, что повышает производительность системы.

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

В данной статье мы рассмотрим варианты использования rsync для синхронизации и копирования каталогов и файлов, и приведем примеры его расширенных настроек.

Установка и основные параметр rsync

Установка rsync не отличается от установки, любого другого пакета. В CentOS пакет rsync присутствует в базовом репозитории и устанавливается через yum (или dnf в CentOS 8):

# yum install rsync -y

Синтаксис команды выглядит следующим образом:

# rsync опции источник приемник

В качестве источника и приемника можно указать локальную или удаленную директорию на другом сервере.

  • -v – вывести подробную информацию о процессе
  • -c – проверка контрольных сумм файлов
  • -q – минимальная информация

Rsync: локальное копирование/синхронизация каталогов

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

# rsync /var/www/html/package.zip /var/www/tmp/

В этом случае файл package.zip был просто скопирован в директорию /var/www/tmp/.

Можно добавить несколько опций для выполнения копирования. Например, чтобы перед выполнением копирования предварительно сжать файл, вывести подробную информацию и прогресс копирования файла, выполните:

# rsync -vz —progress /var/www/html/package.zip /var/www/tmp/

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

# rsync -zvr /var/www/site /backup/

Мы скопировали директорию /var/www/site в директорию для резервных копий, опция -r позволила рекурсивно скопировать все вложенные директории и файлы.

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

# rsync -zvra /var/www/site /backup/

Если вы хотите скопировать только измененные файлы, добавьте опцию -c:

# rsync -zvrac /var/www/site /backup/

Я изменил только один файл и запустил команду. В результате в целевую директорию, был скопирован только измененный файл.

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

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

# rsync -zvrac —delete /var/www/site /backup/

Rsync: настройка синхронизации с удаленным сервером

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

В современных версиях rsync протокол SSH используется для передачи файлов по-умолчанию. Однако вы можете использовать и демон rsyncd. Для этого клиент rsync должен быть установлен на удаленном компьютере, и его демон добавлен в автозагрузку:

# systemctl enable rsyncd

Конфигурационный файл rsync — /etc/rsyncd.conf. В этом файле можно настроить параметры rsync и настройки для синхронизации для разных ресурсов.

Для синхронизации через демона rsync адрес удаленного сервера указывается так rsync://. Например:

# rsync -av /var/www/site/package.zip rsync://192.168.1.32/backup

Чтобы скопировать файл на удаленный сервер, используйте команду:

# rsync -az /var/www/site/package.zip root@IP:/backup/

Где IP, это адрес удаленного сервера. После запуска команды, удаленный сервер запросит пароль пользователя (если включена авторизация по паролю). Для автоматической авотризации нужно настроить SSH ключи.

Скопируем директорию с локального сервера на удаленный:

# rsync -zvra /var/www/site root@IP:/backup/

То есть, все тоже самое, что и с локальными директориями, только мы указываем адрес удаленного сервера.

Так же вы можете синхронизировать файлы и с удаленного сервера на локальный, команда для этого немного изменится:

# rsync -zvra root@IP:/backup/ /backup

Для принудительного использования SSH протокола для копирования файлов, укажите это в вашей команде (для выбора транспортного протокола копирования файлов используется опция –e):

# rsync -zvrae ssh root@IP:/backup/ /backup

Если удаленный SSH сервер имеет отличный от стандартного порт, его так же можно указать:

# rsync -zvrae «ssh -p 2222» root@IP:/backup/ /backup

Другие примеры использования rsync

Если в рамках сессии синхронизации вы передаете много информации и важно ограничить скорость передачи, задайте это дополнительной опцией –bwlimit (указывается скорость в КБ/с):

# rsync -zvra —bwlimit=100 /var/www/site root@IP:/backup/

При передаче файлов на удаленный сервер, вы можете ограничить максимальный размер файлов, которые нужно скопировать. Например, вы хотите скопировать все файлы, кроме файлов размером более 1 Мб:

# rsync -zvra —max-size=’1m’ /var/www/site root@IP:/backup/

Если у вас на сервере нужна односторонняя синхронизация и после переноса файлов на удаленный сервер нужно удалить файлы с исходного сервера, воспользуйтесь опцией —-remove-source-files:

# rsync -zvra —remove-source-files —progress /var/www/site/package.zip root@IP:/backup/

После выполнения команды, файл был скопирован на удаленный сервер и удален на источнике:

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

# rsync -zvra —exclude=administrator/ /var/www/site root@IP:/backup/

В данном случае мы исключили директорию “administrator” при копировании на удаленный сервер.

# rsync -zvra —include=’*.php’ —exclude=’*’ /var/www/site/administrator/ root@IP:/backup/

Добавлением опции —include мы смогли задать фильтр по файлам, скопировали только файлы с расширением php.

Резервное копирование в Linux с помощью rsync

В своей рабое я часть использую rsync для автоматических задач резервного копирования в Linux. Можно написать простые bash скрипты или просто добавить команду rsync в cron и выполнять по расписанию.

Например, можно добавить в cron команду:

01 30 * * * rsync -zvra root@IP:/backup/ /backup

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

Стоит учесть, что для выполнения команды rsync на удаленном сервер через cron, желательно настроить авторизацию серверов по SSH ключу. Примеры скриптов для бэкапа, мы приводили в статье «Скрипты для бэкапа файлов из Linux в облако», там как раз используется rsync для копирования файлов в подключенные облачные хранилища.

Источник

Команда Rsync в Linux с примерами

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

Rsync можно использовать для зеркального отображения данных, инкрементного резервного копирования, копирования файлов между системами, а также в качестве замены команд scp , sftp и cp .

В этой статье объясняется, как использовать rsync на практических примерах и подробных объяснениях наиболее распространенных параметров rsync .

Установка Rsync

Утилита rsync предустановлена в большинстве дистрибутивов Linux и macOS. Если в вашей системе не установлен rsync , вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.

Установите Rsync в Ubuntu и Debian

Установите Rsync на CentOS и Fedora

Синтаксис команды Rsync

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

Выражения утилиты rsync имеют следующую форму:

  • OPTION — параметры rsync .
  • SRC — Исходный каталог.
  • DEST — целевой каталог.
  • USER — удаленное имя пользователя.
  • HOST — удаленное имя хоста или IP-адрес.

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

  • -a , —archive , режим архива, эквивалент -rlptgoD . Этот параметр указывает rsync рекурсивно синхронизировать каталоги, передавать специальные и блочные устройства, сохранять символические ссылки, время модификации, группы, владение и разрешения.
  • -z , —compress . Эта опция заставляет rsync сжимать данные при их отправке на конечный компьютер. Используйте эту опцию, только если подключение к удаленному компьютеру медленное.
  • -P , что эквивалентно —partial —progress . Когда используется эта опция, rsync показывает индикатор выполнения во время передачи и сохраняет частично переданные файлы. Это полезно при передаче больших файлов по медленным или нестабильным сетевым соединениям.
  • —delete . Когда используется эта опция, rsync удаляет посторонние файлы из места назначения. Это полезно для зеркалирования.
  • -q , —quiet . Используйте эту опцию, если вы хотите подавить сообщения, не связанные с ошибками.
  • -e . Эта опция позволяет вам выбрать другую удаленную оболочку. По умолчанию rsync настроен на использование ssh.

Базовое использование Rsync

Самый простой вариант использования rsync — это копирование одного файла из одного в другое локальное расположение. Вот пример:

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

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

Настоящая мощь rsync проявляется в синхронизации каталогов. В приведенном ниже примере показано, как создать локальную резервную копию файлов веб-сайта:

Если целевой каталог не существует, rsync создаст его.

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

Использование rsync для синхронизации данных с / на удаленную машину

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

В следующем примере мы переносим каталог с локального компьютера на удаленный:

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

Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию 22, укажите порт с помощью параметра -e :

При передаче больших объемов данных рекомендуется запускать команду rsync внутри сеанса экрана или использовать параметр -P :

Исключить файлы и каталоги

Есть два варианта исключения файлов и каталогов. Первый вариант — использовать аргумент —exclude и указать файлы и каталоги, которые вы хотите исключить, в командной строке.

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

В следующем примере показано, как исключить node_modules и tmp :

Второй вариант — использовать параметр —exclude-from и указать файлы и каталоги, которые вы хотите исключить из файла.

Выводы

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

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Источник

Синхронизация каталогов с помощью Lsyncd в Linux

В этой статье я объясню, как установить Lsyncd (Live Syncing Mirror Daemon) в системах Linux и как синхронизировать удаленные и локальные каталоги в Linux.

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

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

По умолчанию это только rsync.

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

Lsyncd 2.2.1 требует rsync 3.1 для всех исходных и целевых машин.

Установка Lsyncd на RHEL / CentOS 7

Чтобы включить lsyncd в системе CentOS 7.5, нам нужно включить репозиторий EPEL.

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

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

Настройка Lsyncd

Файл конфигурации Lsyncd создается автоматически в /etc/lsyncd.conf в системе RHEL / CentOS 7.5.

По умолчанию его содержимое выглядит следующим образом:

Мы должны изменить этот файл конфигурации в соответствии с нашей целью.

Как упоминалось в этом файле конфигурации, все примеры сценариев доступны в следующем месте: /usr/share/doc/lsyncd-2.2.2/examples/

Все эти файлы представляют собой файлы конфигурации lsyncd.

Ниже приведены примеры файлов конфигурации:

Пример конфигурации для локальной синхронизации:

Пример конфигурации для удаленной синхронизации:

Чтобы сохранить этот процесс синхронизации вместо запуска задания cron каждые X минут, lsyncd использует хуксы ядра Linux, чтобы получать уведомления, когда какой-либо файл в каталоге был изменен.

По умолчанию он приостанавливает любые команды синхронизации за 20 секунд. мы можем даже изменить этот интервал времени, как требуется, с опцией -delay

Во время использования команды sync default.rsyncssh всегда рекомендуется использовать параметр –delete для предотвращения отсутствия файлов из целевых папок.

После создания или изменения файла конфигурации lsyncd необходимо перезапустить процесс lsyncd.

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

Ниже перечислены некоторые важные параметры rsync:

  • –delete: этот параметр гарантирует, что все файлы в удаленном каталоге, которые не находятся в исходном каталоге, будут удалены.
  • -times: этот параметр довольно важен, если вы будете запускать этот сценарий снова и снова, так как он будет синхронизировать время между двумя файлами.
  • –force: этот параметр позволяет удалить непустой каталог для замены пустым каталогом.
  • -links: эта опция используется для копирования символических ссылок в виде символических ссылок.
  • –progress2: он показывает общий прогресс всей передачи, а не только одного файла, который копируется.
  • -dry-run: этот вариант выполняет пробный запуск без фактических операций с удалением или переносом, но сообщает вам, что он будет делать. Я настоятельно рекомендую использовать эту опцию при первом запуске любой команды rsync после ее написания.
  • –owner: обеспечивает сохранение владельца пользователя файла (а не уровня разрешения для владельца).
  • – group: обеспечивает сохранение группового пользователя файла (а не уровня разрешений для группы).
  • –perms: сохранить разрешения.
  • –sparse: обеспечивает эффективную передачу разреженных файлов изображений.

Синхронизация локальных каталогов

Теперь давайте посмотрим, как синхронизировать две локальные папки с помощью lsyncd.

Мы можем создать исходную папку, а именно SRC_DIR и целевую папку, а именно DEST_DIR, чтобы более подробно объяснить этот процесс.

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

Затем вы можете создать файлы журнала lsyncd и файлы статуса, чтобы отслеживать процесс.

Эти шаги являются необязательными.

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

Теперь нам нужно изменить наш конфигурационный файл lsyncd для выполнения локального rsync.

Как мы обсуждали ранее, файл конфигурации lsyncd по умолчанию для системы CentOS – это /etc/lsyncd.conf.

Нам нужно обновить эти файлы конфигурации с помощью исходных и целевых каталогов и наших файлов журналов.

Вы можете заменить исходный и целевой каталоги на свои собственные значения.

Сохраните и закройте файл конфигурации.

Как только это будет сделано, перезапустите и включите службу lsyncd.

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

Ура! Содержимое исходного каталога SRC_DIR успешно синхронизировано с целевым каталогом.

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

Источник

Читайте также:  Usb to hdmi adapter windows 10
Оцените статью