Копирование и резервное копирование файлов и папок с помощью утилиты Rsync

Rsync — это быстрый и универсальный инструмент для копирования файлов и папок. Утилита может копировать данные как локально, так и на другие хосты, включая Cloud Storage от Introserv. Опции утилиты позволяют контролировать многие аспекты копирования и зеркалирования данных. Одной из главных особенностей является возможность сжатия данных при отправке, что позволяет ускорить процесс копирования между серверами. Ещё одно преимущество — пропуск идентичных файлов при копировании. Поэтому копироваться или передаваться будут только отличающиеся файлы, что, несомненно, сэкономит время при синхронизации больших каталогов.

Опции утилиты

Рассмотрим примеры использования Rsync для копирования файлов и каталогов в удалённое Cloud Storage от Introserv по протоколу SSH. Важно! Аналогичные команды с указанием целевого сервера позволят копировать каталоги и файлы на любой удалённый сервер по SSH.

Рассмотрим некоторые основные опции утилиты, которые будут использоваться чаще всего. Более подробный список доступных опций можно найти в документации man (команда man rsync):

-v – вывод подробной информации о процессе
-c – проверка контрольных сумм файлов
-q – минимум информации
-a – режим архивирования
-R – относительные пути
-y – не перезаписывать более новые файлы
-b – создание резервной копии
-l – копирование символических ссылок
-L – копирование содержимого ссылок
-H – копирование жёстких ссылок
-g – сохранение группы
-p – сохранение прав доступа к файлам
-t – сохранение времени модификации
-x – работа только в данной файловой системе
-e – использование другого транспортного протокола (например, ssh)
-z – сжатие файлов перед передачей
--delete – удаление файлов, отсутствующих в источнике
--exclude – исключение файлов
--recursive – рекурсивный обход каталогов
--no-recursive – отключение рекурсии
--progress – отображение прогресса передачи файлов
--stat – отображение статистики передачи
--max-size – максимальный размер файла для передачи
--bwlimit – ограничение скорости передачи файлов

Краткое объяснение синтаксиса

rsync -az --progress /home/user/test.file boxxxx@boxxxxx.introserv.cloud:/remote_folder/

-az --progress – опции, указывающие, что необходимо архивировать передаваемый файл, сжать его перед передачей, а также отобразить прогресс копирования на экране

/home/user/test.file – путь к файлу и сам файл, который необходимо передать

boxxxx@boxxxxx.introserv.cloud: – ресурс назначения (в нашем примере это облачное хранилище, но это также может быть удалённый сервер). boxxxx — имя пользователя, после знака @ указывается имя ресурса или IP-адрес удалённого сервера

/remote_folder/ – папка на удалённом ресурсе. В нашем примере — в Introserv Cloud Storage.

Копирование одного файла в папку на удалённом хранилище

rsync -az --progress /home/user/Desktop/test.file boxxxxx@boxxxxx.introserv.cloud:/remote_folder/

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

Копирование папки в папку на удалённом хранилище

Обратите внимание на слеши в строках исходной папки и папки назначения. Отсутствие слеша в исходной папке означает, что мы хотим рекурсивно перенести локальную папку Desktop со всем её содержимым в папку remote_folder.

rsync -azr --progress /home/user/Desktop boxxxx@boxxxx.introserv.cloud:/remote_folder/

Вы увидите каталог и все файлы внутри него в процессе передачи.

Копирование содержимого локальной папки в папку на удалённом хранилище

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

rsync -avzr --progress /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/

Вы увидите прогресс и скорость копирования.

Копирование папки с удалённого хранилища в папку на локальном сервере

С помощью Rsync можно инициировать копирование папки с удалённого хранилища. Команда выглядит следующим образом:

rsync -zra --progress boxxxxx@boxxxxx.introserv.cloud:/remote_folder /home/user/Desktop/

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

Копирование содержимого папки с удалённого хранилища в папку на локальном сервере

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

rsync -zra --progress boxxxxx@boxxxxx.introserv.cloud:/remote_folder/ /home/user/Desktop/

Копирование содержимого папки с исключением и/или включением файлов

Утилита позволяет явно указать, какие файлы следует передавать, а какие должны быть исключены. Для этого используются опции --include и --exclude.

rsync -azr --progress --include 'test.file' --exclude 'test.file2' /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/

Вы увидите, что был передан только один файл, указанный в опции --include. Обратите внимание, что опции include и exclude могут использоваться отдельно друг от друга.

Копирование только файлов, отличающихся от файлов в папке назначения

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

rsync -azrc --progress /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/

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

Использование Rsync по SSH с нестандартным портом SSH

Для передачи файлов с/на сервер с изменённым портом SSH используйте опцию -e 'ssh -p номер_порта'.

Команда для копирования файла на сервер, на котором порт SSH изменён на 44, будет выглядеть следующим образом:

rsync -azrc --progress -e 'ssh -p44' /home/user/Desktop/ user@server_ip:/remote_folder/

VAT

  • Other

    Other

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    %
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • Other
  • canada
  • poland
  • european-union
  • france
  • germany
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria
  • austria