Меню Рубрики

Rsync примеры синхронизации windows

Использование Rsync для синхронизации локального и удаленного каталогов на VPS

Вступление

Rsync расшифровывается как «remote sync» (удаленная синхронизация) и является инструментом удаленной синхронизации локального и удаленного файлов. Он использует алгоритм, который минимизирует объем копируемых данных при помощи перемещения только тех частей файлов, которые были изменены.

Данное руководство описывает основное использование этой мощной утилиты. В примерах был использован сервер Ubuntu 12.04, но можно использовать любой современный дистрибутив Linux.

Что такое Rsync?

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

Данное руководство в основном ссылается на rsync как на утилиту, а не на протокол.

Благодаря вездесущности данной утилиты на Linux и Unix-подобных системах и ее популярности как инструмента для сценариев системы, она включена в большинство дистрибутивов Linux по умолчанию.

Основной синтаксис

Основной синтаксис Rsync очень прост, его функционирование похоже на SSH, SCP и СР.

Чтобы создать два пробных каталога и несколько пробных файлов, используйте следующую команду:

mkdir dir1
mkdir dir2
touch dir1/file

Это создаст на сервере каталог под названием dir1, содержащий 100 пустых файлов.

ls dir1
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90
file10 file19 file28 file37 file46 file55 file64 file73 file82 file91
file100 file2 file29 file38 file47 file56 file65 file74 file83 file92
file11 file20 file3 file39 file48 file57 file66 file75 file84 file93
file12 file21 file30 file4 file49 file58 file67 file76 file85 file94
file13 file22 file31 file40 file5 file59 file68 file77 file86 file95
file14 file23 file32 file41 file50 file6 file69 file78 file87 file96
file15 file24 file33 file42 file51 file60 file7 file79 file88 file97
file16 file25 file34 file43 file52 file61 file70 file8 file89 file98
file17 file26 file35 file44 file53 file62 file71 file80 file9 file99

Также был создан пустой каталог dir2.

Чтобы синхронизировать содержимое каталогов dir1 to dir2 на одной системе, введите:

Флаг «-r» значит «рекурсивный», что необходимо для синхронизации каталогов.

Вместо него можно использовать флаг «-а»:

«-a» является комбинированным флагом.

Он означает «архив» и синхронизирует рекурсивно, сохраняя символьные ссылки, специальные файлы и файлы устройств, время изменения, группу, владельца и разрешения.

Он удобнее и потому используется чаще, чем «-r».

Важное примечание

В конце первого аргумента вышеприведенных команд используется конечная косая, или слеш (/):

Слеш необходим для обозначения «содержимого dir1».

Альтернативный вариант без использования конечной косой, поместит dir1, включая каталог, в dir2. Это создало бы иерархию, которая выглядит так:

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

Rsync позволяет это сделать при помощи команд -n или —dry-run. Флаг -v (что значит «подробно») также необходим для получения адекватного результата:

rsync -anv dir1/ dir2
sending incremental file list
./
file1
file10
file100
file11
file12
file13
file14
file15
file16
file17
file18
. . .

Сравните данный результат с результатом, выведенным при снятии слеша:

rsync -anv dir1 dir2
sending incremental file list
dir1/
dir1/file1
dir1/file10
dir1/file100
dir1/file11
dir1/file12
dir1/file13
dir1/file14
dir1/file15
dir1/file16
dir1/file17
dir1/file18
. . .

Здесь можно увидеть, что сам каталог был перенесен.

Использование Rsync для синхронизации с удаленной системой

Синхронизация с удаленной системой проста, если есть SSH-доступ к удаленному компьютеру и на обеих системах установлена Rsync. Если вам нужно настроить ключи SSH, нажмите здесь.

Установив и проверив доступ SSH между двумя машинами, можно синхронизировать папку dir1 с удаленным компьютером при помощи следующего синтаксиса (обратите внимание, что в данном случае нужно передать непосредственно саму папку, поэтому косую черту следует опустить):

