Rsync-(Remote-Sync)-10-Practical-Examples-of-Rsync-Command-in-Linux

Rsync (Remote Sync): 10 практических примеров использования команды Rsync в Linux

rsync

Rsync (Remote Sync) — это наиболее часто используемая команда для удаленного и локального копирования и синхронизации файлов и каталогов в системах Linux/Unix. С помощью команды rsync вы можете удаленно и локально копировать и синхронизировать данные между каталогами, дисками и сетевыми хранилищами, выполнять резервное копирование данных и зеркалирование между двумя компьютерами Linux.

В этой статье описывается 10 основных и дополнительных возможностей использования команды rsync для удаленной и локальной передачи файлов на компьютерах под управлением Linux. Вам не нужно быть root-пользователем для запуска команды rsync.

 

 

Некоторые преимущества и особенности команды Rsync:
  • Она эффективно копирует и синхронизирует файлы в/или из удаленной системы.
  • Поддерживает копирование ссылок, устройств, владельцев, групп и разрешений.
  • Это быстрее, чем использование команды scp (Secure Copy), потому что rsync использует протокол удаленного обновления, который позволяет передавать только различия между двумя наборами файлов. В первый раз он копирует все содержимое файла или каталога из источника в место назначения, но со следующего раза он копирует только измененные блоки и байты в место назначения.
  • Rsync потребляет меньшую пропускную способность, поскольку использует метод сжатия и распаковки.

 

 

Базовый синтаксис команды rsync
# rsync options source destination

 

 

Некоторые общие параметры, используемые с командами rsync:
  • -v: подробный вывод.
  • -r: рекурсивно копирует данные (но не сохраняет временные метки и разрешения при передаче данных).
  • -a: режим архива, позволяет рекурсивно копировать файлы, а также сохраняет символические ссылки, права доступа к файлам, права владения пользователей и групп и временные метки.
  • -z: сжатие данных файла.
  • -h: human-readable, информация на выводе в формате, удобном для чтения.

 

 

Установка rsync на вашем компьютере с Linux

Мы можем установить пакет rsync с помощью следующей команды:

# yum install rsync (On Red Hat based systems)
# apt-get install rsync (On Debian based systems)

 

 

1. Копирование/синхронизация файлов и локальный каталог

Копирование/синхронизация файлов на локальном компьютере

Следующая команда синхронизирует файл на локальном компьютере из одного места в другое. В этом примере, имя файла backup.tar необходимо скопировать или синхронизировать в папку /tmp/backups/:

[[email protected]]# rsync -zvh backup.tar /tmp/backups/

created directory /tmp/backups

backup.tar

sent 14.71M bytes received 31 bytes 3.27M bytes/sec

total size is 16.18M speedup is 1.10

 

 

В приведенном выше примере вы можете увидеть, что если место назначения еще не существует, rsync автоматически создаст каталог для такого места назначения.

 

Копирование/синхронизация каталога на локальном компьютере

Следующая команда перенесет или синхронизирует все файлы из одного каталога в другой на одном компьютере. В этом примере, в папке /root/rpmpkgs находятся некоторые файлы пакета rpm, и мы хотим, чтобы этот каталог был скопирован в папку /tmp/backups/:

[[email protected]]# rsync -avzh /root/rpmpkgs /tmp/backups/

sending incremental file list

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/nagios-3.5.0.tar.gz

rpmpkgs/nagios-plugins-1.4.16.tar.gz

sent 4.99M bytes received 92 bytes 3.33M bytes/sec

total size is 4.99M speedup is 1.00

 

 

2. Копирование/синхронизация файлов и каталога на сервер или с сервера

Копирование каталога с локального сервера на удаленный сервер

Эта команда синхронизирует каталог с локального компьютера на удаленный компьютер. Например: на вашем локальном компьютере есть папка «rpmpkgs», которая содержит несколько пакетов RPM, и вы хотите, чтобы содержимое этого локального каталога отправлялось на удаленный сервер, вы можете использовать следующую команду:

[[email protected]]$ rsync -avz rpmpkgs/ [email protected]:/home/

