Синхронизация двух серверов linux

Содержание
  1. Rsync: копирование и синхронизация файлов с удаленным сервером
  2. Установка и основные параметр rsync
  3. Rsync: локальное копирование/синхронизация каталогов
  4. Rsync: настройка синхронизации с удаленным сервером
  5. Другие примеры использования rsync
  6. Резервное копирование в Linux с помощью rsync
  7. 17 полезных примеров команд rsync (удаленная синхронизация) в Linux
  8. 17 полезных примеров команд rsync (удаленная синхронизация) в Linux
  9. Пример: 1) Копирование или синхронизация файлов локально (rsync -zvh)
  10. Пример: 2) Копировать или синхронизировать каталог локально (rsync -zavh)
  11. Локальное рекурсивное копирование файлов и каталогов (rsync -zrvh or rsync -zavh)
  12. Пример: 4) Копирование или синхронизация файлов и каталогов из локальной в удаленную систему.
  13. Пример: 5) Копирование или синхронизация файлов и каталогов с удаленного компьютера в локальную систему.
  14. Пример: 6) Укажите удаленную оболочку во время синхронизации (rsync -e ssh)
  15. Пример: 7) Отображение хода синхронизации в выводе команды rsync
  16. Пример: 8) Скопируйте структуру каталогов без копирования файлов
  17. Пример: 9) Возобновить передачу больших файлов после сбоя в scp
  18. Пример: 10) Удалить файлы в месте назначения, если его нет в источнике (–delete)
  19. Пример: 11) Установите ограничение на размер передаваемого файла (–max-size)
  20. Пример: 12) Не синхронизировать/копировать измененный файл в месте назначения
  21. Пример: 13) Удалить файлы из источника после синхронизации (–remove-source-files)
  22. Пример: 14) Команда rsync пробного запуска перед фактической синхронизацией
  23. Пример: 15) Включить и исключить файлы во время синхронизации с rsync
  24. Пример: 16) Установите ограничение на скорость передачи данных в rsync(–bwlimit= )
  25. Пример: 17) Просмотр разницы в файлах и каталогах между источником и местом назначения

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 для копирования файлов в подключенные облачные хранилища.

Источник

17 полезных примеров команд rsync (удаленная синхронизация) в Linux

17 полезных примеров команд rsync (удаленная синхронизация) в Linux

Как следует из названия, команда rsync используется для локальной и удаленной синхронизации (или копирования) файлов и каталогов. Одной из важных особенностей rsync является то, что он работает по « алгоритму дельта-передачи », что означает, что он будет только синхронизировать или копировать изменения из источника в место назначения вместо копирования всего файла, что в конечном итоге сокращает объем данных, отправляемых по сети. Вундеркинды Linux обычно используют команду rsync для повседневного управления резервным копированием, зеркалированием и восстановлением. Он использует удаленную оболочку, такую ​​как SSH, при синхронизации файлов с локальной машины на удаленную, и любой пользователь в системе может использовать команду rsync, поскольку она не требует прав root или sudo .

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

Команда Rsync доступна для всех операционных систем типа UNIX и Linux. Когда мы выполняем минимальную установку CentOS и RHEL OS, тогда пакет rsync не является частью установки по умолчанию, поэтому для установки rsync на CentOS и RHEL выполните следующую команду yum

В операционных системах Debian Like (Ubuntu и Linux Mint) используйте команду ниже apt для установки инструмента rysnc

Синтаксис команды rsync:

Локальная синхронизация: # rsync

Удаленная синхронизация: # rsync@ :

Удаленная синхронизация: # rsync @ :

Некоторые из наиболее часто используемых параметров команды rsync перечислены ниже:

  • -v, –verbose Подробный вывод
  • -q, –quiet вывод сообщения
  • -a, –archive архивные файлы и каталог во время синхронизации (-a равно следующим параметрам -rlptgoD)
  • -r, –recursive рекурсивная синхронизация файлов и каталогов рекурсивно
  • -b, –backup сделать резервную копию во время синхронизации
  • -u, –update не копировать файлы из источника в место назначения, если файлы назначения новее
  • -l, –links копировать символические ссылки как символические ссылки во время синхронизации
  • -n, –dry-run выполнить пробный запуск без синхронизации
  • -e, –rsh=COMMAND указать удаленную оболочку для использования в rsync
  • -z, –compress сжимать данные файла во время передачи
  • -h, –human-readable человечески понятное отображение выходных чисел в удобочитаемом формате
  • –progress показать прогресс синхронизации во время передачиr

Давайте перейдем к полезным примерам команды rsync

Пример: 1) Копирование или синхронизация файлов локально (rsync -zvh)

