Rsync linux ��� ���

Содержание
  1. Команда Rsync в Linux с примерами
  2. Установка Rsync
  3. Установите Rsync в Ubuntu и Debian
  4. Установите Rsync на CentOS и Fedora
  5. Синтаксис команды Rsync
  6. Базовое использование Rsync
  7. Использование rsync для синхронизации данных с / на удаленную машину
  8. Исключить файлы и каталоги
  9. Выводы
  10. rsync (Русский)
  11. Contents
  12. Установка
  13. Фронтенды
  14. Как альтернатива cp/mv
  15. Предостережение о замыкающем слэше
  16. Как утилита для резервного копирования
  17. Автоматическое резервное копирование
  18. Автоматическое резервное копирование по SSH
  19. Автоматическое резервное копирование с помощью NetworkManager
  20. Автоматическое резервное копирование с помощью systemd и inotify
  21. Дифференциальное резервное копирование в течение недели
  22. Резервное копирование при помощи создания снимков
  23. Полная резервная копия системы
  24. Восстановление резервной копии
  25. Клонирование файловой системы
  26. Демон rsync
  27. Пример конфигурации
  28. Раздача файлов по списку

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

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

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

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

Установка Rsync

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

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

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

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

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

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

  • 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 проявляется в синхронизации каталогов. В приведенном ниже примере показано, как создать локальную резервную копию файлов веб-сайта:

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

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

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

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

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

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

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

Читайте также:  Windows install program log

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

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

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

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

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

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

Выводы

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

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

Источник

rsync (Русский)

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

Contents

Установка

rsync должен быть установлен как на устройстве-отправителе, так и на устройстве-получателе.

Фронтенды

  • Grsync — GTK-фронтенд.

https://www.opbyte.it/grsync/ || grsync

  • gutback — обёртка над rsync, написанная на Shell.

https://github.com/gutenye/gutbackup || gutbackupAUR

  • JotaSync — графический пользовательский интерфейс Java Swing для rsync со встроенным планировщиком.

https://trixon.se/projects/jotasync/ || jotasyncAUR

  • luckyBackup — Qt-фронтенд, написанный на C++.

http://luckybackup.sourceforge.net/index.html || luckybackupAUR

Другие утилиты, использующие rsync: rdiff-backup и osync AUR .

Как альтернатива cp/mv

rsync может использоваться как продвинутая альтернатива команде cp или mv , особенно при копировании больших файлов.

Опция -P эквивалентна —partial —progress , которая оставляет частично перемещённые файлы и показывает шкалу прогресса во время перемещения.

Используйте опцию -r / —recursive для рекурсивного обхода каталогов.

Файлы могут копироваться локально, как при помощи cp, но rsync интересна прежде всего возможностью удалённого копирования файлов, то есть между двумя разными хостами. Удалённые расположения могут быть указаны при помощи синтаксиса хост-двоеточие:

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

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

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

Предостережение о замыкающем слэше

По умолчанию Arch использует GNU cp (часть GNU coreutils ). Однако rsync следует соглашениям BSD cp, которые особо обрабатывают каталоги источника с замыкающим слэшем «/». Несмотря на то, что

создаёт каталог «назначение/источник» с содержимым «источника», команда

копирует все файлы из «источник/» напрямую в «назначение», без промежуточного каталога — так же, как при вызове

Это поведение отличается от такового в GNU cp, которая одинаково обрабатывает «источник» и «источник/» (но не «источник/.»). Кроме того, некоторые оболочки автоматически добавляют замыкающий слэш при tab-дополнении имён каталогов. В виду этих обстоятельств, новые или нечастые пользователи rsync могут зачастую забывать про разное поведение rsync и случайно создавать беспорядок или даже перезаписывать важные файлы, оставляя замыкающий слэш в командной строке.

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

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

Как утилита для резервного копирования

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

Автоматическое резервное копирование

В этом примере сценарий будет создан в каталоге /etc/cron.daily и будет запускаться ежедневно, если демон cron должным образом установлен и настроен. Настройка и использование cron выходит за рамки этой статьи.

Читайте также:  Кредитный калькулятор для windows

Сперва создайте сценарий, содержащий подходящие опции команды:

-a означает, что файлы должны быть архивированы, то есть большинство их характеристик сохранятся (но не список контроля доступа, жёсткие ссылки или расширенные атрибуты, такие как их возможности) —delete означает, что файлы, удалённые в источнике должны быть удалены и из резервной копии

Здесь /каталог/для/резервного/копирования следует заменить на каталог, нуждающийся в резервной копии (например /home ), а /расположение/резервной/копии на каталог, куда следует сохранять резервную копию (например /media/disk ).

В конце надо сделать сценарий исполняемым:

Автоматическое резервное копирование по SSH

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

-e ssh указывает rsync использовать SSH пользователь пользователь на хост -a включает опции -rlptgoD (рекурсивно, ссылки, разрешения, времена, группы, владелец, устройства)

Автоматическое резервное копирование с помощью NetworkManager

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

Сперва создайте сценарий, содержащий подходящие опции команды:

-a включает опции -rlptgoD (рекурсивно, ссылки, разрешения, времена, группы, владелец, устройства) —files-from считывает относительный путь /каталога/для/резервного/копирования из этого файла —bwlimit ограничивает пропускную способность ввода/вывода; КБайт в секунду

