EUR
european

EUR

usa

USD

Russian Ru
Ex. VAT Ex. VAT 0%

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

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

Info

Зачем нужен флаг -a? Опция -a (архивный режим) это самый распространённый выбор. Она включает рекурсивное копирование и сохраняет основные атрибуты файлов: права доступа, владельца, группу, время изменения и символические ссылки. Поскольку -a уже включает рекурсию, отдельно добавлять -r не нужно.

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

Рассмотрим примеры использования Rsync для копирования файлов и каталогов в удалённое Облачное хранилище от INTROSERV по протоколу SSH.

Info

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

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

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

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

Warning

Правило завершающего слэша (/). Именно здесь чаще всего ошибаются: /folder (без слэша) копирует саму папку. /folder/ (со слэшем) копирует только содержимое папки.

rsync -az --progress /home/user/test.file boxxxx@storage_ip:/remote_folder/

-a – архивный режим: рекурсивное копирование с сохранением атрибутов файлов

-z – сжимает данные при передаче

--progress – показывает прогресс передачи

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

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

/remote_folder/ – это папка на удалённом ресурсе. В нашем примере в Облачном хранилище INTROSERV.

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

rsync -az --progress /home/user/Desktop/test.file boxxxx@storage_ip:/remote_folder/

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

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

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

rsync -az --progress /home/user/Desktop boxxxx@storage_ip:/remote_folder/

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

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

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

rsync -az --progress /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/

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

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

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

rsync -az --progress boxxxx@storage_ip:/remote_folder /home/user/Desktop/

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

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

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

rsync -az --progress boxxxx@storage_ip:/remote_folder/ /home/user/Desktop/

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

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

Tip

Проверьте командой вхолостую (dry run). Перед запуском команды, которая изменяет или удаляет много файлов, добавьте флаг -n или --dry-run. Rsync покажет, что именно он сделает, не перемещая и не удаляя ничего на самом деле.

rsync -az --progress --include='test.file' --exclude='*' /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/

Эта команда передаёт test.file и исключает всё остальное в исходном каталоге. Именно правило --exclude='*' ограничивает передачу единственным включённым файлом, поэтому здесь обе опции нужны вместе.

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

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

rsync -azc --progress /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/

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

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

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

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

rsync -azc --progress -e 'ssh -p 44' /home/user/Desktop/ user@server_ip:/remote_folder/

Info

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

VAT

  • Other

    Ex. VAT

    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

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA