Rsync (Remote Sync) — это наиболее часто используемая команда для удаленного и локального копирования и синхронизации файлов и каталогов в системах Linux/Unix. С помощью команды rsync вы можете удаленно и локально копировать и синхронизировать данные между каталогами, дисками и сетевыми хранилищами, выполнять резервное копирование данных и зеркалирование между двумя компьютерами Linux.
В этой статье описывается 10 основных и дополнительных возможностей использования команды rsync для удаленной и локальной передачи файлов на компьютерах под управлением Linux. Вам не нужно быть root-пользователем для запуска команды rsync.
Некоторые преимущества и особенности команды Rsync:
- Она эффективно копирует и синхронизирует файлы в/или из удаленной системы.
- Поддерживает копирование ссылок, устройств, владельцев, групп и разрешений.
- Это быстрее, чем использование команды scp (Secure Copy), потому что rsync использует протокол удаленного обновления, который позволяет передавать только различия между двумя наборами файлов. В первый раз он копирует все содержимое файла или каталога из источника в место назначения, но со следующего раза он копирует только измененные блоки и байты в место назначения.
- Remote Sync потребляет меньшую пропускную способность, поскольку использует метод сжатия и распаковки.
Базовый синтаксис команды rsync
Некоторые общие параметры, используемые с командами rsync:
- -v: подробный вывод.
- -r: рекурсивно копирует данные (но не сохраняет временные метки и разрешения при передаче данных).
- -a: режим архива, позволяет рекурсивно копировать файлы, а также сохраняет символические ссылки, права доступа к файлам, права владения пользователей и групп и временные метки.
- -z: сжатие данных файла.
- -h: human-readable, информация на выводе в формате, удобном для чтения.
Установка rsync на вашем устройстве с Linux
Мы можем установить пакет Remote Sync с помощью следующей команды:
1. Копирование/синхронизация файлов и локальный каталог
Копирование/синхронизация файлов на локальном компьютере
Следующая команда синхронизирует файл на локальном компьютере из одного места в другое. В этом примере, имя файла backup.tar необходимо скопировать или синхронизировать в папку /tmp/backups/:
Если место назначения еще не существует, rsync автоматически его создаст.
Копирование/синхронизация каталога на локальном компьютере
Следующая команда перенесет или синхронизирует все файлы из одного каталога в другой на одном компьютере. В этом примере, в папке /etc/firefox находятся некоторые файлы, и мы хотим, чтобы этот каталог был скопирован в папку /tmp/backups/:
2. Копирование/синхронизация файлов и каталога на сервер или с сервера
Копирование каталога с локального сервера на удаленный сервер
Эта команда синхронизирует каталог с локального компьютера на удаленный компьютер. Например: на вашем локальном компьютере есть папка «firefox», которая содержит файлы, и вы хотите, чтобы содержимое этого локального каталога отправлялось на удаленный сервер, вы можете использовать следующую команду:
Копирование/синхронизация удаленного каталога на локальный компьютер
Эта команда поможет вам синхронизировать удаленный каталог с локальным каталогом. В этом примере каталог /home/tarunika/rpmpkgs, который находится на удаленном сервере, копируется на ваш локальный компьютер по пути /tmp/myrpms:
3. Rsync с SSH
Вместе с Remote Sync мы можем использовать SSH (Secure Shell) для передачи данных. Используя протокол SSH при передаче наших данных, вы можете быть уверены, что ваши данные передаются в защищенном соединении с шифрованием, чтобы никто не мог прочитать их во время передачи в интернете.
Также, когда мы используем rsync, нам нужно предоставить пароль user/root для выполнения этой конкретной задачи. При использовании опции SSH ваши логины будут отправляться в зашифрованном виде, чтобы ваш пароль был в безопасности.
Копирование файла с удаленного сервера на локальный сервер с SSH
Чтобы указать протокол с помощью rsync, вам нужно указать параметр «-e» с названием протокола, который вы хотите использовать. В этом примере, мы будем использовать «ssh» с опцией «-e» и выполнять передачу данных:
Копирование файла с локального сервера на удаленный сервер с SSH:
4. Отображение прогресса при передаче данных с rsync
Чтобы показать прогресс при переносе данных с одного компьютера на другой, мы можем использовать для него параметр «-progress». Он отображает файлы и время, оставшееся до завершения передачи:
5. Использование опций –include и –exclude
Эти две опции позволяют нам включать и исключать файлы, указав соответствующие параметры. С помощью этой опции мы можем указать те файлы или каталоги, которые вы хотите включить в синхронизацию, и исключить файлы и папки, которые вы не хотите передавать.
В этом примере, команда Remote Sync будет включать только те файлы и каталог, которые начинаются с «R» и исключают все другие файлы и каталог:
6. Использование опции –delete
Если файл или каталог не существует в источнике, но уже существует в месте назначения, вы можете удалить этот существующий файл/каталог в месте назначения во время синхронизации.
Мы можем использовать опцию «-delete» для удаления файлов, которых нет в исходной директории.
Источник и место назначения синхронизированы. Теперь создаем новый файл test.txt в место назначения:
В месте назначения появился новый файл с именем test.txt, при синхронизации с источником с параметром «-delete» он удалил файл test.txt.
7. Установка максимального размера файлов для передачи
Вы можете указать максимальный размер файла для передачи или синхронизации. Вы можете сделать это с опцией «–max-size». В этом примере максимальный размер файла составляет 200 КБ, поэтому эта команда будет передавать только те файлы, которые равны или меньше 200 КБ.
8. Автоматическое удаление исходных файлов после успешной передачи
Теперь предположим, что у вас есть основной веб-сервер и сервер резервного копирования данных, вы создали ежедневную резервную копию и синхронизировали ее с вашим сервером резервного копирования. Вы не хотите хранить эту локальную копию резервной копии на своем веб-сервере.
Итак, вы будете ждать завершения передачи, а затем вручную удалите этот локальный файл резервной копии? Конечно же нет. Это автоматическое удаление может быть выполнено с помощью опции «-remove-source-files«:
9. Пробный запуск с rsync
Если вы новичок, используете Remote Sync и не знаете, что именно делает ваша команда, rsync действительно может «испортить» файлы в вашей папке назначения. И тогда восстановление может быть очень утомительной работой.
Использование этой опции не вносит никаких изменений, только делает пробный запуск команды и показывает результат команды, если выходные данные показывают точно то же, что вы хотите сделать, то вы можете удалить опцию «–dry-run» из вашей команды и запустить на терминале:
10. Установка ограничения полосы пропускания и файла передачи
Вы можете установить ограничения полосы пропускания при передаче данных с одного компьютера на другой с помощью опции «–bwlimit«. Эта опция позволяет нам ограничить I/O пропускную способность:
Кроме того, по умолчанию rsync синхронизирует только измененные блоки и байты. Если вы хотите явно синхронизировать весь файл, тогда вы используете опцию «-W«:
На этом все! Вы можете просмотреть страницы руководства пользователя для получения дополнительной информации о команде rsync.
Спасибо за уделенное время на прочтение статьи о Remote Sync!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet (программируемые сети) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
5 комментариев. Оставить новый
Я недавно мозг сломал, пытаясь понять, почему не работает… каталог не находит, модули какие-то ругает, не авторизуется… напрочь забыл потому что об одной важной вещи, которая и у вас тут вообще никак не промелькнула:
НА СТОРОНЕ СЕРВЕРА В rsyncd.conf ЧТО ПРОПИСАНО?
может кто сталкивался, не пользуюсь этой утилитой в принципе, но однажды заметил что она загружает жесткий диск и постоянно что-то читает-пишет. Запускается через минут 20-30 после запуска системы. В автозагрузке его нет, никакой синхронизации или резервных копий с его помощью не делаю. Просто хочу понять почему он запускается и что делает.
Это служба rsyncd, ее необходимо отключить.
как вариант systemctl disable rsyncd?
А вообще, хотел задать вопрос, который мучает меня при выборе инструментов для резервного копирования linux — умеет ли rsync делать архивы или iso образы полностью всего раздела диска, чтобы потом восстановить назад?
Может есть статья описывающая это? И я так понял, необходимо будет восстанавливать загрузчик после возврата файлов из копии?
Сначала нужно найти как точно служба rsync-ка называется, для этого вводим команду: systemctl list-units, потом ее выключаем командой: sudo systemctl disable rsync-tro-lo-lo.service.
Если Вас необходимо выполнить резервное копирование всей системы, то для этого есть такой хороший инструмент как CloneZilla, очень рекомендую его: Как настроить резервное копирование и восстановление данных по сети с использованием Clonezilla. Также мы проводили мастер-класс на нашем Ютуб канале: Cisco NE Slabo.