Программирование на Python и Objective-C в Mac OS

Программирование на Python и Objective-C под Mac OS и для iPhone / iPod Touch

Параметры rsync: Установка, настройка и примеры синхронизации Rsync

Содержание

Примеры синхронизации Rsync — Losst

Потребность передачи файлов между серверами и компьютерами возникает довольно часто, особенно при администрировании нескольких устройств. Обычно для этих целей удобно использовать ssh и scp, но если файл очень большой, а изменена была только небольшая его часть, или вы хотите настроить постоянную автоматическую синхронизацию, то scp уже явно неидеальный вариант. Для этого существуют специальные утилиты. В этой статье мы рассмотрим одну из них. А именно будет рассмотрена rsync синхронизация в linux.

Rsync — это программное обеспечение с открытым исходным кодом, которое можно использовать для синхронизации файлов и папок с локального компьютера на удаленный и наоборот. Примечательная особенность Rsync — возможность передавать зашифрованные файлы с помощью SSH и SSL. Кроме того, здесь передача файлов выполняется в один поток, в отличие от других подобных программ, создающий отдельный поток для передачи каждого файла. Это увеличивает скорость и убирает дополнительные задержки, которые становятся проблемой при передаче большого количества маленьких файлов.

Возможно использование rsync для синхронизации файлов, каталогов, при этом может применяться сжатие и шифрование. Программа впервые была применена в июне 1996 года, она разработана Эндрю Тридгелом и Полом Маккерасом. Rsync синхронизация выполняется по протоколу RSYNC, который специально разработан не просто для передачи файлов между двумя компьютерами, а для их синхронизации. Если точнее, то передается не файл полностью, а только то, что было изменено.

Как вы уже поняли, в этой статье мы рассмотрим rsync примеры синхронизации, настройку rsync, а также ее основные возможности и опции.

Содержание статьи:

Особенности Rsync

Давайте сначала рассмотрим примечательные особенности Rsync:

  • Возможность поддерживать синхронизацию целых деревьев каталогов;
  • Можно сохранять символические ссылки, жесткие ссылки,  владельцев и права файла, метаданные и время создания;
  • Не требует особых привилегий;
  • Передача файлов одним потоком;
  • Поддержка RSH, SSH в качестве транспорта;
  • Поддержка анонимного Rsync.

Синтаксис Rsync

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

sudo apt-get install rsync

А теперь, уже по традиции подобных статей, рассмотрим синтаксис команды rsync:

$ rsync опции источник приемник

В качестве источника и приемника может выступать удаленная или локальная директория. Например, ssh, rsync, samba сервер или локальная директория. Опции задают дополнительные параметры rsync.

Опции Rsync

Теперь давайте кратко рассмотрим параметры rsync. Здесь перечислены не все опции. Для более подробной информации смотрите man rsync:

  • -v — Выводить подробную информацию о процессе копирования;
  • -q — Минимум информации;
  • -c — Проверка контрольных сумм для файлов;
  • -a — Режим архивирования, когда сохраняются все атрибуты оригинальных файлов;
  • -R — Относительные пути;
  • -b — Создание резервной копии;
  • -u — Не перезаписывать более новые файлы;
  • -l — Копировать символьные ссылки;
  • -L — Копировать содержимое ссылок;
  • -H — Копировать жесткие ссылки;
  • -p — Сохранять права для файлов;
  • -g — Сохранять группу;
  • -t — Сохранять время модификации;
  • -x — Работать только в этой файловой системе;
  • -e — Использовать другой транспорт, например, ssh;
  • -z — Сжимать файлы перед передачей;
  • —delete — Удалять файлы которых нет в источнике;
  • —exclude — Исключить файлы по шаблону;
  • —recursive — Перебирать директории рекурсивно;
  • —no-recursive — Отключить рекурсию;
  • —progress — Выводить прогресс передачи файла;
  • —stat — Показать статистику передачи;
  • —version — Версия утилиты.

Настройка сервера Rsync

Как вы понимаете, нельзя просто так взять и закинуть на первую попавшуюся машину файлы без установки на нее специального программного обеспечения. На удаленной машине должен быть установлен и настроен RSYNC, SSH, Samba или FTP сервер, с помощью которого Rsync сможет авторизоваться на машине и передавать туда файлы.

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

Сначала создайте конфигурационный файл со следующим содержимым:

sudo vi /etc/rsyncd.conf

pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
[share]
path = /tmp/share/
hosts allow = 192.168.56.1
hosts deny = *
list = true
uid = root
gid = root
read only = false

Здесь мы задаем путь к нашей папке для синхронизации, разрешаем доступ к серверу только с ip адреса (192.168.56.1) и запрещаем все остальные подключения. Параметры uid и gid указывают пользователя и группу, от которых будет запущен демон. Лучше не использовать root, а указать пользователя nobody и выдать ему права на ту папку, в которую будет выполняться синхронизация каталогов rsync.

Настройка rsync завершена, остается сохранить файл, запустить сервер rsync и добавить его в автозагрузку:

sudo systemctl start rsync

sudo systemctl enable rsync

Сервер будет предоставлять доступ к файлам без запроса пароля.

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

Дальше давайте рассмотрим использование rsync, примеры синхронизации.

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

Rsync позволяет синхронизировать файлы и папки в пределах одной машины. Давайте сначала рассмотрим использование rsync для синхронизации файла на локальном компьютере:

rsync -zvh file /tmp/backups/

 

Указав опцию —progress вы можете видеть сколько процентов уже скопировано, а сколько еще осталось:

rsync -zvh --progress file /tmp/backups/

2. Синхронизация папок на локальной машине

Синхронизация папок rsync выполняется так же просто, как и файлов:

rsync -zvh /home/user/documents /tmp/backups/

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

rsync -azvh /home/user/documents /tmp/backups/

3. Синхронизация с удаленным сервером

Ненамного сложнее синхронизировать файлы с удаленным сервером. Скопируем локальную папку documents, на удаленный сервер:

rsync -avz /home/sergiy/tmp/ [email protected]:/home/

 

По умолчанию rsync попытается использовать транспорт ssh. Если вы хотите использовать ранее созданный сервер rsync, нужно указать это явно:

rsync -avz /home/sergiy/tmp/ rsync://192.168.56.102:/share

 

 

 

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

rsync -avz [email protected]:/home/ /home/sergiy/tmp/

Адрес удаленного сервера записывается в таком формате:

имя_пользователя@адрес_машины/папка/на/удаленной_машине

Синхронизация папок rsync будет выполняться на стандартном порту.

4. Синхронизация файлов по SSH

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

Синхронизация файлов rsync с удаленного сервера по ssh будет выглядеть вот так:

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

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

rsync -avzhe "ssh -p 22" [email protected]:/root/install.log /tmp/

А теперь передадим данные на тот же сервер:

rsync -avzhe ssh backup.tar [email protected]:/backups/

5. Просмотр прогресса при синхронизации

Для просмотра прогресса копирования файла с одной машины на другую используется опция progress:

rsync -avzhe ssh --progress /home/user/documents [email protected]:/root/documents

6. Синхронизация не всех файлов в rsync

Опции include и exclude позволяют указать какие файлы нужно синхронизировать, а какие исключить. Опции работают не только с файлами но и с директориями.

Например, скопируем все файлы, начинающиеся на букву R:

rsync -avze ssh --include 'R*' --exclude '*' [email protected]:/root/documents/ /root/documents

7. Удаление при синхронизации

Во время синхронизации можно удалять файлы, которых нет на машине откуда идет rsync синхронизация, для этого используется опция —delete.

Например:

rsync -avz --delete [email protected]:/documents/ /tmp/documents/

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

8. Максимальный размер файлов

Вы можете указать максимальный размер файлов, которые нужно синхронизировать. Для этого используется опция —max-size. Например, будем синхронизировать только файлы меньше 200 килобайт:

rsync -avzhe ssh --max-size='200k' /user/documents/ [email protected]:/root/documents

9. Удаление исходных файлов

Есть возможность удалять исходные файлы после завершения синхронизации с удаленным сервером:

rsync --remove-source-files -zvh backup.tar /tmp/backups/

Таким образом, файл backup.tar будет удален после завершения копирования в папку /tmp/backups.

10. Режим симуляции rsync

Если вы новичок, и еще не использовали rsync, то возможно захотите посмотреть как отработает команда без применения реальных действий в файловой системе. Для этого есть опция dry-run. Команда только выведет все выполняемые действия в терминал, без выполнения реальных изменений:

rsync --dry-run --remove-source-files -zvh backup.tar /tmp/backups/

11. Ограничить скорость передачи

Вы можете ограничить использование пропускной способности сети с помощью опции —bwlimit:

 rsync --bwlimit=100 -avzhe ssh /user/home/documents/ [email protected]:/root/documents/

Как я уже писал выше, rsync синхронизирует только части файла, если вы хотите синхронизировать файл целиком используйте опцию -W:

rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar

12. Автоматическая синхронизация папок rsync

Можно расписать автоматическую синхронизацию с помощью cron. Но в случае доступа к серверу по SSH необходимо будет создать ключ и загрузить его на сервер, чтобы аутентификация проходила без запроса пароля.

Создаем ключ:

ssh-keygen -t rsa

Загружаем ключ на сервер к с которым собираемся синхронизироваться:

ssh-copy-id -i /home/sk/.ssh/id_rsa.pub [email protected]

Теперь можем переходить к настройке расписания cron. Будем запускать синхронизацию каждый день:

crontab -e

00 05 * * * rsync -azvre ssh /home/user/Downloads/ 192.168.56.102:/share

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

Выводы

Теперь вы знаете все что нужно, чтобы настройка rsync была выполнена правильно. Мы рассмотрели некоторые примеры rsync синхронизации. И теперь вы можете использовать все это для решения своих задач. Я упустил какую-то полезную информацию или у вас остались вопросы? Напишите в комментариях!

Rsync Linux, или Команда Удалённой Синхронизации

Команда rsync в Linux эффективно передаёт и синхронизирует файлы или каталоги между локальной и удалённой машиной, удалённой оболочкой и соответствующей ей парой, другим хостом. Любой, кто работает с системами на базе Linux, должен использовать эту мощную утилиту для лучшей производительности. С помощью этой статьи вы узнаете всё, что вам нужно знать, чтобы пользоваться этой командой.

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

Попробуйте действительно надёжный облачный VPS-хостинг с отличной производительностью виртуального сервера. Наши виртуальные серверы созданы для скорости!

Подробнее

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

Основной синтаксис rsync работает следующим образом:

rsync [необязательные модификаторы] [SRC] [DEST]

Существует несколько способов использования команды rsync Linux. В этом примере [необязательные модификаторы] указывают действия, которые необходимо предпринять, [SRC] является исходным каталогом, а [DEST] — это целевой каталог или машина.

Основной Синтаксис для Удалённой Оболочки

Если вы используете удалённую оболочку, такую как SSH или RSH, синтаксис rsync будет немного другим.

Для доступа к удалённой оболочке (PULL) используйте команду rsync:

rsync [необязательные модификаторы] [USER@]HOST:SRC [DEST]

Для доступа к удалённой оболочке (PUSH) используйте команду rsync:

rsync [необязательные модификаторы] SRC [USER@]HOST:[DEST]

Как Проверить Версию Rsync

Прежде чем мы проверим версию rsync, нам нужно зайти на сервер VPS, который мы будем использовать. Это полезное руководство поможет вам сделать это на машине с Windows, используя Putty SSH. Если вы работаете на компьютере с MacOS или Linux, используйте вместо этого терминал.

Rsync предустановлен во многих дистрибутивах Linux. Чтобы проверить, установлен ли rsync на вашем компьютере, выполните следующую команду:

rsync -version

В нашем дистрибутиве Ubuntu, вот что мы увидим в выводе:

rsync  version 3.1.3  protocol version 31

Это означает, что версия rsync 3.1.3 уже установлена на нашей машине. 

Установка Rsync

Если на вашем компьютере предварительно не установлен rsync, вы можете сделать это вручную за минуту! В дистрибутивах на основе Debian, таких как Ubuntu, вы можете сделать это с помощью следующей команды:

apt-get install rsync

Для дистрибутивов на основе rpm, таких как Fedora и CentOS, используйте следующую команду:

yum install rsync

Для MacOS используйте следующую команду:

brew install rsync

Вот и всё! Утилита rsync Linux готова к синхронизации данных, передачи и удалению файлов. Вы можете проверить успешность установки, используя ранее упомянутую команду:

rsync -version

Работа с Rsync: Примеры