[email protected]'s password:

sending incremental file list

./

httpd-2.2.3-82.el5.centos.i386.rpm

mod_ssl-2.2.3-82.el5.centos.i386.rpm

nagios-3.5.0.tar.gz

nagios-plugins-1.4.16.tar.gz

sent 4993369 bytes received 91 bytes 399476.80 bytes/sec

total size is 4991313 speedup is 1.00

 

 

Копирование/синхронизация удаленного каталога на локальный компьютер

Эта команда поможет вам синхронизировать удаленный каталог с локальным каталогом. В этом примере каталог /home/tarunika/rpmpkgs, который находится на удаленном сервере, копируется на ваш локальный компьютер по пути /tmp/myrpms:

[[email protected]]# rsync -avzh [email protected]:/home/tarunika/rpmpkgs /tmp/myrpms

[email protected]'s password:

receiving incremental file list

created directory /tmp/myrpms

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/nagios-3.5.0.tar.gz

rpmpkgs/nagios-plugins-1.4.16.tar.gz

sent 91 bytes received 4.99M bytes 322.16K bytes/sec

total size is 4.99M speedup is 1.00

 

 

3. Rsync с SSH

Вместе с rsync мы можем использовать SSH (Secure Shell) для передачи данных. Используя протокол SSH при передаче наших данных, вы можете быть уверены, что ваши данные передаются в защищенном соединении с шифрованием, чтобы никто не мог прочитать их во время передачи в интернете.

Также, когда мы используем rsync, нам нужно предоставить пароль user/root для выполнения этой конкретной задачи. При использовании опции SSH ваши логины будут отправляться в зашифрованном виде, чтобы ваш пароль был в безопасности.

 

Копирование файла с удаленного сервера на локальный сервер с SSH

Чтобы указать протокол с помощью rsync, вам нужно указать параметр «-e» с названием протокола, который вы хотите использовать. В этом примере, мы будем использовать «ssh» с опцией «-e» и выполнять передачу данных:

[[email protected]]# rsync -avzhe ssh [email protected]:/root/install.log /tmp/

[email protected]'s password:

receiving incremental file list

install.log

sent 30 bytes received 8.12K bytes 1.48K bytes/sec

total size is 30.74K speedup is 3.77

 

 

Копирование файла с локального сервера на удаленный сервер с SSH:
[[email protected]]# rsync -avzhe ssh backup.tar [email protected]:/backups/

[email protected]'s password:

sending incremental file list

backup.tar

sent 14.71M bytes received 31 bytes 1.28M bytes/sec

total size is 16.18M speedup is 1.10

 

 

4. Отображение прогресса при передаче данных с rsync

Чтобы показать прогресс при переносе данных с одного компьютера на другой, мы можем использовать для него параметр «-progress». Он отображает файлы и время, оставшееся до завершения передачи:

[[email protected]]# rsync -avzhe ssh --progress /home/rpmpkgs [email protected]:/root/rpmpkgs

[email protected]'s password:

sending incremental file list

created directory /root/rpmpkgs

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