Предположим, мы хотим скопировать файл из домашнего каталога пользователя pkumar в папку /opt/back, выполните следующую команду rsync >rsync -zvh /home/pkumar/OpenStack-Networking.pdf /opt/backup
OpenStack-Networking.pdf
sent 4.09M bytes received 35 bytes 2.73M bytes/sec
total size is 6.15M speedup is 1.50
[[email protected]

Выше мы использовали такие параметры, как -z для сжатия, -v для подробного вывода и -h для вывода, удобочитаемого человеком.

Пример: 2) Копировать или синхронизировать каталог локально (rsync -zavh)

Предположим, мы хотим скопировать или синхронизировать домашний каталог пользователя pkumar в папку /opt/backup выполните следующую команду rsync с параметрами -zavh,

Давайте проверим, скопирован ли каталог или нет, выполните команду ниже,

Как мы видим, каталог «pkumar» создается в папке назначения, и его содержимое также копируется. В приведенном выше примере, если использовать trail / после исходной папки(/home/pkumar/) тогда команда rsync не создаст каталог pkumar в месте назначения, а скопирует только содержимое..

Локальное рекурсивное копирование файлов и каталогов (rsync -zrvh or rsync -zavh)

Предположим, у нас есть несколько файлов и каталогов внутри домашнего каталога пользователя pkumar, используйте приведенную ниже команду rsync для рекурсивного копирования файлов и каталогов, либо используйте параметр -a или -r для рекурсивного копирования файлов и каталогов.

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

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

Пример: 4) Копирование или синхронизация файлов и каталогов из локальной в удаленную систему.

Предположим, мы хотим скопировать папку “/home/pkumar/techi” с локальной машины на удаленную (192.168.1.29) /opt

Пример: 5) Копирование или синхронизация файлов и каталогов с удаленного компьютера в локальную систему.

Предположим, мы хотим скопировать файлы и каталоги с удаленного компьютера (192.168.1.29) в нашу локальную систему, в приведенном ниже примере я копирую удаленную папку “/opt/rpms_db” на моем локальном компьютере в папку /tmp

Вышеуказанная команда автоматически создаст папку “rpms_db” в папке /tmp на нашем локальном компьютере

Пример: 6) Укажите удаленную оболочку во время синхронизации (rsync -e ssh)

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

Пример: 7) Отображение хода синхронизации в выводе команды rsync

Если вы хотите видеть прогресс синхронизации или копирования в команде rsync, используйте “–progress“, пример показан ниже.

Пример: 8) Скопируйте структуру каталогов без копирования файлов

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

Предположим, мы хотим скопировать структуру каталогов “/home/pkumar” с локального компьютера на удаленный (192.168.1.29) в папку /opt folder.

Пример: 9) Возобновить передачу больших файлов после сбоя в scp

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

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

Пример: 10) Удалить файлы в месте назначения, если его нет в источнике (–delete)

Если вы уже синхронизировали файлы из источника в место назначения и из источника вы удалили файлы, вы можете заставить команду rsync удалить файлы в месте назначения, используя параметр –delete, пример показан ниже

Пример: 11) Установите ограничение на размер передаваемого файла (–max-size)

Если вы не хотите передавать или копировать большие файлы с помощью rsync, используйте опцию ‘–max-size=, Предположим, мы не хотим передавать файлы, чьи размер больше 500К,

Примечание. Чтобы указать размер в МБ, используйте M, а для ГБ — G

Пример: 12) Не синхронизировать/копировать измененный файл в месте назначения

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

Пример: 13) Удалить файлы из источника после синхронизации (–remove-source-files)

Предположим, вы хотите удалить файлы из источника после завершения синхронизации с помощью команды rsync. В приведенном ниже примере папка из локальной системы “/home/pkumar/techi.tgz” синхронизируется с удаленной системой (192.168.1.29), после завершения синхронизации файл удаляется из источника.

Пример: 14) Команда rsync пробного запуска перед фактической синхронизацией

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

Пример: 15) Включить и исключить файлы во время синхронизации с rsync

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

В приведенном ниже примере вы хотите скопировать файлы типа pdf и rpm и исключить типы файлов png.

Пример: 16) Установите ограничение на скорость передачи данных в rsync(–bwlimit= )

В команде rsync мы можем установить ограничение полосы пропускания для передачи данных с одной машины на другую, используйте параметр‘–bwlimit= ‘ в команде rsync, чтобы установить ограничение на скорость передачи данных.

Предположим, мы хотим установить максимальную скорость передачи данных (скорость) 600 КБ / с с помощью rsync, пример показан ниже.

Пример: 17) Просмотр разницы в файлах и каталогах между источником и местом назначения

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

Согласно вышеприведенному выводу команды, есть разница в файле с именем «projects.txt» в месте назначения. Ниже приведены значения ключевых слов в выводе выше.

  • d: указывает на изменение в файле назначения
  • f: указывает файл
  • t: указывает изменение меток времени
  • s: указывает на изменение размера

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

Источник

Читайте также:  Windows server 2019 луны
Оцените статью