Данная процедура называется «push», так как она «толкает» каталог из локальной системы на удаленную.

Противоположная ей операция зовется «извлечением» («pull»). Она используется для синхронизации удаленного каталога с локальной системой. Если бы dir1 находился не на локальной, а на удаленной системе, синтаксис выглядел бы так:

rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine

Как в «ср» и подобных инструментах, первый аргумент всегда указывает на источник, а второй – на назначение.

Полезные опции Rsync

Rsync предоставляет множество команд для изменения стандартного поведения утилиты. Некоторые из наиболее необходимых флагов уже рассматривались.

При передаче еще не сжатых файлов, таких как текстовые файлы, можно уменьшить сетевой трафик, сжимая файлы при помощи параметра -z:

rsync -az source destination

Флаг «-P» также очень полезен. Он совмещает флаги «—progress» и «—partial». Первый выводит индикатор выполнения передачи, а второй позволяет возобновить прерванную передачу:

rsync -azP source destination
sending incremental file list
./
file1
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101)
file100
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=97/101)
file11
0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=96/101)
. . .

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

Это иллюстрирует способность rsync использовать время последнего изменения, чтобы определить, были ли внесены изменения в файлы.

rsync -azP source destination
sending incremental file list
sent 818 bytes received 12 bytes 1660.00 bytes/sec
total size is 0 speedup is 0.00

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

touch dir1/file<1..10>
rsync -azP source destination
sending incremental file list
file1
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101)
file2
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=87/101)
file3
0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=76/101)
. . .

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

Такое поведение можно изменить с помощью флага «—delete». Прежде чем применять данный флаг, используйте команду «—dry-run» и проведите тестирование, чтобы предотвратить потерю данных.

rsync -a —delete source destination

При необходимости исключить некоторые файлы или каталоги, расположенные в синхронизируемом каталоге, можно внести их в разделенный запятыми список при помощи команды «—exclude=»:

rsync -a —exclude=pattern_to_exclude source destination

Если шаблон исключений был определен, при помощи команды «—include=» исключение можно снять, установив другой шаблон:

rsync -a —exclude=pattern_to_exclude —include=pattern_to_include source destination

Выводы

Rsync может упростить передачу файлов по сетевым соединениям и повысить устойчивость локальной синхронизации каталогов. Гибкость данной утилиты делает ее хорошим инструментом для выполнения различных операций на уровне файлов.

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

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

Для отправки комментария вам необходимо авторизоваться.

Источник

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

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

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

Некоторые преимущества и особенности команды Rsync:
  • Она эффективно копирует и синхронизирует файлы в/или из удаленной системы.
  • Поддерживает копирование ссылок, устройств, владельцев, групп и разрешений.
  • Это быстрее, чем использование команды scp (SecureCopy), потому что rsync использует протокол удаленного обновления, который позволяет передавать только различия между двумя наборами файлов. В первый раз он копирует все содержимое файла или каталога из источника в место назначения, но со следующего раза он копирует только измененные блоки и байты в место назначения.
  • Remote Sync потребляет меньшую пропускную способность, поскольку использует метод сжатия и распаковки.
Базовый синтаксис команды rsync
Некоторые общие параметры, используемые с командами rsync:
  • -v: подробный вывод .
  • -r: рекурсивно копирует данные (но не сохраняет временные метки и разрешения при передаче данных).
  • -a: режим архива, позволяет рекурсивно копировать файлы, а также сохраняет символические ссылки, права доступа к файлам, права владения пользователей и групп и временные метки.
  • -z: сжатие данных файла.
  • -h: human-readable, информация на выводе в формате, удобном для чтения.

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

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

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

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

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

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

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

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

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

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

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

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

Эта команда поможет вам синхронизировать удаленный каталог с локальным каталогом. В этом примере каталог /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!

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

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

Источник

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

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

  • Rsync клиент для windows
  • Rsync для windows примеры
  • Rsync windows 2008 r2 настройка
  • Rsync server windows cygwin
  • Rsync client for windows