- Как использовать Rsync для локальной и удаленной передачи данных и синхронизации
- How to Use Rsync for Local and Remote Data Transfer and Synchronization
- В этом руководстве мы покажем вам, как использовать rsync на практических примерах и подробные объяснения наиболее распространенных вариантов rsync.
- Установка Rsync
- Установите Rsync в Ubuntu и Debian
- Установите Rsync на CentOS и Fedora
- Синтаксис команды Rsync
- Основное использование Rsync
- Как использовать Rsync для синхронизации данных с / на удаленный компьютер
- Исключить файлы и каталоги
- Вывод
- Русские Блоги
- Во-первых, rsync + cwrsync для синхронизации файлов Windows и Linux
- Интеллектуальная рекомендация
- Пошаговая загрузка файла Spring MVC-09 (на основе файла загрузки клиента Servlet3.0 + Html5)
- Создайте многоканальное окно в приложениях Win32
- Путь к рефакторингу IOS-APP (3) Введение в модульное тестирование
- Tree——No.617 Merge Two Binary Trees
- Синхронизация данных между ПК с Windows и Linux через интернет
- Приёмы работы c rsync
- Зачем нужен rsync?
- Принцип применения
- Правила копирования каталогов
- Некоторые полезные ключи
- О сжатии замолвим слово
- Копируем частично
- Исключаем через .rsync-filter
- Ограничим rsync по ssh
- Машина времени
Как использовать Rsync для локальной и удаленной передачи данных и синхронизации
How to Use Rsync for Local and Remote Data Transfer and Synchronization
В этом руководстве мы покажем вам, как использовать rsync на практических примерах и подробные объяснения наиболее распространенных вариантов rsync.
Rsync — это быстрая и универсальная утилита командной строки, которая синхронизирует файлы и папки между двумя местоположениями через удаленную оболочку или из / в удаленный демон Rsync. Он обеспечивает быструю пошаговую передачу файлов, передавая только различия между источником и местом назначения.
Rsync может использоваться для зеркального отображения данных, добавочное резервного копирования, копирования файлов между системами и в качестве замены для scp , sftp и cp команд для повседневного использования.
Установка Rsync
rsync Утилита предварительно установлена на большинстве дистрибутивов и MacOS Linux. Вы можете проверить, установлен ли он в вашей системе, набрав:
Если вы не 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 настроены на использование SSH в качестве удаленной оболочки по умолчанию.
В следующем примере мы переносим каталог с локального на удаленный компьютер:
Если вы хотите перенести данные с удаленного на локальный компьютер, вам нужно использовать удаленное местоположение в качестве источника:
Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию 22, вы можете указать порт, используя -e опцию:
При передаче больших объемов данных рекомендуется выполнить rsync команду внутри сеанса screen или использовать -P параметр:
Исключить файлы и каталоги
При исключении файлов или каталогов вам необходимо использовать их относительные пути к исходному местоположению.
Есть два варианта, чтобы исключить файлы и каталоги. Первый вариант — использовать —exclude аргумент и указать файлы и каталоги, которые вы хотите исключить, в командной строке.
В следующем примере мы исключая node_modules и tmp каталоги , которые расположены внутри src_directory :
Второй вариант — использовать —exclude-from аргумент и указать файлы и каталоги, которые вы хотите исключить из файла.
Вывод
Из этого руководства вы узнали, как использовать Rsync для копирования и синхронизации файлов и каталогов. Еще много информации о Rsync можно найти на странице руководства пользователя Rsync .
Источник
Русские Блоги
Во-первых, rsync + cwrsync для синхронизации файлов Windows и Linux
Rsync (удаленная синхронизация) — это средство удаленной синхронизации данных, которое может быстро синхронизировать файлы между несколькими хостами через LAN / WAN. Вы также можете использовать Rsync для синхронизации разных каталогов на локальном жестком диске.
Сначала установите службу rsync на сервере Linux
1, может быть установлен через Yum:
2. Файл конфигурации rsyncd.conf (/etc/rsyncd/rsyncd.conf) сервера rsync:
rsync в основном имеет следующие три файла конфигурации:
- rsyncd.conf (основной файл конфигурации)
- rsyncd.passwd (файл паролей)
- rsyncd.motd (информация о сервере rysnc)
3. Создайте каталог rsyncd в каталоге / etc для хранения файла rsyncd.passwd
** Примечание:
Установите для атрибута файла файла паролей rsyncd.passwd значение root и установите для разрешений значение 600, иначе резервное копирование не может быть успешным! В целях безопасности атрибут файла должен быть владельцем Читаемый **
4. Настройте файл rsyncd.conf:
5, настройте файл rsyncd.motd (в этом нет необходимости)
Файл rsyncd.motd похож на сообщение-подсказку, которое мы видим при входе на FTP-сервер . Конечно, это не нужно при глобальном определении переменных. Для удаления или удаления можно использовать знак #
Во-вторых, установите клиент cwRsync для Windows
2. Клиент cwRsync не требует сложной настройки. Настройте переменную среды Windows PATH: E: \ cwRsync \ Install \ bin
3. Создайте новый каталог rsync_data для синхронизации каталога данных в Windows (настройка имени)
4. Создайте файл пароля rsync.passwd в каталоге E: \ cwRsync, который является паролем: 123456
5. Напишите пакетный файл bat и сохраните его как bat в формате ANSI (в противном случае он будет искажен): rsync_start.bat
Так как rsync всегда есть что-то под Linux, при установке директории сохранения для win необходимо / cygdrive взять на себя инициативу, а затем букву диска и директорию
Просто запустите rsync_start.bat.
В-третьих, вы можете добавить пакетный сценарий в план задач Windows для автоматической синхронизации данных.
Интеллектуальная рекомендация
Пошаговая загрузка файла Spring MVC-09 (на основе файла загрузки клиента Servlet3.0 + Html5)
пример тестовое задание Исходный код Несмотря на загрузку файлов в Servlet3.0 +, мы можем очень легко программировать на стороне сервера, но пользовательский интерфейс не очень дружелюбен. Одна HTML-ф.
Создайте многоканальное окно в приложениях Win32
Создайте многоканальное окно в приложениях Win32, создайте несколько оконных объектов одного и того же класса Windows, а окна объектов разных классов окон. .
Путь к рефакторингу IOS-APP (3) Введение в модульное тестирование
IOS-APP реконструкция дороги (1) структура сетевых запросов IOS-APP реконструкция дороги (два) Модельный дизайн При рефакторинге нам нужна форма, позволяющая вносить смелые изменения, обеспечивая при .
Tree——No.617 Merge Two Binary Trees
Problem: Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not. You need to merge them into a new bin.
Источник
Синхронизация данных между ПК с Windows и Linux через интернет
Проблема такова: есть два компьютера, достаточно далеко друг от друга, на одном Windows, на другом Kubuntu. Необходимо забрать с ПК с Windows около 100 гигабайт файлов. Чем это сделать? Пробовал Bittorrent Sync, но он платный, linux-версия консольная непригодна к использованию юзером левела «юзер», версия с GUI устарела и ссылки с windows-версии не жрёт. Выдрал код из ссылки, вставил в GUI-версию — не качает.
Больше ничего подоходящего не нашёл. Есть ещё варианты?
P.S. Однако же, долго меня тут небыло 😉 Как чо, что нового? Скоро вендекапец?
собственное облако, ftp, например
rsync под Cygwin
Собственное или любое облако — решение хорошее, но платное, например Dropbox’у надо заплатить 10 баксов за 1Тб. Это самый дешёвый вариант из платных. Но неужто нет свободных решений?
А связать их как, у обоих ПК серые IP же.
У меня в закладках syncthing, но я его не пробовал и только что увидел, что оно на go.
OwnCloud — свободное бесплатное решение.
FTP, SFTP. Последний поднять особо просто, но для вантуза понадобится клиента поставить.
Поднимать вебсервер с овнклаудом только ради разового переброса?
А не треснет спопывалка?
Источник
Приёмы работы c rsync
February 8, 2017
У замечательной и очень популярной программы rsync есть множество удобных опций и необычайных способностей, вот только их не так-то просто найти. Ну, если только вы не готовы прочитать весь мануал от корки до корки.
Попробую сберечь вам немного времени на чтение мануала и рассказать о самом важном и полезном. Простыми словами, как есть.
Зачем нужен rsync?
Зачем пользоваться rsync если есть привычные cp и scp , спросите вы.
В одной части rsync удобней и лучше упомянутых аналогов потому что он дает вам возможность увидеть все что он сделает при копировании файлов до непосредственно операции копирования.
В другой части — rsync по умолчанию копирует только новые и изменившиеся файлы, и даже не только файлы — а отдельные их части, делая это жестоко и эффективно.
Только этих двух причин достаточно чтобы в своей ежедневной работе забыть про cp , променяв эту команду и ее аналоги на rsync .
Принцип применения
Если мы говорим о простом копировании файлов, то первым делом всегда стоит сделать пробный прогон (ключ -n ) в режиме с показом подробностей ( -v ):
В этом режиме rsync покажет список файлов, которые он скопирует. Будут скопированы только новые и изменившиеся файлы. Вы сможете убедиться что копируется сам каталог, а не содержимое, или что копируется именно содержимое.
После того как вы убедились что копируется именно то, что вы хотите, можно запускать самое настоящее копирование:
В этой команде ключ -a подразумевает рекурсивное копирование всех файлов и каталогов включая их атрибуты, такие как дата создания и дата изменения. Ключ -v даст вам подробный отчет о работе по мере выполнения и по окончании.
Правила копирования каталогов
С одной стороны правила очень простые.
Если в конце пути до именованного источника нет слеша, то скопируется сам каталог.
Если слеш есть, или источник указывает на каталог без имени, то скопируется содержимое каталога.
С другой стороны вполне можно в пылу забыть что и как, скопировав содержимое каталога вместо самого каталога, получив кучу хлопот с удалением лишних файлов, появившихся из ниоткуда с датами в прошлом (ключик -a , помните?).
Потому лучше всегда следовать обычному сценарию с предварительной проверкой операции.
Некоторые полезные ключи
Сначала поговорим об опциях которые вам будет здорово знать без шпор и шпаргалок.
Ключ -P включает сразу несколько опций. С этим ключем rsync и покажет процесс копирования отдельных файлов, и продолжит копирование если оно было прервано. Особо эта опция пригождается при копировании больших файлов. Ключ -P нужно указывать каждый раз, иначе rsync удалит файлы которые не успели полностью закачаться.
Если вы копируете файлы с какого-то очень занятого, или слабого, сервера, то можно исключить трату ресурсов процессора на вычисление изменившихся частей файлов, скопировав их целиком. Для этого нужен ключ -W .
Если вам хочется знать сколько всего, по мнению rsync, осталось работать, вам нужен ключ —info=progress2 . Если вы копируете целую файловую систему, то этот ключ, будучи использован сам по себе, вас разочарует: информация об итоговом объёме будет постоянно обновляться. Это происходит потому что rsync не пытается считать всю файловую систему до того как начнёт копирование, а делает обе задачи сразу.
Но не отчаивайтесь! Если вы хотите знать точно сколько осталось работать с самого начала, то можно отключить последовательное сканирование ключём —no-inc-recursive или, короче, —no-i-r .
Ключи выше есть начиная с версии 3.1.0, то есть уже работают в Debian stable.
Если требуется не просто скопировать файлы, а полностью синхронизировать содержимое каталогов, удалив лишние файлы, при этом вам почему-то не с руки синхронизировать файлы с помощью Git, то пригодится ключ —delete (или эквивалентный ему —del ).
С этим ключём rsync удалит лишние файлы из каталого-назначения.
Ключ -n в команде выше был оставлен намеренно.
Дальше я рассмотрю в деталях более интересные, хоть более редко используемые, опции.
О сжатии замолвим слово
Вопреки популярному заблуждению от использования сжатия внутри rsync (ключ -z ) больше вреда, чем пользы. Дело в том что всюду используемый OpenSSH уже с версии конца 2005 года по умолчанию использует сжатие передаваемых данных. Сами понимаете, сжатие уже сжатых данных только лишь использует ресурсы процессора, не уменьшая объем передаваемых данных.
В том, что при соединении с вашим сервером уже используется сжатие, можно убедиться так:
Если эта команда не покажет, в числе прочих, такую строчку про включение сжатия как выше, то может быть вам стоит использовать сжатие. Стоит проверить что от сжатия есть толк. Особенно это касается маломощных устройств с быстрым соединением: вашему NAS может быть быстрее скопировать что-то по гигабитному линку без сжатия, чем пытаться обогнать гигабитную сеть маломощным процессором.
К счастью, rsync достаточно умен чтобы не использовать сжатие если вы копируете файлы локально, из каталога на диск и т.п.
Копируем частично
Наверняка вам когда-нибудь понадобится чтобы rsync пропускал некоторые файлы при копировании.
В самом простейшем случае вам нужно чтобы rsync не копировал файлы разных систем контроля версий, включая каталог вроде .svn и .git . В этой задаче вам не нужно ничего кроме ключа -C (или —cvs-exclude в полной форме). Так файлы большинства популярных VCS будут проигнорированы будто их нет. Не забываем использовать -n при первом запуске.
Может получиться так что вы, по ошибке, скопируете кучу таких файлов от VCS. В этом случае для получения чистой копии вам пригодится ключ —delete-excluded , с которым все исключенные файлы будут удалены.
Исключаем через .rsync-filter
Если нужные более гибкие правила, что особенно актуально если копирование делается регулярно, то лучше не мелочиться и оформить все исключения в файле .rsync-filter .
Для исключения чего-либо из списка на перенос нужно добавить в этот файл строчку с правилом ( — или + в начале строки).
Если нужно исключить конкретный файл, где бы он ни был в любом каталоге ниже по иерархии, то укажем просто имя файла.
Если нужно исключить файл или каталог относительно каталога в котором находится .rsync-filter , то укажем со слешем в начале:
В правилах звездочка соответствует любым символам кроме слеша, а две звездочки соответствуют вообще любым символам:
Наконец, если нужно чтобы какие-то файлы всё-таки копировались, не смотря на ранее заданные правила, то их можно отметить правилом + в начале строки.
Файлы .rsync-filter команда rsync умеет искать по всей структуре каталогов будучи запущена с ключём -F .
Если нужно чтобы сами эти файлы не копировались, то нужно указать этот ключ два раза так:
Как видите, лишние файлы не скопировались:
Ограничим rsync по ssh
Случается нужно разрешить работу rsync по ssh, удалённо и без пароля, только определённого для каталога и хоста, исключив копирование чего-либо в другие места или из других мест.
Например, вы хотите чтобы можно было скопировать файлы на сервер backup.example.com только с хоста server.example.com , только и только в каталог backup-example , и только с этими опциями:
То сначала нужно получить команду, которую rsync выполняет при вызове ssh на удаленном хосте:
/.ssh/authorized_keys на example.com следует добавить для известного ssh ключа запуск этой команды по умолчанию при подключении:
Таким образом, даже если при запуске rsync будут указаны какие-то другие опции, на сервере-назначении всё равно выполнится команда rsync соответствующая исходным, заданным вами, опциям и настройкам.
Если нужно чтобы ваш бекап нельзя было перезаписать или удалить на сервере назначения, то опцию —del следует заменить на —ignore-existing .
Машина времени
Те пользователи macOS и OS X, что делают бэкап, наверняка оценили работу Time Machine. Эта программа позволяет буквально в два клика вернуться к прошлой версии любого файла. Не смотря на все красивости, Time Machine не делает ничего такого чего мы не можем сделать с помощью rsync .
Скрипт следует положить в корень того диска или каталога, куда следует делать бэкапы.
Запускать с указанием единственного аргумента: каталога с исходными файлами. Например, так.
После нескольких запусков получается такая структура каталога:
При этом latest указывает на самый последний бэкап.
В каждом из каталогов содержится слепок того, что было в исходном каталоге в момент копирования. Можно подумать что и место на диске занято пропорционально количеству копий, однако это не так.
Всё множество копий занимает лишь немного больше места чем исходный каталог. Место уходит на изменившиеся файлы.
Если ничего не менялось, то место всё равно расходуется на создание каталогов, которые нельзя хранить как жесткие ссылки.
Такая существенная экономия возможна благодаря упомянутым жестким ссылкам, которые rsync делает для файлов, не изменившихся с последнего копирования.
У одинаковых, не менявшихся, файлов будет один и тот же inode.
Конечно, по возможной экономии места на диске такому способу резервного копирования далеко до специальных программам, таких как Borg или Restic.
Источник