Для этого руководства мы создали два каталога на нашем рабочем столе Linux и назвали их Original и Duplicate. Исходный каталог содержит три изображения, а дубликат пуст. Теперь давайте рассмотрим некоторые примеры rsync, увидим эту утилиту в действии.

Для создания двух тестовых каталогов используйте следующие команды:

cd ~
mkdir original
mkdir duplicate
touch original/file{1..3}

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

ls original

Результат будет выглядеть примерно так:

file1
file2
file3

Если вы используете команду ls с копией каталога, вывод должен быть пустым.

Теперь, когда наши каталоги готовы, давайте попробуем ещё несколько команд.

Следующая команда, введённая в командной строке, скопирует или синхронизирует все файлы из исходного каталога в его копию.

rsync original/* duplicate/

* поручает команде rsync синхронизировать всё в исходном каталоге с дубликатом.

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

Очень удобно использовать эту функцию, когда вы копируете файлы по сети с ограниченной пропускной способностью.

Самые Распространённые Команды Rsync

Вот список наиболее часто используемых с rsync опций:

Эта опция включает режим “архив”. 

-a, --archive

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

-v, --verbose

Выводит данные в человекочитаемом формате.

-h, --human-readable format

Эта опция сжимает данные файла во время передачи.

-z, --compress

Копирует данные рекурсивно.

-r

Как Использовать Команды Rsync с Подкаталогами

Помните, что эта команда будет копировать файлы только из основного каталога папки Original, но не из подкаталогов.

Если вы хотите скопировать и подкаталоги, используйте эту команду:

rsync -r original/ duplicate/

Опция -r (recursive) указывает rsync копировать всё, включая подкаталоги и файлы из нашей исходной папки.

Модификатор /, используемый после original, указывает rsync скопировать содержимое оригинального каталога в дубликат папки.

Как Синхронизировать Файлы

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

rsync -r original duplicate/

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

Как Комбинировать Опции Rsync

Ещё одна полезная опция — это -a (archive), и её можно объединить со многими другими командами. Команда, в которой указан этот параметр будет не просто копировать файлы, но и разрешения, время изменений и любые другие данные.

Использование опции -a вместе с -v будет выглядеть примерно так:

rsync -av --dry-run  Original/ Duplicate/

Не волнуйтесь, ведь она только выглядит сложно! Давайте разберёмся.

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

Если вы хотите скопировать все файлы из этого списка, повторите команду без dry-run.

dry-run, или -n заставляет rsync выполнить пробный запуск, который не вносит никаких изменений.

Другие Опции Команды Rysnc

При использовании опции -a с опцией -v, то есть -av в нашей команде, мы увеличиваем детализацию. Другими словами, с помощью -v мы получаем более визуальный вывод, который показывает прогресс процесса.

rsync -av original/ duplicate/

Если вы хотите синхронизировать две папки, но удалить элементы в папке-дубликате, которых нет в исходной папке, добавьте –delete, например:

rsync -av --delete  original/ duplicate/

Вы также можете пропустить определённые файлы или подкаталоги при синхронизации двух папок. Сделайте это, добавив -exclude=. Если вы хотите указать более одного файла, разделите их запятыми.

rsync -av --exclude=file1,file2  original/ duplicate/

Или же наоборот: вы можете выбрать, какие файлы будут синхронизированы. Для этого вам нужно добавить опцию -include=. Она также может быть использована вместе с параметром -exclude=. В приведённом ниже примере будут скопированы только файлы, начинающиеся с буквы L, и исключены все остальные файлы:

rsync -av --include=L* --exclude=*  original/ duplicate/

Rsync также позволяет указать размер файла, который можно синхронизировать. Для этого используйте параметр –max-size:

rsync -av --max-size=10k original/ duplicate/

Последняя опция команды, которую мы рассмотрим, это -z (–compress). Эта команда объединит файлы, которые передаются по сети. В качестве бонуса давайте посмотрим, как перенести файлы из исходного сервера на другой. Команда будет выглядеть так:

rsync -za ~/Desktop/Original [email protected]:~/tmp/

Как упоминалось ранее, -z сжимает файлы, -a или просто a, добавленная к -z, гарантирует, что все разрешения также будут скопированы.

~/Desktop/Original — это исходник. Это локальный каталог, находящийся на компьютере, из которого вы вошли, и, наконец, [email protected]: ~/tmp/ означает место назначения. [email protected] — это адрес удалённого сервера назначения, а : ~/tmp/ указывает на конкретную папку на этом компьютере.

Как Добавить Индикатор Выполнения

Ещё одна бонусная опция, которую можна добавить к вышеперечисленным командам — это -P. Она объединит параметры –progress и –partial, что добавит в вывод индикатор выполнения синхронизации файлов, а также позволит вам возобновить любую прерванную передачу файлов.

rsync -azP [SRC] [DEST]

Результат будет выглядеть примерно так:

sending incremental file list
./
file1
         0 100%    0.00kB/s   0:00:00   (xfer#1, to-check=1/3)
file2
         0 100%    0.00kB/s   0:00:00   (xfer#2, to-check=2/3)
file3
         0 100%    0.00kB/s   0:00:00   (xfer#3, to-check=3/3)

Затем, если мы снова запустим команду, вывод будет выглядеть намного короче. Это потому, что не было внесено никаких новых изменений. Вот пример вывода:

sending incremental file list
send 26 bytes received 5 bytes 1200.00 bytes/sec
total size is 0 speedup is 0.00

Если вы хотите скопировать только определённые файлы, укажите это с помощью следующей команды:

touch original/file{1..5}
rsync -azP [SRC] [DEST]

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

Как Создать Резервную Копию Rsync

Ещё одна важная команда — создание резервной копии rsync. Для этого объедините –backup с командой –dir, чтобы указать место для хранения резервных копий файлов.

rsync -a --delete --backup --backup-dir=/path/to/backup /path/to/SRC [DEST]

Выводы

Это лишь малая часть того, что может rsync Linux! Это невероятно мощная утилита, о которой должен знать и уметь пользоваться каждый системный администратор или разработчик Linux. В этом руководстве мы разобрались с основами — установкой и основными командами. Если вас интересуют более продвинутые функции, продолжайте знакомиться с ними в официальной документации.

Приготовьтесь быть ещё более эффективным! Успехов с вашими проектами! 

Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.

Rsync — Пингвиньи радости

Материал из Пингвиньи радостей

Статья о программе для синхронизации файлов и каталогов Rsync

Rsync это программа для синхронизации файлов и каталогов с минимизацией трафика.

Rsync может быть запущен в режиме сервера для организации передачи файлов клиентам через порт и в режиме консольной файловой команды.
Порт используемый RSYNC-сервером по умолчанию TCP/873.

Сайт проекта rsync.samba.org

Установка

Пакет присутствует в хранилище пакетов debian.
Для установки пакета

После установки пакет готов к использованию.

Некоторые часто используемые команды

  # rsync --daemon                         - запуск rsync-сервера вручную с файлом конфигурации по умолчанию /etc/rsyncd.conf
  # /etc/init.d/rsync restart              - перезапуск rsync-сервера (при настройке запуска в режим демона)
  # rsync [options] /source/ /target/      - выполнение синхронизации содержимого каталога target из каталога source

Настройка RSYNC-сервера

RSYNC-сервер позволяет организовать передачу файлов клиентам через откраиваемый программой порт.
RSYNC-сервер может быть запущен вручную или автоматически при старте операционной среды.

Для запуска RSYNC-сервера вручную с произвольным файлом конфигурации может быть использована команда

  # rsync --daemon --config=FILE

Для включения автозапуска сервера Rsync следует

  • в файл /etc/default/rsync добавить параметры
  RSYNC_ENABLE=true
     где переменная RSYNC_ENABLE может принимать значения:
        false - запретить запуск сервера rsync,
        true  - запускать самостоятельный сервер rsync
        inetd - запускать сервер rsync при необходимости из супер-сервера inetd.
  RSYNC_CONFIG_FILE=/etc/rsyncd.conf
     если параметр не указан файл конфигурации будет считываться из /etc/rsyncd.conf,
     кроме тех случаев, когда rsync запускается поверх удаленной оболочки и не от
     суперпользователя. В этом случае выбирается rsyncd.conf из текущего каталога
     на удаленной машине (обычно $HOME).
  RSYNC_OPTS=opts
     добавление особенных (отличных от устанавливаемых по умолчанию) параметров запуска
     например, может быть указан адрес и/или порт, на котором следует принимать соединения
     "--address=192.168.0.10" (по умолчанию - все локальные адреса)
     "--port=8730" (по умолчанию - 873), чтобы указать на каком порту следует принимать соединения
  RSYNC_NICE=level
     изменение приоритета процесса в планировщике задач
  • и перезапустить rsync-сервер.

В файле конфигурации rsyncd.conf могут быть использованы параметры

  uid = rsyncd
        Идентификатор пользователя, от имени которого запускается rsync-сервер.
  gid = mirror
        Идентификатор группы, от имени которой запускается rsync-сервер.
  max connections = 50
        Максимальное количество одновременных подключений.
  read only = yes
        Установка доступа к ресурсам "только чтение".
  list = yes
        Установка разрешения клиентам получать список файлов.
        Если запретить просмотр списка файлов, то клиенты смогут получить файл только зная его точное имя,
  syslog facility = local5
        Установка уровня отладочных сообщений для syslog.
  dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.mp3
        Установка шаблонов имён файлов, содержимое которых не нужно сжимать при передаче. 
  use chroot = yes
        Установка изменения корневого каталог rsync-сервера на указанный в path.
        Изменение каталога может использоваться для повышения безопасности.
  outgoing chmod = Fu=rw,g=rw,o=,Du=rwx,g=rx,o=
        Установка права доступа к отдаваемым файлам.
        Поскольку протокол rsync позволяет вместе с содержимым файлов передавать права доступа к ним и идентификаторы
        владельца и группы, можно задать особые права доступа, которые будут заменять реальные права доступа к данному
        файлу или каталогу при его передаче по сети.
  [media]
        В квадратных скобках задаётся имя секции.
        Каждая секция обязана иметь собственный параметр path.
        Дополнительно в ней могут быть переопределены и значения глобальных параметров.
     path = /media/
     comment = media files
  Пример файла конфигурации /etc/rsyncd.conf
  syslog facility=daemon                  - стартовать в режиме демона 
  pid file=/var/run/rsyncd.pid            - с сохранением идентификатора процесса в файле /var/run/rsyncd.pid
  motd file = /etc/rsync/hello            - отвечать клиенту в начале сессии приветствием из файла /etc/rsync/hello.
  transfer logging = yes
  log file = /var/log/rsyncd.log          - вести протокол переданных клиенту файлов в /var/log/rsyncd.log
  log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes - по заданному формату
  [root]
     comment = rsync open for root        - предоставлен доступ
     uid = root                           - от имени пользователя root
     gid = root                           - и группы root
     path = /                             - с доступом к корневому каталогу в терминах rsync-сервера
     list = yes                           - с возможностью его просмотра списка файлов
     read only = yes                      - но только для чтения
     hosts allow = hosts-name             - и только с рабочей станции hosts-name (из /etc/hosts)
     hosts deny = 0.0.0.0/0.0.0.0
     dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz   - не сжимая при передаче файлы указанных расширений
     exclude from = /etc/rsync/rsyncd-exclude     - и исключая файлы описанные в файле /etc/rsync/exclude 

Ссылки

Синтаксис команды RSYNC

Синтаксис команды rsync

  # rsync [параметры] <откуда> <куда>
  где
  <откуда> и <куда>   - источник и целевой объект
     Объектами копирования могут быть как файлы, так и папки, находящиеся как в пределах файловой
     системы, так и удалённо, например на SSH или RSYNC-сервере.
  [параметры]         - необязательные параметры копирования/синхронизации, например
     -v, --verbose
        повышение детализации при копировании, например показывать название файлов
     -a, --archive
        режим архивации, объединяет несколько ключей -rlptgoD
     -r, --recursive
        копирование рекурсивно. просматривая все вложенные файлы и каталоги
     -l, --links
        сохранять символические ссылки
     -p, --perms
        сохранять права на файлы
     -t, --times
        сохранять время изменения файлов
     -g, --group
        сохранять группу файлов
     -o, --owner
        сохранять владельца файлов (работает только для суперпользователя)
     --devices
        сохранять файлы устройств (работает только для суперпользователя)
     --specials
        сохранять специальные файлы
     -D
        сохранять файлы устройств и специальны файлы, идентично --devices --specials
     -H, --hard-links
        сохранять жесткие ссылки
     -x, --one-file-system
        не выходить за пределы файловой системы
     -z, --compress
        сжимать файлы данных во время передачи
     --compress-level=NUM
        явное задание степени сжатия
     --skip-compress=LIST
        пропуск сжатия файлов с суффиксом LIST
     --progress
        показывать сколько процентов осталось до завершения и скорость передачи
     --numeric-ids
        не транслировать имена владельца и группы в цифровые UID и GID, оставить номера как есть
     --delete
        удалять файлы в приёмнике, которых уже нет в источнике
     --delete-before
        удалять файлы перед началом копирования
    --delete-during
        удалять файлы во время копирования
     --delete-delay
        удалять файлы после окончания копирования, но искать их во время
     --delete-after
        удалять файлы после окончания копирования
     --delete-excluded
        удалять файлы включая исключённые
     --exclude=PATTERN
        исключать копирование файлов соответствующие маске PATTERN
     --exclude-from=FILE
        получить маски исключаемых при копирование файлов из файла FILE
     --include=PATTERN
        не исключать копирование файлов соответствующие маске PATTERN
     --include-from=FILE
        получить маски неисключаемых при копирование файлов из файла FILE
     --files-from=FILE
        получить список копируемых файлов из файла FILE
     -e ssh
        использовать при копировании ssh
     -n, --dry-run
        пробный режим копирования без изменений
     --bwlimit=KBPS
        установка ограничения скорости передачи файлов

Примеры использования

Приняты сокращения в настоящем разделе:

  <SRC_PATH>              - путь до каталога, подлежащего резервному копированию
  <DEST_PATH>             - путь до папки куда копируются данные

Синхронизация данных с RSYNC-сервера в целевую папку

  # rsync -rlpgoDvsH --delete root@IP-RSYNC-SERVER::<SOURCE_PATH>/ <DEST_PATH>/
    где
    -rlpgoDvsH                              - параметры копирования
    rroot@IP-RSYNC-SERVER::<SOURCE_PATH>/   - путь до источника данных в терминах rsync-сервера
    --delete                                - команда "удалять файлы" в резервном архиве, если они удалены на rsync-сервере

Синхронизация двух каталогов файловой системы

  # rsync -avsq --delete -b --backup-dir=<LOCAL_PATH>/modify --suffix=.`date +%Y-%m-%d` <SRC_PATH>/ <DEST_PATH>/
  где
  -avsq                   - параметры копирования
  -b --backup-dir=<LOCAL_PATH>/modify --suffix=.`date +%Y-%m-%d`
                          - команда сохранять файлы которые изменялись в каталоге
                            с присвоением расширения файлам даты резервного копирования

Показать список файлов без их копирования

  # rsync -avn <SRC_PATH>/ <DEST_PATH>/     - список файлов, которые должны быть скопированы

Создание (только) структуры каталогов (без копирования файлов)

  # rsync -avH -f"+ */" -f"- *" <SRC_PATH>/ <DEST_PATH>/

