Content
- Подробнее о Rsync
- Возможности утилиты
- Краткое объяснение синтаксиса
- Копирование одного файла в папку на удаленном хранилище
- Копирование папки в папку на удаленном хранилище
- Копирование содержимого локальной папки в папку на удаленном хранилище
- Копирование папки с удаленного хранилища в папку локального сервера
- Копирование содержимого папки из удаленного хранилища в папку локального сервера
- Копирование содержимого папки, исключая и/или включая файлы
- Копировать только те файлы, которые отличаются от файлов в папке назначения
- Использование Rsync через SSH с нестандартным портом SSH
Копирование и резервное копирование файлов и папок с помощью утилиты Rsync
Подробнее о Rsync
Rsync - это быстрый и универсальный инструмент для копирования файлов и папок. Утилита может копировать данные как локально, так и на другие хосты, включая облачные хранилища Introserv.
Опции утилиты позволяют управлять многими аспектами копирования и зеркалирования данных.
Одной из главных особенностей является возможность сжатия данных при отправке, что позволяет ускорить процесс копирования между серверами.
Еще одно преимущество - исключение при копировании одинаковых файлов. Таким образом, копироваться или передаваться будут только разные файлы, что, несомненно, сэкономит время синхронизации больших каталогов.
Возможности утилиты
Рассмотрим примеры использования Rsync для копирования файлов и каталогов на удаленное облачное хранилище 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 -azrс --progress /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/
Вы видите, что в удаленную папку было скопировано только 3 файла, за исключением файла test.odt, который уже находится на удаленном хранилище:
Использование Rsync через SSH с нестандартным портом SSH
Чтобы передать файлы с/на сервер с измененным портом SSH, используйте опцию -e 'ssh -p port_number' .
Команда для копирования файла на сервер, на котором порт SSH изменен на 44, будет выглядеть следующим образом:
rsync -azrс --progress -e 'ssh -p44' /home/user/Desktop/ user@server_ip:/remote_folder/