Копирование файлов с помощью утилиты Rsync. Основные ключи для Rsync

Автор: Mariia Kholodnitska 04.03.2020 2 992 на прочтение 8 минут

Rsync (Remote Sync, удаленная синхронизация) - является одной из часто используемой  утилитой для осуществления копирования данных между системами Linux/Unix (для ОС Windows есть cwRsync) в сети. Утилита Rsync имеет возможность копировать и синхронизировать файлы локально, а также  с локальной машины на удаленную и наоборот. 

Перед началом работы нужно убедиться , что утилита Rsync установлена как на удаленной, так и на локальной системе. Если Rsync еще не установлен, установить его можно легко через диспетчер пакетов вашего дистрибутива. Также если передача будет идти через протокол SSH, нужно чтобы был настроен SSH доступ. Соответствующий пользователь должен иметь права на чтение и запись файлов.

Для Rsync можно выделить основные преимущества и отличия как инструмента переноса данных: 

  1. Передает только измененные файлы. Если вы копируете папку в иное место (например, другой сервер), а позднее проделаете изменения в некоторых файлах с этой папки и попытаетесь снова скопировать эту папку, Rsync обработает только файлы которые были модифицированные. Это действие основано на использовании утилитой Rsync специального алгоритма дельта-переноса, в то время как SCP выполняет стандартное линейное копирование.
  2. Если в процессе копирования данных случился сбой, Вы можете вбить в терминал  снова ту же команду и копирование возобновится с того места на котором произошел сбой.
  3. Обилие ключей. Предоставляет широкий спектр возможностей. В том числе и для фильтрации отправленной информации (можно включить, исключить определенные файлы, ограничить их размер и т.д).
  4. Оптимальный вариант при выполнении повторяющихся задач, например таких как cron.В таких процессах Rsync знатно экономит ресурсы и имеет хорошую скорость обработки.

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

- копирование данных с локального сервера на удаленный:

rsync ключи исходный_каталог пользователь@хост:/каталог_назначения

Где:

  • исходный_каталог -файл или путь к каталогу, который нужно скопировать;
  • пользователь - имя пользователя на удаленном сервере;
  • хост  - IP адрес или хост удаленного сервера;
  • каталог_назначения - путь к месту, куда будет выполняться копирование.

- копирование данных с удаленного сервера на локальный:

rsync ключи пользователь@хост:/исходный_каталог каталог_назначения

rsync2

-копирование данных в пределах одного сервера:

   rsync ключи исходный_каталог каталог_назначения

rsync4

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

Рассмотрим более подробно на примере: есть два папки test1 и test2, в папке test1 есть 3 файла, а папка test2 пустая. Будем выполнять копирование файлов в пределах одного сервера.

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

rsync -Pva test1/ test2

Где:

  •  test1 - исходный каталог (откуда копируются данные);
  • test2 - каталог, куда будет выполняться копирование;
  • -Pva -это ключи, о ключах поговорим немного попозже в этой статье.

rsync11

Как видим по скриншоте ниже, только содержимое папки test1 скопировалось в папку test2.

copyrsync

Далее пропишем команду без слеша после исходного каталога: 

rsync -Pva test1 test2

rsynccommand

Скопировались папка test1 с тем же названием в папку  test2

15ddd

и со своим наполнением.

17ddsds

Теперь перейдем к ключам для утилиты Rsync. Полный перечень ключей можно получить командой rsync -l

gchnjjskvbhcn

После чего выводится на экран список всех доступных ключей и краткое их описание.Утилита имеет очень много различных опций и вместе с тем разнообразие в настройке выполнения команды, что есть первым большим плюсом утилиты Rsync (например, в сравнении с той самой SCP).

11fsfgsfg

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

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

-v, --verbose - вывод более подробной отладочной информации на экран, что удобно для  мониторинга процесса выполнения команды и отслеживания ошибок и сбоев.

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

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

-p, --perms - отдельная опция, которая отвечает за сохранения прав доступа.

-W, --whole-file - копирование всего исходного файла без проведения алгоритма сравнения измененных файлов. Применяется если на сервере мало свободных ресурсов, или же сервер имеет мало мощностей.

-e, --rsh=COMMAND - для указания rsync, какой протокол использовать, после ключа нужно указать сам протокол, например,  чтобы применить в качестве удаленной оболочки SSH протокол, вводим rsync -e ssh или --rsh=ssh

--progress - для включения отображения на экране хода прогресса по выполнению команды копирования.

-p, --port=PORT - опция для указания порта для протокола. Например, задаем нестандартный порт для SSH,  rsync -ave “ssh -p 2022”.

--max-size - указание максимального допустимого размера передаваемых данных. Например,  --max-size =’2G’.

-z, --compress -сжатие данных при передаче.

-h, --help - для получения помощи.

Команда ГиперХост советует Rsync как универсальный, многофункциональный инструмент копирования данных. 


Mariia Kholodnitska
Статей: 69
Оцените статью:


Спасибо за отзыв
Рейтинг: 5 из 5 Голосов: 4