Скачивание больших файлов (с докачкой) на неустойчивых линиях

  # rsync -avsH --partial --partial-dir="<PART_PATH/>" <SRC_PATH>/ <DEST_PATH>/
   где
   -avsH                        - параметры копирования
   ---partial                   - установка сохранения даже не полностью скопированных файлов
   --partial-dir="<PART_PATH/>" - путь до папки куда сохраняются не полностью скопированные файлы
   --append-verify              - установка проверки существующего файла для синхронизации лишь остатка не скопированного куска

Загрузка файлов с локальной системы на RSYNC-сервер с докачкой

  # rsync -rvz --partial --append-verify <SRC_PATH>/ rsync://root@IP-RSYNC-SERVER:/PATH/
   где
   -rvz                         - параметры копирования
   ---partial                   - установка сохранения даже не полностью скопированных файлов
   --append-verify              - установка проверки полноты уже сохранённого файла и копирования только остатка
  Пример настройки rsyncd.conf на RAYNC сервере
    [PATH]
       comment = tmp GW-HOME
       path = /DEST_PATH/
       read only = no
       uid = nobody
       gid = nogroup
       hosts allow = 0.0.0.0/0.0.0.0
  а для пути /DEST_PATH/ предоставлены, например права
    # mkdir /DEST_PATH/
    # chmod 777 /DEST_PATH/

Копирование на FTP-сервер

  # curlftpfs FTPSERVER:FTPPORT /tmp/ftp/ -o user=FTPUSER:FTPPASSW,allow_other
                               - монтирование FTP-сервера с помощью программы curlftpfs
  # rsync -rzv --inplace --append --stats --timeout=7200 <SRC_PATH>/ <DEST_PATH>/
   где
   -rzv                        - параметры копирования
   --inplace                   - обновление существующего файла
   --append                    - добавление данных к меньшему файлу
   --timeout=7200              - задержка для операций ввода-вывода

Ссылки

Литература

Справочная информация

  • 28.04.2010: Rsync: создание статьи википедии, описание установки пакета
  • 17.05.2010: Rsync: добавлено описание примера копирования данных с сервера rsync на локальную машину
  • 13.11.2011: Rsync: актуализация описания, правка внешнего вида
  • 23.03.2013: Rsync: добавлено описание Синтаксиса команды
  • 26.03.2016: Rsync: добавлено описание Настройки сервера Rsync
  • 21.02.2020: Rsync: добавлен пример копирования по FTP-протоколу

использование rsync для синхронизация директорий и файлов

Программа Rsync ( во FreeBSD есть в портах ), используется для удаленного копирования (резервного копирования ) или синхронизации файлов и каталогов, с минимальными затратами трафика. Может практически целиком заменить cp и scp, умеет кодировать данные, поддерживает сжатие и рекурсию, кроме того, прерванные передачи можно с легкостью перезапустить. На страницах руководства, все описано довольно подробно.

Вот несколько примеров:

Копировать директорию с контентом:

# rsync -a /home/colin/ /backup/colin/
# rsync -a /var/ /var_bak/
# rsync -aR --delete-during /home/user/ /backup/      # Используется относительный путь (см. ниже)

То-же что и выше, только по сети и с компрессией. По-умолчанию, Rsync использует для передачи протокол SSH в том числе и с ключами, если таковые имеются. Символ «:» используется как в SCP. Типичный пример удаленного копирования:

# rsync -axSRzv /home/user/ user@server:/backup/user/

Исключить из процесса удаленного копирования, директорию tmp в /home/user/ и сохранить иерархию, удаленная директория будет иметь структуру /backup/home/user/. Данный пример типичен для резервного копирования:

# rsync -azR --exclude /tmp/ /home/user/ user@server:/backup/

Использовать 20022 порт для SSH:

# rsync -az -e 'ssh -p 20022' /home/colin/ user@server:/backup/colin/

Можно использовать демон rsync (с «::«), это гораздо быстрее, но трафик не шифруется. Местонахождение папки папки для резервного копирования (например /backup) можно настроить в файле /etc/rsyncd.conf. Переменная RSYNC_PASSWORD служит для того, что-бы избежать необходимости ввода пароля вручную.

# rsync -axSRz /home/ ruser@hostname::rmodule/backup/
# rsync -axSRz ruser@hostname::rmodule/backup/ /home/    # Копировать обратно

Некоторые важные опции:

  • -a, —archive режим архива; то-же что и -rlptgoD (без -H)
  • -r, —recursive обходить директории (рекурсия)
  • -R, —relative относительные пути
  • -H, —hard-links сохранять жесткие ссылки ( hardlink )
  • -S, —sparse handle sparse files efficiently
  • -x, —one-file-system не пересекать границы файловой системы
  • —exclude=PATTERN исключить файлы заданного образца
  • —delete-during приемник удаляется ПРИ ПЕРЕДАЧЕ
  • —delete-after приемник удаляется ПОСЛЕ ПЕРЕДАЧИ

winrsync

Под Windows, rsync можно использовать через cygwin или отдельным приложением cwrsync. Очень удобно для автоматизации резервного копирования. Установите ОДИН из вариантов и добавьте путь в системные переменные Windows: Control Panel -> System -> tab Advanced, button Environment Variables. Отредактируйте переменную «Path«, добавив полный путь до rsync, например так: C:\Program Files\cwRsync\bin или C:\cygwin\bin. Это позволит использовать rsync и ssh из командной строки Windows.

Авторизация по ключу

Rsync автоматически туннелируется через SSH протокол, а тот использует SSH авторизацию на сервере. Автоматическое резервное копирование используется для минимизации участия пользователя в этом процессе, как раз для этого и нужна авторизация по публичному ключу, что-бы не запрашивать у пользователя ввод пароля.
Все команды выполняются в командной оболочке Windows (Start -> Run -> cmd). Создайте и загрузите ключи, как описано в материале ]]>SSH, SCP]]>, «user» и «server» установите соответствующие.

# ssh-keygen -t dsa -N ''                   # Создаем ключи
# rsync user@server:.ssh/authorized_keys2   # Копируем файл ssh/authorized_keys2 на локальную машину
# cat id_dsa.pub >> authorized_keys2        # Или используйте редактор, что-бы добавить ключ
# rsync authorized_keys2 user@server:.ssh/  # Копируем файл обратно на сервер
# del authorized_keys2                      # Удаляем локальную копию

Теперь проверяем (одной строкой):

rsync -rv "/cygdrive/c/Documents and Settings/%USERNAME%/My Documents/" 'user@server:My\ Documents/'
Автоматизация резервного копирования

Планировка и выполнение задания резервного копирования, можно вполне возложить на какой-нибудь планировщик или пакетные файлы (Programs -> Accessories -> System Tools -> Scheduled Tasks). Например, можно создать такой файл, заменив «user@server» на свои:

@ECHO OFF
REM rsync the directory My Documents
SETLOCAL
SET CWRSYNCHOME=C:\PROGRAM FILES\CWRSYNC
SET CYGWIN=nontsec
SET CWOLDPATH=%PATH%
REM uncomment the next line when using cygwin
SET PATH=%CWRSYNCHOME%\BIN;%PATH%
echo Press Control-C to abort
rsync -av «/cygdrive/c/Documents and Settings/%USERNAME%/My Documents/» \
‘user@server:My\ Documents/’
pause

основные примеры синхронизации файлов — powered by leo blog …

RSync это быстрый и чрезвычайно универсальный инструмент для синхронизации (копирования) файлов. Его самое основное преимущество это передача только изменившиеся части файла, а не файла целиком, что несомненно отражается на скорости копирования/синхронизации. А если при копировании произойдет какой-то сбой, то достаточно перезапустить команду и копирование будет продолжено с того же места.

RSync может копировать файлы локально на компьютере, с локальной машины на удаленную (к примеру на сервер) и наоборот. Этот инструмент очень удобно использовать для создания резервных копий своих файлов, так как имеет большое обилие опций и экономно пользуется ресурсами системы.

Сам сервис работает на SSH протоколе по умолчанию, но может работать и на собственном протоколе rsyncd, но обо всем по порядку.

Установка

По умолчанию rsync есть не везде, поэтому если вы получили ошибку «bash: rsync: command not found» — значит его нужно установить (как на локальной, так и на удаленной машине):

# для debian 
apt install rsync

# для centos
yum install rsync

Базовый синтаксис

rsync <опции> <что копируем с компьютера> <пользователь@хост:/куда_копируем>

Основные опции RSync

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

Базовые опции:

-n, --dry-run – что-то типа тестового режима, указывает не осуществлять никаких передач, а только сообщать о тех действиях, которые могли бы произойти.
-a, --archive – архивный режим, включает рекурсивное копирование и сохранение прав и владельца (эта опция включает в себя опции rlptgoD, они будут описаны следующими). Учтите, эта опция не сохраняет жесткие ссылки.
-r, --recursive – рекурсивный режим (копирование всех директорий и файлов в них).
-l, --links – копировать символьные ссылки как символьные ссылки.
-p, --perms – сохранять права для файлов. Без указания этой опции каждый новый файл получает те права доступа, что имеет исходный с учетом umask, действующей на приемной стороне, в то время как все другие (включая обновляемые) сохраняют свои уже существующие разрешения (это то же поведение, что имеют другие утилиты копирования файлов, такие как cp).
-t, --times – обновлять время модификации файла на приёмной стороне (при отсутствии этой опции или -a становиться неэффективной оптимизация передачи по времени изменения файлов).
-g, --group – сохранять группу пользователя. Если удаленная сторона не действует из-под супер-пользователя, то сохранятся только те значения групп, членом которых является пользователь приемной стороны, т.е. имеет значение имя группы, а не ее id.
-o, --owner – сохранять владельца на приемной стороне в точности с оригиналом. На большинстве систем только супер-пользователь имеет право устанавливать владельца файла. Нужно заметить, что если удаленный демон действует в chroot-окружении, то подразумевается наличие параметра --numeric-ids (он описан ниже), потому что на удаленной стороне в этом случае нет доступа к именам пользователей в /etc/passwd.
-D, --devices – сохранять файлы устройств (root only).