Root должен владеть сценарием (для изучения подробностей см. NetworkManager#Network services with NetworkManager dispatcher (англ.))

Автоматическое резервное копирование с помощью systemd и inotify

Вместо запуска резервного копирования по расписанию, например при помощи cron, можно запускать резервное копирование каждый раз, когда в один из файлов, подлежащих резервному копированию, вносятся изменения. Модули systemd.path используют inotify для мониторинга файловой системы, и могут быть использованы в связке с файлами systemd.service для запуска любого процесса (в данном случае резервного копирования при помощи rsync) на основе события файловой системы.

Сперва, создайте файл systemd.path , который будет отслеживать файлы для резервного копирования:

Затем создайте файл systemd.service , который будет активирован при обнаружении изменений. По умолчанию будет запущен файл службы, названный так же, как и модуль пути (в данном случае backup.path ), за исключением расширения .service вместо .path (в данном случае backup.service ).

Теперь запустите/включите backup.path , как обычную службу systemd и она начнёт отслеживать изменения в файлах и автоматически запускать backup.service .

Дифференциальное резервное копирование в течение недели

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

Сперва создайте сценарий, содержащий подходящие командные опции:

—inplace заставляет —partial обновлять целевые файлы напрямую.

Резервное копирование при помощи создания снимков

Эта же идея может использоваться для поддержания дерева снимков ваших файлов. Другими словами, каталога с копиями файлов, упорядоченных по дате. Копии создаются при помощи жёстких ссылок, то есть только изменённые файлы будут занимать пространство. В общих чертах, эта идея лежит в основе TimeMachine от Apple.

Этот легко реализуемый базовый сценарий создаёт быстрые инкрементные снимки, используя опцию —link-dest для создания жёстких ссылок на неизменённые файлы:

Символическая ссылка должна уже существовать в качестве назначения —link-dest . Если предыдущий снимок удаляется, то символическая ссылка должна быть пересоздана на наиболее недавний снимок. Если —link-dest не найдёт работающей символической ссылки, rsync продолжит копировать все исходные файла вместо копирования только изменений.

Более продвинутая версия поддерживает актуальную полную резервную копию $SNAP/latest и в случае изменения определённого количества файлов с прошлой полной резервной копии, создаёт снимок $SNAP/$DATETAG текущей полной резервной копии, используя cp -al для создания жёстких ссылок на неизменённые файлы:

Чтобы сделать всё намного проще, этот сценарий можно запускать как модуль systemd/Timers.

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

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

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

Читайте также:  Драйвер cuda windows 10 что это

Этот подход хорошо подходит для переноса существующей установки на новый жёсткий диск или SSD.

Запустите следующую команду с правами root, чтобы удостовериться, что rsync имеет доступ ко всем системным файлам и может сохранять владельцев:

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

Опция —exclude исключает файлы, подходящие под заданные шаблоны. Содержимое каталогов /dev , /proc , /sys , /tmp и /run исключено в команде выше т.к. они заполняются при загрузке, несмотря на то, что сами каталоги не создаются. /lost+found зависит от файловой системы. Команда выше зависит расширения скобок в оболочках bash (англ.) и zsh (англ.). При использовании другой оболочки. шаблоны в —exclude должны повторяться вручную. Кавычки в исключаемых шаблонах позволят избежать расширения оболочкой, что важно например при резервном копировании по SSH. Окончание исключаемых путей символом * гарантирует, что сами каталоги будут созданы, если они ещё не существуют.

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

  • Если в вашей системе очень мало памяти, может иметь смысл убрать опцию <; однако это не должно быть проблемой на большинстве современных устройств. Количество жёстких ссылок в файловой системе может быть большим при использовании некоторых программ, например Flatpak. Много жёстких ссылок находится в каталоге /usr/ .
  • Вы можете захотеть добавить опцию rsync —delete , если запускаете его несколько раз для одного и того же каталога. В этом случае, убедитесь, что каталог источника на заканчивается на /* , иначе эта опция затронет файлы внутри подкаталогов источника, но не затронет файлы, находящиеся в самом источнике.
  • Если вы используете разреженные файлы, такие как виртуальные диски, образы Docker и т.п., добавьте опцию -S .
  • Опция —numeric-ids отключит сопоставление имён для групп и пользователей; вместо этого передаваться будут цифровые идентификаторы групп и пользователей. Это полезно при резервном копировании через SSH или при использовании live системы для резервного копирования другого системного диска.
  • Выбрав опцию —info=progress2 вместо -v , вы увидите информацию об общем прогрессе и скорости передачи вместо списка передаваемых файлов.
  • Для избежания выхода за пределы файловой системы при рекурсивном обходе, добавьте опцию -x / —one-file-system . Она предотвратит резервное копирование любых точек монтирования в иерархии.

Восстановление резервной копии

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

Клонирование файловой системы

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

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

Их значение (из справочной страницы):

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

Полученная копия может быть легко прочитана заново и проверена (например после попытки восстановления файлов) на уровне файловой системы с помощью рекурсивной опции diff :

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

Демон rsync

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

Отредактируйте шаблон /etc/rsyncd.conf , настройте общий доступ и запустите rsyncd.service .

Использование на клиенте, например перечисление содержимого сервера:

перемещение файла с клиента на сервер:

Подумайте об использовании iptables для открытия порта 873 и аутентификации пользователей.

Пример конфигурации

Раздача файлов по списку

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

Источник

Оцените статью