1.02M 100% 2.72MB/s 0:00:00 (xfer#1, to-check=3/5)

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

99.04K 100% 241.19kB/s 0:00:00 (xfer#2, to-check=2/5)

rpmpkgs/nagios-3.5.0.tar.gz

1.79M 100% 1.56MB/s 0:00:01 (xfer#3, to-check=1/5)

rpmpkgs/nagios-plugins-1.4.16.tar.gz

2.09M 100% 1.47MB/s 0:00:01 (xfer#4, to-check=0/5)

sent 4.99M bytes received 92 bytes 475.56K bytes/sec

total size is 4.99M speedup is 1.00

 

 

5. Использование опций –include и –exclude

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

В этом примере, команда rsync будет включать только те файлы и каталог, которые начинаются с «R» и исключают все другие файлы и каталог:

[[email protected]]# rsync -avze ssh --include 'R*' --exclude '*' [email protected]:/var/lib/rpm/ /root/rpm

[email protected]'s password:

receiving incremental file list

created directory /root/rpm

./

Requirename

Requireversion

sent 67 bytes received 167289 bytes 7438.04 bytes/sec

total size is 434176 speedup is 2.59

 

 

6. Использование опции –delete

Если файл или каталог не существует в источнике, но уже существует в месте назначения, вы можете удалить этот существующий файл/каталог в месте назначения во время синхронизации.

Мы можем использовать опцию «-delete» для удаления файлов, которых нет в исходной директории.

Источник и место назначения синхронизированы. Теперь создаем новый файл test.txt в место назначения:

[[email protected]]# touch test.txt</span>
<span style="color: #000000;"> [[email protected]]# rsync -avz --delete [email protected]:/var/lib/rpm/ .</span>
Password:
receiving file list ... done
deleting test.txt
./
sent 26 bytes received 390 bytes 48.94 bytes/sec
total size is 45305958 speedup is 108908.55

 

 

В месте назначения появился новый файл с именем test.txt, при синхронизации с источником с параметром «-delete» он удалил файл test.txt.

 

 

7. Установка максимального размера файлов для передачи

Вы можете указать максимальный размер файла для передачи или синхронизации. Вы можете сделать это с опцией «–max-size». В этом примере максимальный размер файла составляет 200 КБ, поэтому эта команда будет передавать только те файлы, которые равны или меньше 200 КБ.

[[email protected]]# rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ [email protected]:/root/tmprpm

[email protected]'s password:

sending incremental file list

created directory /root/tmprpm

./

Conflictname

Group

Installtid

Name

Provideversion

Pubkeys

Requireversion

Sha1header

Sigmd5

Triggername

__db.001

sent 189.79K bytes received 224 bytes 13.10K bytes/sec

total size is 38.08M speedup is 200.43

 

 

8. Автоматическое удаление исходных файлов после успешной передачи

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

Итак, вы будете ждать завершения передачи, а затем вручную удалите этот локальный файл резервной копии? Конечно же нет. Это автоматическое удаление может быть выполнено с помощью опции «-remove-source-files«:

[[email protected]]# rsync --remove-source-files -zvh backup.tar /tmp/backups/

backup.tar

sent 14.71M bytes received 31 bytes 4.20M bytes/sec

total size is 16.18M speedup is 1.10

[[email protected]]# ll backup.tar

ls: backup.tar: No such file or directory

 

 

9. Пробный запуск с rsync

Если вы новичок, используете rsync и не знаете, что именно делает ваша команда, rsync действительно может «испортить» файлы в вашей папке назначения. И тогда восстановление может быть очень утомительной работой.

Использование этой опции не вносит никаких изменений, только делает пробный запуск команды и показывает результат команды, если выходные данные показывают точно то же, что вы хотите сделать, то вы можете удалить опцию «–dry-run» из вашей команды и запустить на терминале:

[email protected]]# rsync --dry-run --remove-source-files -zvh backup.tar /tmp/backups/

backup.tar

sent 35 bytes received 15 bytes 100.00 bytes/sec

total size is 16.18M speedup is 323584.00 (DRY RUN)

 

 

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

Вы можете установить ограничения полосы пропускания при передаче данных с одного компьютера на другой с помощью опции «–bwlimit«. Эта опция позволяет нам ограничить I/O пропускную способность:

[[email protected]]# rsync --bwlimit=100 -avzhe ssh /var/lib/rpm/ [email protected]:/root/tmprpm/
[email protected]'s password:
sending incremental file list
sent 324 bytes received 12 bytes 61.09 bytes/sec
total size is 38.08M speedup is 113347.05

 

 

Кроме того, по умолчанию rsync синхронизирует только измененные блоки и байты. Если вы хотите явно синхронизировать весь файл, тогда вы используете опцию «-W«:

[[email protected]]# rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
sent 14.71M bytes received 31 bytes 3.27M bytes/sec
total size is 16.18M speedup is 1.10

 

 

На этом все! Вы можете просмотреть страницы руководства пользователя для получения дополнительной информации о команде rsync.

 

 

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасности,  полный курс по кибербезопасностикурсы DevNet (программируемые сети) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
rsync

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Most Viewed Posts
Меню