Работа с файлами:

-u, --update – не перезаписывать более новые файлы: указывает пропускать любые файлы, уже существующие на приемной стороне с более поздней датой, чем у исходных файлов.
--delete – удалять файлы, которых нет в источнике (полезно для создания точной копии).
--ignore-errors – продолжать копирование и удаление после появления ошибок (При удалении (--delete) форсирует процесс и игнорирует любые ошибки, даже ошибки ввода-вывода.)
--exclude – исключить файлы (подробно описано ниже).
--include – не исключать файлы (подробно описано ниже).
-F – опция которая заставляет искать файл .rsync-filter, в котором настраиваются фильтры (exclude/include). Если опция указана дважды то будет исключен и сам файл .rsync-filter.
-x, --one-file-system – не переходить границ файловой системы при рекурсивном копировании. Это полезно при необходимости копирования только одной файловой системы.
-R, --relative – использовать относительные пути при создании символических ссылок. Это значит, что посылаются полные пути, указанные в командной строке, а не последние части имен файлов. На практике это полезно, когда Вам нужно послать несколько различных каталогов за раз.
-H, --hard-links – пересоздать жесткие ссылки на конечной стороне в соответствии с тем, что имеется на исходной. Без этого параметра жесткие ссылки обрабатываются как обычные файлы.
-L, --copy-links – Если обнаружена символьная ссылка, то на приемную сторону копируется файл, на который она указывает, а не такая же символьная ссылка.
--numeric-ids – не транслировать имена владельца и группы в цифровые UID и GID, оставить на удалённой стороне номера как есть.
Вместо имен групп и пользователей посылаются их числовые id и ставятся в соответствие друг другу на обоих концах.
По умолчанию rsync использует имена групп и пользователей для определения владельца файлов. Специальные uid 0 и gid 0 никогда не отображаются через имена пользователей/групп, даже если не указана --numeric-ids.
Если исходная система работает в ограниченном chroot-окружении или если пользователь или группа не существуют на приемной стороне, то используются исходные числовые id.
-m, --prune-empty-dirs – не копировать пустые директории. 

Настройка синхронизации/подключения/передачи файлов:

-c, --checksum – использование сверки по контрольным суммам, а не по времени изменения и размеру файлов.
--size-only – сверять только размер файлов (по умолчанию проверяется размер и время модификации).
-z, --compress – компрессия данных при передаче (реализуется gzip).
-e,--rsh="command" – опция позволяет выбрать альтернативный протокол подключения между удаленной и локальной машинами.
--max-size – максимальный размер файла для передачи.
--bwlimit — ограничение скорости для передачи файлов (Kbit/s).
--partial – По умолчанию rsync будет удалять все частично-переданные файлы в случае сбоя передачи. Если этот параметр указан, то rsync будет сохранять частично-переданные файлы, что может сократить время копирования при повторном запуске.
-P – данная опция включает в себя опцию --partial и --progress.

Отображение/результат:

--progress – выводить прогресс передачи файлов.
--stat – показать статистику передачи.
-v, --verbose – вывести подробную информацию о процессе: один -v будет выдавать список переданных файлов и итог в конце, два -v выдает детали о пропущенных файлах и более подробный итог, больше -v полезно для отладки.
-q, --quiet – минимальная информация.

Опции полезные для создания инкрементальных резервных копий:

-b, --backup – создавать резервные копии ранее существовавших файлов до начала копирования на принимающей стороне. По умолчанию файлам добавляется суффикс ~, а если указана директория (--backup-dir), то суффикс не добавляется.
--backup-dir=.. – указывает каталог, куда сохранять резервные копии.
--suffix=.. – опция позволяет указать свой суффикс.

Теперь пройдемся по базовым примерам.

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

Вот так:

rsync -av /home/user/Downloads/files/ /home/user/Downloads/copyfiles

Данная команда копирует файлы (т.е. содержимое) из каталога /home/user/Downloads/TEMP/files/ в каталог /home/user/Downloads/TEMP/copyfiles.

Важный момент:

  • если в конце пути до источника (каталога) нет слэша, то будет скопирован сам каталог (в примере выше это files).
  • если слэш указан, то будет скопировано содержимое каталога (т.е. то, что внутри files, из примера выше)

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

rsync -av ./2021 ./logo.svg.png ./copy2021 ./copydir

Находясь в нужном каталоге, мы скопировали каталог 2021, файл logo.svg.png и еще один каталог copy2021 в несуществующий ранее каталог copydir.

Вот как это выглядит наглядно:

rsync -av ./2021 ./logo.svg.png ./copy2021 ./copydir
sending incremental file list
created directory ./copydir
logo.svg.png
2021/
2021/filefromsrv
2021/filestorage.png
2021/login.png
2021/mainweb.png
2021/motiondetection.png
2021/motioneye-movies.png
2021/motioneye-recordetmovies.png
copy2021/
copy2021/just-file.txt

sent 723,033 bytes  received 349 bytes  1,446,764.00 bytes/sec
total size is 721,629  speedup is 1.00

Получается это не плохая альтернатива cp 🙂

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

Вот так

Важно указывать полный путь на удаленном сервере, иначе rsync попытается скопировать каталог «2021» в корень удаленного сервера.
Еще важно указывать полный путь до удаленного сервера, так как, к примеру, копируя файл «file.txt» на сервер указав путь /home/user/somedir, каталог somedir не будет создан, вместо этого файл file.txt скопируется на сервер под именем somedir. Чтобы избежать этого используйте путь полный путь /home/user/somedir/.

Если мы хотим немного сжать файлы при передачи (к примеру у нас медленный интернет), можно использовать ключ -z:

Но важно понимать, что сжатие имеет смысл использовать там где это нужно, так как в новых версиях ssh уже использует сжатие передаваемых данных, тратить ресурсы CPU не стоит, особенно на слабых машинах или NAS серверах.

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

Вот так:

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

Как указать другой порт ssh и ключ?

С помощью опции -e (она же —rsh). Вот как скопировать файл с компьютера на сервер у которого не стандартный ssh порт:

А вот как можно указать ключ авторизации и порт:

rsync -av -e "ssh -p 2013 -i ~/.ssh/id_rsa" ./filefromsrv  [email protected]:/home/user/mydir/

Кстати, если мы настроим ssh алиас, то мы можем копировать файлы не указывая лишних ключей.

Пример конфига:

$ cat ~/.ssh/config
Host srv
   HostName 10.10.20.7
   Port 2013
   User user

Пример команды:

rsync -av ./filefromsrv srv:/home/user/somedir/

Я хочу видеть прогресс копирования/синхронизации

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

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

rsync -av ./somedir [email protected]:/home/leo/
sending incremental file list
somedir/
somedir/Screenshot from 2021-01-22 17-42-17.png
somedir/Screenshot from 2021-01-24 02-17-17.png

sent 1,996,838 bytes  received 58 bytes  3,993,792.00 bytes/sec
total size is 2,041,319  speedup is 1.02

Если мы хотим видеть наиболее интересный вывод, то нам в этом поможет ключ —progress. Вот пример:

rsync -aP ./somedir [email protected]:/home/user/
sending incremental file list
somedir/
somedir/Screenshot from 2021-01-22 17-42-17.png
        194,291 100%   51.35MB/s    0:00:00 (xfr#1, to-chk=1/3)
somedir/Screenshot from 2021-01-24 02-17-17.png
      1,847,028 100%   21.22MB/s    0:00:00 (xfr#2, to-chk=0/3)

Некоторые могут советовать ключ -P, но имейте в виду, -P включает в себя ключ —partial и —progress одновременно (что в целом не так страшно).

Как ограничить скорость передачи файлов?

Нужно указать опцию —bwlimit=SPEED, где SPEED это скорость в Кбайт в секунду:

Полезно бывает на слабом интернете с большими файлами.

Как исключить некоторые файлы или включить определенный тип файлов?

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

rsync -av --exclude={'user/.local/share/Trash','user/.cache'} /home/user [email protected]:/home/user/bkp/

Конечно можно указать одну директорию:

Еще мы можем исключить файлы с определенным расширением:

Саму опцию мы можем использовать несколько раз:

rsync -av --exclude="*.tmp" --exclude="tmp/*" --exclude="*~" /var/www/site [email protected]:/home/user/bkp/

Для копирования определенного типа файлов (да и не только) мы можем использовать опцию —include. Используется она точно так же, как и exclude. Вот пример, в котором я загружаю на сервер только все файлы с расширением .sql:

Исключения с помощью .rsync-filter

Для более гибкой настройки копирования (в случае регулярного копирования это будет очень полезно) все исключения/включения можно оформить в файле .rsync-filter (это появилось в более поздних версиях rsync).

Попробую объяснить подробно на примере, как и что мы можем исключать (спасибо этому блогу за хорошее описание).
Допустим, у меня есть такой каталог (somedir), в котором я хочу исключить (красная стрелка) или оставить (зеленая стрелка) некоторые файлы/каталоги:

Ниже приведен один из примеров настройки исключений в файле .rsync-filter с комментариями:

cat .rsync-filter 
# исключаем только каталог .cache (не будут исключены каталоги work/lo*/.cache и dir2/.cache)                                                                        
- /.cache
# исключаем все каталоги Trash во всех папках
- /**/Trash/
# исключаем каталог Cache в каталогах .mysoft/soft*/
- /.mysoft/*/Cache
# исключаем файл pass.md
- pass.md
# исключаем все файлы с расширением .tmp
- *.tmp
# исключаем весь каталог example
- /example/
# Оставляем каталог Trash в каждом каталоге work/lo*/..
+ /work/**/Trash/

Для того, чтобы rsync заметил файл .rsync-filter, достаточно указать опцию -F:

rsync -avF ./somedir 10.10.20.15:/home/leo/

В итоге на сервер будут скопированы только эти файлы:

Кстати, если мы не хотим чтобы сам .rsync-filter не копировался, то -F нужно будет указать дважды

Другие полезные опции

—delete /

—delete-after / —del (—delete_during)

Если мы делаем ежедневные резервные копии и не хотим засорять удаленный сервер лишними файлами (которых уже нет в источнике), то мы можем использовать опцию —delete:

В результате будет удален файл, которого больше нет в директории источника (в somedir):

rsync -avz -e "ssh -p 2013" --delete ./somedir [email protected]:/home/bkp/
[email protected]'s password: 
sending incremental file list
deleting somedir/lolo
somedir/

sent 159 bytes  received 77 bytes  67.43 bytes/sec
total size is 2,041,319  speedup is 8,649.66

По умолчанию, rsync сначала выполняет удаление файлов перед копированием для уверенности, что хватит свободного места на приемной стороне (т.е. использует по умолчанию —delete-before). Если мы хотим удалять файлы после копирования, используйте параметр —delete-after.

Если мы хотим хотим удалять файлы в процессе передачи, а не перед, то можно использовать опцию —del (—delete_during). Это поможет сэкономить немного ресурсов и времени.

Кстати, это не все «delete» параметры, которые есть, вот их полный список с кратким описанием:

--del – an alias for --delete-during
--delete – delete extraneous files from dest dirs
--delete-before – receiver deletes before transfer (default)
--delete-during – receiver deletes during xfer, not before
--delete-delay – find deletions during, delete after
--delete-after – receiver deletes after transfer, not before
--delete-excluded – also delete excluded files from dest dirs

А если вам по какой-то причине не нужно обновлять файлы на принимающем сервере, вместо опции —del.. можно использовать опцию —ignore-existing.

—no-perms —no-owner —no-group

Иногда нам может потребоваться не переносить атрибуты (права файлов, пользователя и группу пользователя). Для этого мы можем воспользоваться опциями —no-p —no-o —no-g (оно же —no-perms —no-owner —no-group):

rsync -avz -e "ssh -p 2013" --no-p --no-o --no-g ./somedir 

Важно соблюдать порядок (особенности работы «—no-OPTION» в rsync).

—inplace

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

rsync -av --inplace ./Видео.mp4 ./vidinplace.mp4

-W, —whole-file

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

Что в итоге?

Я постарался описать наиболее частые примеры использования rsync, и сказу сразу: это только минимум того, что может эта утилита.

Если вы где-то нашли ошибку, или есть еще какие-то интересные способы использования rsync — пишите, я добавлю их в статью ;).

Источники:

Команда Rsync в Linux с примерами

rsync — это быстрая и универсальная утилита командной строки для синхронизации файлов и каталогов между двумя местоположениями через удаленную оболочку или с / на удаленный демон Rsync. Он обеспечивает быструю инкрементную передачу файлов, передавая только различия между источником и местом назначения.

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

В этой статье объясняется, как использовать rsync на практических примерах и подробных объяснениях наиболее распространенных параметров rsync .

Установка Rsync

Утилита rsync предустановлена в большинстве дистрибутивов Linux и macOS. Если в вашей системе не установлен rsync , вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.

Установите Rsync в Ubuntu и Debian

sudo apt install rsync

Установите Rsync на CentOS и Fedora

sudo yum install rsync

Синтаксис команды Rsync

Прежде чем перейти к использованию команды rsync , давайте начнем с обзора основного синтаксиса.

Выражения утилиты rsync имеют следующую форму:

Local to Local:  rsync [OPTION]... [SRC]... DEST
Local to Remote: rsync [OPTION]... [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... [USER@]HOST:SRC... [DEST]
  • OPTION — параметры rsync .
  • SRC — Исходный каталог.
  • DEST — целевой каталог.
  • USER — удаленное имя пользователя.
  • HOST — удаленное имя хоста или IP-адрес.

rsync предоставляет ряд параметров, управляющих поведением команды. Наиболее широко используемые варианты:

  • -a , --archive , режим архива, эквивалент -rlptgoD . Этот параметр указывает rsync рекурсивно синхронизировать каталоги, передавать специальные и блочные устройства, сохранять символические ссылки, время модификации, группы, владение и разрешения.
  • -z , --compress . Эта опция заставляет rsync сжимать данные при их отправке на конечный компьютер. Используйте эту опцию, только если подключение к удаленному компьютеру медленное.
  • -P , что эквивалентно --partial --progress . Когда используется эта опция, rsync показывает индикатор выполнения во время передачи и сохраняет частично переданные файлы. Это полезно при передаче больших файлов по медленным или нестабильным сетевым соединениям.
  • --delete . Когда используется эта опция, rsync удаляет посторонние файлы из места назначения. Это полезно для зеркалирования.
  • -q , --quiet . Используйте эту опцию, если вы хотите подавить сообщения, не связанные с ошибками.
  • -e . Эта опция позволяет вам выбрать другую удаленную оболочку. По умолчанию rsync настроен на использование ssh.

Базовое использование Rsync

Самый простой вариант использования rsync — это копирование одного файла из одного в другое локальное расположение. Вот пример:

rsync -a /opt/filename.zip /tmp/

Пользователь, выполняющий команду, должен иметь разрешения на чтение в исходном местоположении и разрешения на запись в месте назначения.

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

rsync -a /opt/filename.zip /tmp/newfilename.zip

Настоящая мощь rsync проявляется в синхронизации каталогов. В приведенном ниже примере показано, как создать локальную резервную копию файлов веб-сайта:

rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/

Если целевой каталог не существует, rsync создаст его.

Стоит отметить, что rsync разному обрабатывает исходные каталоги с помощью завершающей косой черты ( / ). Если исходный каталог имеет косую черту в конце, команда скопирует только содержимое каталога в целевой каталог. Если косая черта в конце опущена, rsync копирует исходный каталог в целевой каталог.

Использование

rsync для синхронизации данных с / на удаленную машину

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

В следующем примере мы переносим каталог с локального компьютера на удаленный:

rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/

Если вы не установили SSH-вход без пароля для удаленного компьютера, вам будет предложено ввести пароль пользователя.

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

rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию 22, укажите порт с помощью параметра -e :

rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/

При передаче больших объемов данных рекомендуется запускать команду rsync внутри сеанса экрана или использовать параметр -P :

rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Исключить файлы и каталоги

Есть два варианта исключения файлов и каталогов. Первый вариант — использовать аргумент --exclude и указать файлы и каталоги, которые вы хотите исключить, в командной строке.

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

В следующем примере показано, как исключить node_modules и tmp :

rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/

Второй вариант — использовать параметр --exclude-from и указать файлы и каталоги, которые вы хотите исключить из файла.

rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/

/exclude-file.txt

Выводы

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

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Похожие статьи

10 примеров использования Rsync в Linux

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

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

 

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

 

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

 

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

 

Установка rsync на вашем устройстве с Linux

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

# yum install rsync (On Red Hat)
#sudo apt-get install rsync (On Debian/Ubuntu)

 

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

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

# rsync -zvh backup.tar /tmp/backups/

 

Если место назначения еще не существует, rsync автоматически его создаст.

 

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

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

[root@sedicomm]sudo rsync -avzh /etc/firefox /tmp/backups/

 

 

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

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

[root@sedicomm]$ 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:

[root@user]# 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

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

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

 

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

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

[root@sedicomm]# 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:
[root@sedicomm]# 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». Он отображает файлы и время, оставшееся до завершения передачи:

[root@sedicomm]# 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

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

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

[root@sedicomm]# 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 в место назначения:

[root@sedicomm]# touch test.txt
 [root@sedicomm]# rsync -avz --delete [email protected]:/var/lib/rpm/ .
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 КБ.

[root@sedicomm]# 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“:

[root@sedicomm]# 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

[root@sedicomm]# ll backup.tar

ls: backup.tar: No such file or directory

 

 

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

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

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

root@sedicomm]# 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 пропускную способность:

[root@sedicomm]# 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“:

[root@sedicomm]# 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.

 

 

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

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

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

Чтобы знать больше и выделяться знаниями среди толпы 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, подайте заявку или получите бесплатную консультацию.

10 практических примеров команды Rsync в Linux

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

С помощью команды rsync вы можете удаленно и локально копировать и синхронизировать данные между каталогами, дисками и сетями, выполнять резервное копирование данных и зеркалировать между двумя компьютерами Linux.

Rsync Локальная и удаленная синхронизация файлов

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

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

[Вам также может понравиться: Как синхронизировать файлы / каталоги с помощью Rsync с нестандартным портом SSH]

Установить Rsync в системе Linux

Мы можем установить пакет rsync с помощью следующей команды в вашем дистрибутиве Linux.

 $ sudo apt-get install rsync [В Debian / Ubuntu и Mint]
$ pacman -S rsync [в Arch Linux]
$ emerge sys-apps / rsync [В Gentoo]
$ sudo dnf install rsync [в Fedora / CentOS / RHEL и Rocky Linux / AlmaLinux]
$ sudo zypper install rsync [В openSUSE]
 

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

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

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

 [[электронная почта защищена]] # rsync -zvh backup.tar.gz / tmp / backups /

создан каталог / tmp / backups
backup.tar.gz

отправлено 224,54 Кбайт, получено 70 байт 449.21 Кбайт / сек
общий размер 224,40K, ускорение 1,00
 

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

Локальные файлы Rsync

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

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

 [[электронная почта защищена]] # rsync -avzh / root / rpmpkgs / tmp / backups /

отправка добавочного списка файлов
rpmpkgs /
rpmpkgs / httpd-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
rpmpkgs / mod_ssl-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
rpmpkgs / nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs / nagios-plugins-2.3.3-5.el8.x86_64.rpm

отправлено 3,47 МБ получено 96 байтов 2,32 МБ / сек
общий размер 3,74 млн ускорение 1,08
 

Локальный каталог Rsync

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

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

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

 [[защита электронной почты]: ~] # rsync -avzh / root / rpmpkgs [защита электронной почты]: / root /

Подлинность хоста 192.168.0.141 (192.168.0.141) 'не может быть установлен.
Отпечаток ключа ED25519 - SHA256: bh3tiWQn4S5o6qmZhmtXcBROV5TU5h5t2C42QDEMx1c.
Этот ключ не известен под другими именами
Вы уверены, что хотите продолжить подключение (да / нет / [отпечаток пальца])? да
Предупреждение: Постоянно добавлено 192.168.0.141 (ED25519) в список известных хостов.
Пароль [защищенный адрес электронной почты]:
отправка добавочного списка файлов
rpmpkgs /
rpmpkgs / httpd-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
rpmpkgs / mod_ssl-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
rpmpkgs / nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs / nagios-plugins-2.3.3-5.el8.x86_64.rpm

отправлено 3,74 МБ получено 96 байтов 439,88 КБ / сек
общий размер 3,74 млн ускорение 1,00
 

Удаленная система каталога Rsync

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

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

 [[защита электронной почты]: ~] # rsync -avzh [защита электронной почты]: / root / rpmpkgs / tmp / myrpms

Пароль [защищенный адрес электронной почты]:
получение инкрементного списка файлов
создан каталог / tmp / myrpms
rpmpkgs /
rpmpkgs / httpd-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
rpmpkgs / mod_ssl-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
rpmpkgs / nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs / nagios-plugins-2.3.3-5.el8.x86_64.rpm

отправлено 104 байта, получено 3,49M байта 997.68 Кбайт / сек
общий размер 3,74 млн ускорение 1,07
 

Rsync удаленного каталога на локальный

3. Rsync через SSH

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

[Вам также может понравиться: Как защитить и укрепить сервер OpenSSH]

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

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

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

 [[защита электронной почты]: ~] # rsync -avzhe ssh [защита электронной почты]: / root / anaconda-ks.cfg / tmp

пароль пользователя root [email protected]:
получение инкрементного списка файлов
анаконда-кс.cfg

отправлено 43 байта получено 1,10 КБ 325,43 байта / сек
общий размер 1.90K, ускорение 1.67
 

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

Копировать файл с локального сервера на удаленный сервер с помощью SSH
 [[защита электронной почты]: ~] # rsync -avzhe ssh backup.tar.gz [защита электронной почты]: / backups /

Пароль [защищенный адрес электронной почты]:
отправка добавочного списка файлов
созданный каталог / резервные копии
backup.tar.gz

отправлено 224,59 Кбайт получено 66 байтов 64,19 Кбайт / сек
общий размер 224.Ускорение 40K составляет 1,00
 

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

[Вам также может понравиться: Как использовать Rsync для синхронизации новых или измененных / измененных файлов в Linux]

4. Показать прогресс при передаче данных с помощью rsync

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

 [[защита электронной почты]: /] # rsync -avzhe ssh --progress / root / rpmpkgs [защита электронной почты]: / root / rpmpkgs

Пароль [защищенный адрес электронной почты]:
отправка добавочного списка файлов
rpmpkgs /
rpmpkgs / httpd-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
          1,47 млн ​​100% 31,80 МБ / с 0:00:00 (xfr # 1, to-chk = 3/5)
rpmpkgs / mod_ssl-2.4.37-40.module_el8.5.0 + 852 + 0aafc63b.x86_64.rpm
        138,01 КБ 100% 2,69 МБ / с 0:00:00 (xfr # 2, to-chk = 2/5)
rpmpkgs / nagios-4.4.6-4.el8.x86_64.rpm
          2,01 млн 100% 18,45 МБ / с 0:00:00 (xfr # 3, to-chk = 1/5)
rpmpkgs / nagios-plugins-2.3.3-5.el8.x86_64.rpm
        120,48 КБ 100% 1,04 МБ / с 0:00:00 (xfr # 4, to-chk = 0/5)

отправлено 3.Получено 74 Мбайт 96 байтов 1,50 Мбайт / сек
общий размер 3,74 млн ускорение 1,00
 

Ход выполнения Rsync при копировании файлов

5. Использование параметров –include и –exclude

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

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

 [[защита электронной почты]: /] # rsync -avze ssh --include 'R *' --exclude '*' [защита электронной почты]: / var / lib / rpm / / root / rpm

Пароль [защищенный адрес электронной почты]:
получение инкрементного списка файлов
создан каталог / root / rpm
./
  Требовать имя 

отправлено 61 байт получено 273 074 байта 60 696,67 байт / сек
общий размер 761 856 ускорение 2,79
 

Rsync Включить и исключить файлы

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

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

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

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

 [[электронная почта защищена]: ~] # cd / root / rpm /
[[электронная почта защищена]: ~ / об / мин] # touch test.txt
[[защита электронной почты]: ~ / rpm] # rsync -avz --delete [защита электронной почты]: / var / lib / rpm / / root / rpm /

Пароль [защищенный адрес электронной почты]:
получение инкрементного списка файлов
удаление теста.текст
./
.dbenv.lock
.rpm.lock
Базовые имена
Имя конфликта
Dirnames
Enhancename
Filetriggername
Группа
Installtid
Имя
Устаревшее имя
Пакеты
Providename
Sha1header
Sigmd5
Предложить имя
Дополнение
Трансфилет
Имя триггера
__db.001
__db.002
__db.003

отправлено 445 байт получено 18 543 954 байта 2472586,53 байта / сек
общий размер 71 151 616 ускорение 3,84
 

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

Параметр удаления Rsync

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

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

 [[защита электронной почты]: ~] # rsync -avzhe ssh --max-size = '200k' / var / lib / rpm / [защита электронной почты]: / root / tmprpm

Пароль [защищенный адрес электронной почты]:
отправка добавочного списка файлов
создан каталог / root / tmprpm
./
.dbenv.lock
.rpm.lock
Имя конфликта
Enhancename
Filetriggername
Группа
Installtid
Имя
Устаревшее имя
Рекомендовать имя
Требовать имя
Sha1header
Sigmd5
Предложить имя
Дополнение
Трансфилет
Имя триггера
__db.002

отправлено 129,52 Кбайт получено 396 байтов 28,87 Кбайт / сек
общий размер 71,15M ускорение 547,66
 

Rsync Установить максимальный размер передаваемых файлов

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

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

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

 [[электронная почта защищена]: ~] # rsync --remove-source-files -zvh backup.tar.gz [электронная почта защищена]: / tmp / backups /

Пароль [защищенный адрес электронной почты]:
backup.tar.gz

отправлено 795 байт получено 2,33 КБ 894,29 байт / сек
общий размер 267,30K ускорение 85,40

  [[электронная почта защищена]: ~] # ls -l backup.tar.gz 

ls: нет доступа к 'backup.tar.gz': нет такого файла или каталога
 

Rsync Удалить исходный файл после передачи

9.Выполните пробный запуск с rsync

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

[Вам также может понравиться: Как синхронизировать два веб-сервера / веб-сайта Apache с помощью Rsync]

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

 [[защита электронной почты]: ~] # rsync  --dry-run  --remove-source-files -zvh backup.tar.gz [защита электронной почты]: / tmp / backups /

Пароль [защищенный адрес электронной почты]:
backup.tar.gz

отправлено 50 байт получено 19 байт 19,71 байт / сек
общий размер 267,30K, ускорение 3,873,97  (СУХОЙ ЗАПУСК) 
 

Пробный запуск Rsync

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

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

 [[email protected]] # rsync --bwlimit = 100 -avzhe ssh / var / lib / rpm / [email protected]: / root / tmprpm /
Пароль [защищенный адрес электронной почты]:
отправка добавочного списка файлов
отправлено 324 байта получено 12 байтов 61,09 байт / сек
общий размер 38.08M ускорение 113347.05 

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

 [[электронная почта защищена]] # rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
отправлено 14,71 МБ получено 31 байт 3,27 МБ / сек
общий размер 16,18M ускорение 1,10 

Теперь с rsync все, вы можете просмотреть справочных страниц , чтобы узнать о дополнительных параметрах. Оставайтесь на связи с Tecmint , чтобы в будущем получить еще больше увлекательных и интересных руководств. Оставьте свои комментариев и предложений .

Команда

Rsync в Linux с примерами

rsync — это быстрая и универсальная утилита командной строки для синхронизации файлов и каталогов между двумя местоположениями через удаленную оболочку или с / на удаленный демон Rsync.Он обеспечивает быструю инкрементную передачу файлов, передавая только различия между источником и местом назначения.

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

В этой статье объясняется, как использовать rsync , на практических примерах и подробных объяснениях наиболее распространенных параметров rsync .

Установка Rsync #

Утилита rsync предустановлена ​​в большинстве дистрибутивов Linux и macOS.Если в вашей системе не установлен rsync , вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.

Установите Rsync на Ubuntu и Debian #

  sudo apt install rsync  

Установите Rsync на CentOS и Fedora #

  sudo yum install rsync  

Синтаксис команды Rsync #

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

Выражения утилиты rsync имеют следующий вид:

  Локальный на локальный: rsync [ОПЦИЯ]... [SRC] ... DEST
От локального к удаленному: rsync [ОПЦИЯ] ... [SRC] ... [ПОЛЬЗОВАТЕЛЬ @] ХОЗЯИН: DEST
От удаленного к локальному: rsync [ОПЦИЯ] ... [ПОЛЬЗОВАТЕЛЬ @] ХОСТ: SRC ... [DEST]
  
  • ОПЦИЯ — Опции rsync
    .
  • SRC — Исходный каталог.
  • DEST — Каталог назначения.
  • ПОЛЬЗОВАТЕЛЬ — удаленное имя пользователя.
  • HOST — удаленное имя хоста или IP-адрес.

rsync предоставляет ряд параметров, которые управляют поведением команды.Наиболее широко используются следующие варианты:

  • -a , --archive , архивный режим, эквивалент -rlptgoD . Этот параметр указывает rsync рекурсивно синхронизировать каталоги, передавать специальные и блочные устройства, сохранять символические ссылки, время модификации, группы, владение и разрешения.
  • -z , - сжать . Эта опция заставляет rsync сжимать данные при их отправке на целевую машину. Используйте эту опцию, только если соединение с удаленным компьютером медленное.
  • -P , эквивалент - частичный --progress . Когда используется эта опция, rsync показывает индикатор выполнения во время передачи и сохраняет частично переданные файлы. Это полезно при передаче больших файлов по медленным или нестабильным сетевым соединениям.
  • - удалить . Когда используется эта опция, rsync удаляет посторонние файлы из места назначения. Это полезно для зеркалирования.
  • -q , - тихий .Используйте эту опцию, если вы хотите подавить сообщения, не связанные с ошибками.
  • . Эта опция позволяет вам выбрать другую удаленную оболочку. По умолчанию rsync настроен на использование ssh.

Базовое использование Rsync #

Самый простой вариант использования rsync — это копирование одного файла из одного в другое локальное расположение. Вот пример:

  rsync -a /opt/filename.zip / tmp /  

Пользователь, выполняющий команду, должен иметь разрешения на чтение в исходном местоположении и разрешения на запись в месте назначения.

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

  rsync -a /opt/filename.zip /tmp/newfilename.zip  

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

  rsync -a /var/www/domain.com/public_html/ / var / www / domain.com / public_html_backup /  

Если целевой каталог не существует, rsync создаст его.

Стоит отметить, что rsync по-разному обрабатывает исходные каталоги с завершающей косой чертой (/). Если исходный каталог имеет косую черту в конце, команда скопирует только содержимое каталога в целевой каталог. Если косая черта в конце опущена, rsync копирует исходный каталог в целевой каталог.

Использование

rsync для синхронизации данных с / на удаленную машину #

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

В следующем примере мы переносим каталог с локального компьютера на удаленный:

  rsync -a / opt / media / remote_user @ remote_host_or_ip: / opt / media /  

Если вы не установили пароль без пароля SSH вход
на удаленную машину вам будет предложено ввести пароль пользователя.

Для передачи данных с удаленного компьютера на локальный используйте удаленное расположение в качестве источника:

  rsync -a remote_user @ remote_host_or_ip: / opt / media / / opt / media /  

Если SSH на удаленном узле прослушивая порт, отличный от порта по умолчанию 22, укажите порт с помощью параметра -e :

  rsync -a -e "ssh -p 2322" / opt / media / remote_user @ remote_host_or_ip: / opt / media /  

При передаче больших объемов данных рекомендуется запускать команду rsync внутри экрана.
сеанс или использовать параметр -P :

  rsync -a -P remote_user @ remote_host_or_ip: / opt / media / / opt / media /  

Исключить файлы и каталоги #

Есть два варианта исключения файлов и каталоги.Первый вариант — использовать аргумент --exclude и указать файлы и каталоги, которые вы хотите исключить, в командной строке.

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

В следующем примере показано, как исключить каталоги node_modules и tmp :

  rsync -a --exclude = node_modules --exclude = tmp / src_directory / / dst_directory /  

Второй вариант — использовать параметр --exclude-from и укажите файлы и каталоги, которые вы хотите исключить из файла.

  rsync -a --exclude-from = '/ exclude-file.txt' / src_directory / / dst_directory /  

/exclude-file.txt

Заключение #

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

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Как использовать rsync

В этой статье показано, как использовать rsync .

Когда использовать

rsync

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

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

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

Как использовать

rsync

Программа rsync имеет множество функций, но для начала достаточно следующих параметров командной строки:

  • Параметр -a включает режим архивации. В режиме архива rsync сохраняет все права доступа к файлам, владение и время модификации.
  • Параметр -e указывает используемую удаленную оболочку.Часто это ssh .
  • Параметр -l сохраняет все символические ссылки.

    Если вы используете опцию -a , эта опция включается автоматически.

  • Параметр -r заставляет rsync рекурсивно проходить через любые подкаталоги.

    Если вы используете опцию -a , эта опция включается автоматически.

  • Параметр -v включает подробный режим, что означает, что rsync отображает информацию во время работы.(По умолчанию rsync не отображает никакой информации.) Вы можете опустить этот параметр или, чтобы увидеть еще более подробную информацию, используйте параметр -vv .
  • Параметр -z включает сжатие при передаче файлов.

Используя эти параметры rsync , мы можем просмотреть несколько примеров. Предположим, вы хотите создать резервную копию файлов своего веб-сайта на другом сервере. Для этого выполните следующие действия:

  1. Войдите в свою учетную запись, используя SSH.
  2. Чтобы убедиться, что вы находитесь в своем домашнем каталоге, введите следующую команду:
     cd ~ 
  3. Чтобы создать резервную копию (или «отправить») вашего каталога public_html в учетную запись пользователя на удаленном сервере по адресу example.com , введите следующую команду:

     rsync -avz - e ssh public_html [адрес электронной почты защищен]: ~ / backup 

    Эта команда предполагает, что удаленный сервер использует SSH на порту 22. Если вы, например, выполняли резервное копирование на другой хост-сервер A2, вы должны использовать следующую команду, потому что SSH работает на порту 7822:

     rsync -avz -e "ssh -p7822" public_html [электронная почта защищена]: ~ / backup 
  4. После завершения rsync , пользователь на удаленном сервере на пример.com имеет в своей учетной записи каталог backup / public_html , который является точной копией каталога public_html в вашей учетной записи.

Другой распространенный сценарий — «извлечение» файлов из удаленного места. Например, у вас может быть настроена среда разработки на удаленном сервере. Вы можете использовать rsync для извлечения файлов из удаленного репозитория в свою учетную запись хостинга A2. При каждом последующем «извлечении» rsync будет обновлять только те файлы, которые изменились с момента последнего обновления, тем самым экономя время и пропускную способность.Для этого из домашнего каталога выполните следующую команду:

 rsync -avz -e ssh [защита электронной почты]: ~ / public_html. 

После завершения rsync ваш каталог public_html будет содержать копию файлов в каталоге public_html удаленного сервера.

Дополнительная информация

Эта статья представляет собой лишь краткое введение в расширенные возможности rsync . Чтобы просмотреть официальную онлайн-документацию по программе rsync , посетите http: // rsync.samba.org/documentation.html.

20 полезных примеров в Linux

Введение

Rsync или Remote Sync — это бесплатный инструмент командной строки, который позволяет передавать файлы и каталоги в локальные и удаленные места назначения. Rsync используется для зеркалирования, резервного копирования или переноса данных на другие серверы.

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

Следуйте этому руководству, чтобы узнать, как использовать rsync с 20 примеров команд для большинства случаев использования в Linux.

Предварительные требования

  • Пользователь с sudo или root привилегиями
  • Доступ к терминалу / командной строке
  • SSH-доступ для удаленных примеров rsync

Синтаксис команды Rsync

Синтаксис команды rsync изменяется в зависимости от использования инструмента. Мы рассмотрим все сценарии в следующих примерах. Синтаксис Rsync в простейшей форме выглядит так:

  Параметры rsync НАЗНАЧЕНИЕ ИСТОЧНИКА  

Для удаленной передачи данных необходимо указать адрес хоста, но об этом позже.

Параметры Rsync

Инструмент rsync имеет множество опций. Вы можете ввести rsync в свой терминал и получить все подробности. Мы перечислим некоторые из наиболее распространенных параметров rsync.

Сюда входят:

-r Позволяет рекурсивно синхронизировать данные, но не сохраняет права собственности на пользователей и группы, разрешения, временные метки или символические ссылки.
-a Режим архива ведет себя как рекурсивный режим, но сохраняет все права доступа к файлам, символические ссылки, права собственности на файлы и т. Д.
-z Используется для сжатия данных во время передачи для экономии места.
-b Выполняет резервное копирование во время синхронизации данных.
-h Показывает числа на выходе в удобочитаемом формате.
-n Выполняет работу всухую. Используется для тестирования перед фактической синхронизацией.
-e Указывает rsync использовать протокол SSH для удаленных передач.
-progress Отображает ход передачи во время синхронизации.
-v Подробный вывод. Отображает подробную информацию о переводе.
-q Используется для подавления вывода для команды и параметров rsync.

Примеры команд Rsync

Rsync — это универсальный инструмент синхронизации, который можно настроить в соответствии с вашими конкретными задачами. В этом руководстве мы будем использовать параметры архив ( -a ) и подробный ( -v ) при необходимости.

Обратитесь к примерам rsync ниже, чтобы охватить большую часть использования rsync.

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

1. Копирование одного файла локально

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

Например:

  rsync -v /home/test/Desktop/sample.txt / home / test / Desktop / rsync /  

Команда передает файл sample.txt в каталог rsync . Если целевой каталог не существует, добавьте косую черту в конце, и rsync создаст его, как в нашем примере.

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

2. Копирование нескольких файлов локально

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

  rsync -v /home/test/Desktop/sample.txt /home/test/Desktop/sample2rs.txt / home / test / Desktop / rsync  

Этот метод следует использовать для небольшого количества файлов. Если список больше, вы можете обратиться к опции --exclude .

3. Копирование каталога и всех подкаталогов локально (рекурсивное копирование файлов и каталогов)

Чтобы скопировать каталог и его содержимое в другое место на вашем компьютере, используйте параметр -a или -r .Использовали архив вариант :

  rsync -av / home / test / Desktop / Linux / home / test / Desktop / rsync  

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

4. Скопируйте файл или каталог с локального на удаленный компьютер

Чтобы скопировать каталог / home / test / Desktop / Linux в каталог / home / test / Desktop / rsync на удаленном компьютере, необходимо указать IP-адрес места назначения.

Добавьте IP-адрес и место назначения после исходного каталога. Не забудьте поставить двоеточие ( : ) после IP-адреса удаленного хоста без пробелов перед местом назначения.

Команда выглядит так:

  rsync -av / home / test / Desktop / Linux 192.168.56.100:/home/test/Desktop/rsync  

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

  rsync -a / home / test / Desktop / Linux jay @ 192.168.56.100: / home / test / Desktop / rsync  

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

Например:

  rsync -av /home/test/Desktop/sample_file.txt 192.168.56.100:/home/test/Desktop/rsync  

5. Копирование нескольких файлов или каталогов с локального на удаленный компьютер

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

Например:

  rsync -av / home / test / Desktop / Linux / / home / test / Music 192.168.56.100:/home/test/Desktop/rsync  

6. Укажите протокол rsync для удаленной передачи

Утилиту rsync можно указать с помощью опции -e использовать определенный протокол для передачи файлов. Чтобы использовать Rsync через SSH для удаленной передачи файлов, добавьте -e ssh к команде rsync .

Например, чтобы передать sample.txt с рабочего стола на рабочий стол удаленного компьютера:

  rsync -e ssh /home/test/Desktop/sample.txt 192.168.56.100:/home/test/Desktop  

7. Скопируйте файл или каталог с удаленного компьютера на локальный

Rsync поддерживает передачу файлов с удаленного сервера на локальный компьютер.

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

Например:

  rsync -av 192.168.56.100: / home / test / Desktop / DirM / home / test / Desktop  

Эта команда скопировала каталог DirM из 192.168.56.100 в / home / test / Desktop на локальном сервере.

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

  rsync -v 192.168.56.100:/home/test/Desktop/testfile.txt / home / test / Desktop  

8. Копирование нескольких файлов или каталогов с локального на удаленный компьютер

Для передачи нескольких файлов или нескольких каталогов с удаленного сервера укажите пути в фигурных скобках после IP-адреса сервера.Разделите пути запятой.

Например:

  rsync -av 192.168.56.100:{/home/test/Desktop/DirM,/home/test/Desktop/Dir1} / home / test / rsync  

То же самое и с файлами. Перечислите в фигурных скобках столько файлов, сколько вам нужно.

9. Показать ход выполнения rsync во время передачи данных

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

Добавьте флаг --progress к команде rsync , чтобы просмотреть объем переданных данных, скорость передачи и оставшееся время.

Например, для резервного копирования Dir1 на удаленный сервер и отображения прогресса введите:

  rsync -av --progress / home / test / Desktop / Dir1 192.168.56.100:/home/test/Desktop/rsync  

10. Удалите несуществующий исходный файл или каталог из места назначения

Используйте параметр --delete , чтобы синхронизировать источник и цель.

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

  rsync -av --delete / home / test / Desktop / Dir1 192.168.56.100:/home/test/Desktop/rsync  

11. Удалить исходные файлы после передачи

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

В этом случае используйте флаг --remove-source-files , чтобы удалить указанный вами исходный файл.

Например, эта команда передает файл резервной копии weekly.zip , а затем удаляет его из источника:

  rsync -v --remove-source-files /home/test/backup/weekly.zip 192.168.56.100:/home/test/Desktop/rsync/  

12. Rsync Dry Run

Rsync — мощный инструмент синхронизации. Поскольку этот инструмент позволяет копировать и удалять данные, мы советуем сначала выполнить пробный запуск, чтобы проверить, выполняет ли rsync то, что вы намеревались сделать.

Параметр пробного прогона особенно полезен, когда вы хотите удалить файлы.Чтобы выполнить пробный прогон, используйте параметр --dry-run и следуйте обычному синтаксису rsync.

Например:

  rsync -av --dry-run --delete / home / test / Desktop / Dir1 192.168.56.100:/home/test/Desktop/rsync  

Результат выглядит так же, как и при фактической синхронизации файлов. Однако на этот раз данные не будут синхронизированы. Для подтверждения того, что произошла проверка, а не фактическая передача, внизу терминала отображается (СУХОЙ ЗАПУСК).

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

Чтобы определить максимальный размер файла, который будет передавать rsync, используйте --max-size = add_size .

Например, чтобы передать файлы размером не более 500 КБ, используйте эту команду:

  rsync -av --max-size = 500k / home / test / Desktop / Dir1 192.168.56.100:/home/test/Desktop/rsync/  

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

Используйте --min-size = add_size с rsync, если вы не хотите передавать файлы меньше указанного вами размера.Эта опция полезна, например, когда вы хотите пропустить небольшие файлы журнала или миниатюры.

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

  rsync -av --min-size = 10k / home / test / Desktop / 192.168.56.100:/home/test/Desktop/rsync/  

15. Установка предела пропускной способности rsync

Если вы хотите определить предел пропускной способности при передаче данных между машинами, используйте --bwlimit = KB / s .

Эта опция полезна, когда вы не хотите забивать пропускную способность вашей сети.

Чтобы установить максимальную скорость передачи 50 КБ / с, введите:

  rsync -av --bwlimit = 50 --progress / home / test / Desktop / Dir1 192.168.56.100:/home/test/Desktop/rsync/  

Мы также использовали параметр --progress , чтобы продемонстрировать использование --bwlimit .

16. Копирование определенного типа файла

Вы можете использовать rsync для копирования только определенного типа файла. Для этого используйте звездочку ( * ) вместо имени файла и добавьте расширение.

Например, чтобы скопировать только файлы .txt, введите:

  rsync -v /home/test/Documents/*.txt / home / test / Desktop / rsync /  

Эта команда rsync передает все текстовые файлы из каталога Documents в каталог rsync на рабочем столе.

17. Копировать структуру каталогов, но пропускать файлы

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

Для этого добавьте -f "+ * /" -f "- *" перед исходным каталогом.

Например, чтобы скопировать структуру каталога Linux в Документы , введите:

  rsync -av -f "+ * /" -f "- *" / home / test / Desktop / Linux / home / test / Documents  

18. Добавить штамп даты в имя каталога

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

Добавьте $ (дата +% Y-% m-% d) к имени каталога назначения, который вы хотите создать. Эта опция полезна, когда вы хотите отслеживать, когда произошла передача, не открывая свойства каталога.

Например:

  rsync -av / home / test / Desktop / Linux / home / test / Desktop / rsync $ (дата +% Y-% m-% d)  

19. Не копировать исходный файл, если был изменен тот же конечный файл

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

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

Чтобы избежать перезаписи измененных файлов назначения, используйте параметр -u .

Например:

  rsync -avu / home / test / Desktop / Linux / / home / test / Desktop / rsync  

20. Показать разницу между исходным и конечным файлами

Когда вы начинаете передачу данных, вы можете использовать флаг -i с rsync, чтобы проверить, есть ли разница между источником и местом назначения.

Например:

  rsync -avi / home / test / Desktop / Linux / / home / test / Desktop / rsync  

Пример выше показывает, что файл sample2rs.txt отсутствует в месте назначения.

Возможные буквы в выводе:

  • f обозначает файл
  • d показывает, что целевой файл находится под вопросом
  • t показывает, что метка времени изменилась
  • s показывает размер поменял

Заключение

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

Примеры

RSync — параметры Rsync и как копировать файлы через SSH

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

Что такое RSync

Rsync работает быстрее, чем такие инструменты, как протокол безопасного копирования (SCP). Он использует алгоритм дельта-передачи, который сводит к минимуму передачу данных, копируя только те разделы файла, которые были обновлены.

Некоторые из дополнительных функций Rsync включают:

  • Поддерживает копирование ссылок, устройств, владельцев, групп и разрешений
  • Не требует привилегий суперпользователя
  • Конвейеры передачи файлов для минимизации затрат на задержку

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

Как работает RSync

Теперь, когда вы знаете, что такое Rsync, давайте посмотрим, как с ним работать.

Rsync работает аналогично другим инструментам удаленного управления сервером, таким как SSH и SCP.

Вот основной синтаксис Rsync:

  rsync [параметры] источник [назначение]  

Вот синтаксис для передачи файла из вашей локальной системы на удаленный сервер. Это также называется «выталкивающей» операцией.

  rsync local_file_path user @ remote-host: remote_file_path  

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

  rsync user @ remote-host: remote_file_path local_file_path  

Примечание. При работе с удаленными системами убедитесь, что у вас есть SSH-доступ к удаленной системе. Rsync устанавливает соединение с помощью SSH, чтобы разрешить передачу файлов.

Как использовать флаги в RSync

Rsync позволяет добавлять дополнительные параметры с помощью флагов командной строки. Давайте посмотрим на несколько полезных флагов.

Рекурсивный

Если вы добавите параметр -r , RSync выполнит рекурсивную передачу файлов.Это полезно при работе с каталогами. Вот пример:

  rsync -r user @ remote-host: remote_directory / local_directory  

Архив

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

Флаг архива также рекурсивно синхронизирует файлы, поэтому он используется чаще, чем флаг рекурсии. Вот как вы его используете:

  rsync -a user @ remote-host: remote_directory / local_directory  

Сжатие

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

  rsync -az user @ remote-host: remote_directory / local_directory  

Progress

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

  rsync -aP user @ remote-host: remote_directory / local_directory  

Verbose

Наконец, команда verbose может помочь вам понять каждый этап передачи файла.Для этого вы можете использовать флаг -v .

  rsync -av user @ remote-host: remote_directory / local_directory  

Вы также можете использовать команду help с RSnsc, чтобы получить список всех параметров и флагов.

  rsync --help  

rsync help

Заключение

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

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

Ссылки

Я Маниш и пишу о кибербезопасности, искусственном интеллекте и DevOps. Если вам понравилась эта статья, вы можете найти мой блог здесь.

Как использовать команду Rsync в Unix

Введение

Цифровая революция во многом изменила нашу жизнь. В настоящее время все наши фотоальбомы, музыкальные коллекции, книжные полки и т. Д. Являются цифровыми — на диске записано двоичных файлов. Наша жизнь и работа делятся между множеством устройств.У компаний есть зоны разработки, тестирования и тестирования, и к ним подключены десятки разработчиков.

Из этого сдвига в динамике нашей жизни возникли две проблемы: как сохранить целостность наших данных и как сделать их синхронизированными на всех наших устройствах? Введите rsync , инструмент, который нацелен, и фактически преуспевает в решении этих проблем .

Впервые выпущенный в 1996 году под лицензией GPLv3, rsync — это инструмент для передачи и синхронизации файлов с открытым исходным кодом, написанный на C.Он работает, сравнивая размеры и время модификации ( x ), чтобы решить, какие файлы необходимо синхронизировать, и использует эффективный алгоритм для минимизации пропускной способности сети для передачи.

Следуя философии Unix, rsync очень легок, легко настраивается и поддерживает сценарии . Он достиг большой популярности и повсеместного распространения. Практически каждый дистрибутив Linux поставляется с предустановленной программой rsync; вы даже можете найти его на MacOS прямо из коробки!

Конечно, его можно собрать и из исходников — архив можно найти здесь.Однако для пользователей Windows требуются некоторые дополнительные усилия. Его можно использовать со средой выполнения Cygwin или под WSL.

Основные операции rsync

  $ rsync options источник назначения
  

Синтаксис довольно прост. Вы вызываете rsync , перечисляете параметры и выбираете источник и место назначения. Все параметры можно найти на страницах rsync man . Давайте посмотрим на ключевые параметры, которые мы будем использовать:

  • --archive или -a
    Этот параметр является псевдонимом для -rlptgoD , который сводится к — выполнить рекурсивный вызов, пытаясь сохранить как можно больше .Сюда входят mtimes , разрешения и владение, символическая ссылка, и т. Д. Эта опция используется почти всегда. Жесткие ссылки не включены, поскольку их отслеживание может быть дорогостоящей операцией. Их можно явно запросить с опцией -H .

  • --verbose или -v и - удобочитаемый или h .
    Этот параметр, очень распространенный в программах командной строки, заставляет rsync регистрировать выполняемые операции в стандартном потоке вывода.Его следует пропускать в сценариях, где предпочтительнее использовать параметр --quiet или -q , поскольку он не дает вывода.

  • --compress или -z
    Этот параметр использует сжатие во время передачи по сети для уменьшения пропускной способности. Очень желательно и почти всегда используется; То же, что и вариант - архив .

  • --dry-run или -n
    Это указывает rsync на моделировать процесс и сообщать нам, что будет обновлено или удалено без каких-либо действий.Полезно для двойной проверки наших аргументов и работы с конфиденциальными данными.

  • --update или -u
    Этот параметр указывает rsync пропускать файлы, более новые в месте назначения, чем в источнике. Мы более подробно рассмотрим его эффекты в приведенных ниже примерах.

  • --del
    Этот параметр указывает rsync удалить все файлы в месте назначения, не включенные в аргумент источника. Полезно для очистки временных файлов, которые нам больше не нужны, но которые были сохранены во время предыдущей синхронизации.

  • --inplace
    По умолчанию rsync работает путем копирования новых файлов и последующего удаления данных, которые он заменяет. Эта опция указывает ему заменить данные на , которые не занимают много места в процессе передачи. Полезно в ситуациях, когда не хватает места для хранения, т.е. перенос на флешку и т.д.

Примеры rsync

  $ rsync -avz src dest
  

Это наиболее распространенный способ вызова rsync .Сохраняйте и сжимайте все, регистрируя операции.

Для удаленных мест:

  $ rsync -avz src [адрес электронной почты защищен]: расположение
  

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

  $ rsync -avuz SRC / mnt / my_hdd
  

rsync с удаленными хостами

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

Выполнение полного резервного копирования системы

Полное резервное копирование системы — обычное дело для многих пользователей * nix, если они либо особенно обеспокоены своими данными, либо просто хотят экспериментировать и иметь отказоустойчивые системы. Мы будем использовать некоторые дополнительные параметры, такие как -A и -X , которые сохраняют списки управления доступом и расширенные атрибуты.Некоторые деревья файлов в нашей файловой системе не нужны, поэтому мы исключим их с помощью параметра --exclude . Мы также удалим все остаточные файлы, которые мы удалили локально между двумя резервными копиями:

Ознакомьтесь с нашим практическим практическим руководством по изучению Git с лучшими практиками, общепринятыми стандартами и включенной шпаргалкой. Прекратите гуглить команды Git и на самом деле выучите его!

  $ sudo rsync -aAXv --del --exclude = {"/ dev / *", "/ proc / *", "/ sys / *", "/ tmp / *", "/ run / *" , "/ mnt / *", "/ media / *", "/ lost + found"} dest
  

Ежедневное резервное копирование с помощью

rsync и crontab

Используя crontab , мы можем планировать ежедневное, еженедельное, ежемесячное или даже переменное время резервного копирования.Давайте напишем выражение cron и запланируем выполнение нашей команды rsync каждый день в 00:00 :

  0 0 * * * корень sudo rsync -aAXv --del --exclude = {"/ dev / *", "/ proc / *", "/ sys / *", "/ tmp / *", "/ run / * "," / mnt / * "," / media / * "," / lost + found "} dest
  

В вашем каталоге / etc вы можете найти несколько каталогов cron. * , в зависимости от того, как часто их содержимое должно проверяться и запускаться. Чтобы создать ежедневную резервную копию всей нашей системы, мы можем воспользоваться приведенной выше командой и поместить ее в файл с именем, скажем, daily_backup.sh и поместите его в /etc/cron.daily/ .

Эта команда будет запускаться в определенное время, определенное вашим crontab . Убедитесь, что ваш скрипт исполняемый и начинается с определяющего шебанга.

Заключение

Что не нравится? Минималистичный и легкий инструмент командной строки, который прост в использовании, способен делать много вещей, легко помещается в сценарии и делает то, что делает, довольно быстро. Неудивительно, что rsync стал настолько популярным и доступным.Он довольно хорошо справляется с той единственной задачей, которая действительно нужна каждому, независимо от того, осознает это или нет.

20+ переключателей команды Rsync и общие примеры использования с примерами

Просмотры сообщений:
16 571

«rsync» — мощная команда в среде Linux.

rsync означает удаленную синхронизацию. Обычно rsync используется для передачи файла с одного сервера (источника) на другой сервер (место назначения).

rsync имеет много переключателей или опций для очень полезного управления командой.Здесь я объясняю переключатели команды rsync на примерах.

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

Общий синтаксис для Rsync:

  # rsync [параметры] Источники назначения.
  

Переключатели rsync:

1, -v, –verbose

Повышение уровня детализации.

Пример:

Я создал файл «rsync» в папке «/ root / Rsync /» для целей тестирования.

  [электронная почта защищена] [~] # rsync -v / root / Rsync / rsync. 
rsync

отправлено 65 байт получено 31 байт 192,00 байт / сек
общий размер 0, ускорение 0,00
 

2, -r, –рекурсивный

Рекурсия в каталоги.

3, -l, –ссылки

Скопируйте символические ссылки как символические ссылки.

4, -p, –perms

Сохранить разрешения.

5, -t, –times

Сохранить время модификации.

6, -g, –группа

Группа сохранения.

7, -о, –владелец

владелец заповедника (только суперпользователь)

8, -D

То же, что и –устройства –специальные.

–устройства: сохраняют файлы устройств (только суперпользователь).
–специальные: сохранить специальные файлы.

9, -H, — жесткие ссылки

Сохранить жесткие ссылки

10, -A, –acls

Сохранить ACL (подразумевает –perms)

11, -X, –xattrs

Сохранить расширенные атрибуты

12, -a, –архив

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

Архивный режим; равно -rlptgoD (no -H, -A, -X)

13, -q, –тихий

Подавлять сообщения, не связанные с ошибками.

14, Чтобы указать размер файла для синхронизации:

–max-size = РАЗМЕР

Не передавайте файлы размером больше SIZE
–min-size = SIZE

Не передавайте файлы размером меньше

15, –удалено

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

16, W, — целиком

Копировать файлы целиком (без алгоритма дельта-xfer)

17, -u, –update

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

18, –прогресс

Просмотр хода выполнения rsync во время передачи.

19, шаблон включения и исключения.

–включить
– исключить

Паттерны заключаются в одинарные кавычки.

Примеры:

  [[защита электронной почты] crybit] # rsync -avz --include 'c *' --exclude '*' / root / crybit / 109.200.11.67:/root/Rsinc101 
Пароль [защищенный адрес электронной почты]:
stdin: это не tty
отправка добавочного списка файлов
cry1.док
cry2.doc
cry3.doc
cry4.doc
cry5.doc

отправлено 267 байт получено 107 байт 68,00 байт / сек
общий размер 0, ускорение 0,00
 

В приведенном выше примере файлы, начинающиеся с «c», включены в Rsync, а все остальные файлы исключены из операции Rsync.

20 -e: Rsync через оболочку (SSH)

Синтаксис:

  # rsync -avz -e Источник назначения ssh
  

Некоторые полезные комбинации переключателей и полезные примеры «Rsync»:

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

1, Как синхронизировать два каталога на одной машине?

Я создал два каталога (также несколько файлов внутри каждого каталога) в / root, чтобы проверить использование rsync.

  / корень / Rsync1 /
/ корень / Rsync2 /
  

Пример:

  [электронная почта защищена] [~] # rsync -zvr / root / Rsync1 / / root / Rsync2 /
  отправка инкрементного списка файлов
rsync1.txt
rsync10.txt
rsync2.txt
rsync3.текст
......
......
отправлено 502 байта получено 202 байта 1408,00 байт / сек
общий размер 0, ускорение 0,00
 

Где,
-z — включить сжатие
-v подробный
-r указывает на рекурсивный

2, Сохраните следующий параметр при синхронизации файлов с помощью переключателя -a.

 r, l, p, t, g, o, D: детали переключателя упомянуты в разделе выше.
Рекурсивный режим, символические ссылки, разрешения, отметка времени, владелец и группа
 

См. Пример ниже:

 [адрес электронной почты защищен] [~] # ll / root / Rsync1 / rsync10.текст
-rw-r - r-- 1 root root 0 17 февраля 07:40 /root/Rsync1/rsync10.txt
[электронная почта защищена] [~] # ll /root/Rsync2/rsync10.txt
-rw-r - r-- 1 root root 0 17 февраля 07:40 /root/Rsync2/rsync10.txt
 

3, Как Rsync файлы с удаленного сервера на локальный?

Выход аналогичен SCP, синтаксис для выполнения того же действия вставлен ниже:

  # rsync -azv Удаленный IP-адрес: / путь / для / Sync / Путь / к / Sync
  

Некоторые примеры:

Синхронизировать каталог с удаленного на локальный

  [[email protected] crybit] # rsync -azv MY.СЕРВЕР.IP: / корень / Rsync1 / корень / crybit /
  [адрес электронной почты защищен] пароль:
stdin: это не tty
получение инкрементного списка файлов
Rsync1 /
Rsync1 / rsync1.txt
Rsync1 / rsync10.txt
Rsync1 / rsync2.txt
Rsync1 / rsync3.txt
.....
.....
отправлено 205 байт получено 527 байт 77,05 байт / сек
общий размер 0, ускорение 0,00
 

Синхронизировать все файлы с удаленного на локальный

  [[электронная почта] crybit] # rsync -azv 109.200.11.67: / корень / Rsync1 / * / корень / crybit /
  [адрес электронной почты защищен] пароль:
stdin: это не tty
получение инкрементного списка файлов
rsync1.txt
rsync10.txt
rsync2.txt
rsync3.txt
...
...
отправлено 201 байт получено 499 байт 93,33 байт / сек
общий размер 0, ускорение 0,00
 

4, Как синхронизировать файлы с локального на удаленный сервер?

Синтаксис:

  # rsync -azv / local-path / для / Sync / Remote-IP: / path / to / Sync
  

Примеры :

  [[электронная почта] crybit] # rsync -avz / root / crybit / 109.200.11.67: / корень / Rsinc101
  [адрес электронной почты защищен] пароль:
stdin: это не tty
отправка добавочного списка файлов
создан каталог / root / Rsinc101
./
rsync1.txt
rsync10.txt
rsync2.txt
rsync3.txt
...
...
отправлено 1028 байт получено 399 байт 190,27 байт / сек
общий размер 0, ускорение 0,00
 
 Примечание 1: В примерах 3 и 4 вы можете использовать формат [email protected]: / path, если у вас есть только права пользователя на сервере.
Примечание 2: rsync автоматически создаст целевой каталог / местоположение, если его там нет.

Вот и все !! 🙂

Связанные:
groupdel, groupmems, groupmod, useradd, usermod, chgrp, chown, ls, head, tail, top, ps, find, crontab, ftp commands, tar, rpm

Требование: Необходимо написать сценарий для создания дампа коллекций Mongo DB и перемещения дампа в корзину AWS s3.

Предварительные требования: SSH-доступ к серверу Mongo DB, пользователь IAM с полным доступом AWS s3 [или записью], aws-cli на сервере, знание команд Mongo для создания дампа.

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

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