rsync синхронизация - rsync примеры синхронизации linux windows
название сайта
Авторизация

Rsync синхронизация Linux Windows

+3
Windows / Вебмастер / linux0 комментариев
Протокол rsync может быть довольно простым в использовании для обычных заданий резервного копирования / синхронизации, но некоторые из его более продвинутых функций могут вас удивить. В этой статье мы покажем, как даже самые крупные накопители данных и энтузиасты резервного копирования могут использовать rsync как единое решение для всех своих потребностей в избыточности данных.

rsync синхронизация


Предупреждение: только для продвинутых гиков


Если вы сидите и думаете: "Что, черт возьми, такое rsync?" или «Я использую rsync только для действительно простых задач», возможно, вы захотите ознакомиться с нашей предыдущей статьей о как использовать rsync для резервного копирования данных в Linux , который дает введение в rsync, проведет вас через установку и продемонстрирует его основные функции. Как только вы хорошо поймете, как использовать rsync (честно говоря, это не так уж сложно) и освоите терминал Linux, вы готовы перейти к этому расширенному руководству.



Запуск rsync в Windows


Во-первых, давайте разместим наших читателей Windows на одной странице с нашими гуру Linux. Хотя rsync создан для работы в Unix-подобных системах, нет причин, по которым вы не сможете так же легко использовать его в Windows. Cygwin создает замечательный Linux API, который мы можем использовать для запуска rsync, поэтому зайдите на их веб-сайт и загрузите 32-битный или 64-битный версия, в зависимости от вашего компьютера.
Установка проста; вы можете оставить для всех параметров значения по умолчанию, пока не дойдете до экрана «Выбрать пакеты».

Запуск rsync в Windows рисунок 1



Теперь вам нужно проделать те же шаги для Vim и SSH, но пакеты будут выглядеть немного иначе, когда вы выберете их, поэтому вот несколько снимков экрана:

Установка Vim:

Запуск rsync в Windows рисунок 2



Установка SSH:

Запуск rsync в Windows рисунок 3


После того, как вы выбрали эти три пакета, продолжайте нажимать «Далее», пока не завершите установку. Затем вы можете открыть Cygwin, щелкнув значок, который установщик поместил на рабочий стол.



Команды rsync: от простого к продвинутому


Теперь, когда пользователи Windows находятся на одной странице, давайте взглянем на простую команду rsync и покажем, как использование некоторых дополнительных переключателей может быстро усложнить ее.
Допустим, у вас есть куча файлов, для которых требуется резервное копирование - а у кого их сейчас нет? Вы подключаете портативный жесткий диск, чтобы можно было делать резервные копии файлов на вашем компьютере, и вводите следующую команду:
rsync -a / домой / компьютерщик / файлы / / mnt / usb / файлы /
Или как это будет выглядеть на компьютере с Windows с Cygwin:
rsync -a / cygdrive / c / файлы / / cygdrive / e / файлы /
Довольно просто, и на этом этапе действительно нет необходимости использовать rsync, поскольку вы можете просто перетаскивать файлы. Однако, если на вашем другом жестком диске уже есть некоторые файлы, и ему нужны только обновленные версии плюс файлы, созданные с момента последней синхронизации, эта команда удобна, поскольку она отправляет на жесткий диск только новые данные. С большими файлами, особенно с передачей файлов через Интернет, это большое дело.
Резервное копирование файлов на внешний жесткий диск с последующим хранением жесткого диска в том же месте, что и ваш компьютер, - очень плохая идея, поэтому давайте посмотрим, что потребуется, чтобы начать отправку файлов через Интернет на другой компьютер ( арендованный вами, член семьи и т. д.).
rsync -av --delete -e 'ssh -p 12345 ’/ home / geek / files / [email protected]: / home / geek2 / files /
Приведенная выше команда отправит ваши файлы на другой компьютер с IP-адресом 10.1.1.1. Он удалит из места назначения посторонние файлы, которые больше не существуют в исходном каталоге, выведет имена передаваемых файлов, чтобы вы знали, что происходит, и туннелирует rsync через SSH на порт 12345.
В -а -в -е --делете переключатели - одни из самых простых и часто используемых; вы уже должны много знать о них, если читаете это руководство. Давайте рассмотрим некоторые другие переключатели, которые иногда игнорируются, но невероятно полезны:
--прогресс - Этот переключатель позволяет нам видеть прогресс передачи каждого файла. Это особенно полезно при передаче больших файлов через Интернет, но может выводить бессмысленный объем информации при простой передаче небольших файлов по быстрой сети.
Команда rsync с --прогресс переключиться в процессе резервного копирования:

Команды rsync рисунок


- частичный - Это еще один переключатель, который особенно полезен при передаче больших файлов через Интернет. Если rsync по какой-либо причине прерывается в середине передачи файла, частично переданный файл сохраняется в целевом каталоге, и передача возобновляется с того места, где она была остановлена, после повторного выполнения команды rsync. При передаче файлов большого размера через Интернет (скажем, несколько гигабайт) нет ничего хуже, чем отключение Интернета на несколько секунд, синий экран или человеческая ошибка, мешающие передаче файлов, и необходимость начинать все сначала.
-П - этот переключатель объединяет --прогресс а также - частичный , поэтому используйте его вместо этого, и ваша команда rsync станет немного аккуратнее.
-с или --компресс - Этот переключатель заставит rsync сжимать данные файла по мере их передачи, уменьшая объем данных, которые должны быть отправлены по назначению. На самом деле это довольно распространенный переключатель, но он далеко не обязателен, он действительно полезен вам только при передаче между медленными соединениями, и он ничего не делает для следующих типов файлов: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.
-час или --человек читаемый - Если вы используете --прогресс switch, вам обязательно захочется использовать и этот. То есть, если вы не хотите на лету конвертировать байты в мегабайты. В -час switch преобразует все выведенные числа в удобочитаемый формат, так что вы действительно можете понять объем передаваемых данных.
-n или --пробный прогон - Этот переключатель необходимо знать, когда вы впервые пишете сценарий rsync и тестируете его. Он выполняет пробный запуск, но на самом деле не вносит никаких изменений - потенциальные изменения по-прежнему выводятся как обычно, поэтому вы можете все прочитать и убедиться, что все в порядке, прежде чем запускать свой скрипт в производство.
-Р или --родственник - Этот переключатель необходимо использовать, если целевой каталог еще не существует. Мы будем использовать эту опцию позже в этом руководстве, чтобы мы могли создавать каталоги на целевой машине с отметками времени в именах папок.
- исключить из - Этот переключатель используется для ссылки на список исключений, содержащий пути к каталогам, для которых вы не хотите создавать резервные копии. Ему просто нужен простой текстовый файл с каталогом или путем к файлу в каждой строке.
--include-from - Похожий на - исключить из , но он ссылается на файл, содержащий каталоги и пути к файлам данных, для которых требуется создать резервную копию.
--stats - Не очень важный переключатель в любом случае, но если вы системный администратор, может быть полезно знать подробную статистику каждой резервной копии, чтобы вы могли отслеживать объем трафика, отправляемого по вашей сети, и тому подобное.
--журнальный файл - Это позволяет отправлять вывод rsync в файл журнала. Мы определенно рекомендуем это для автоматических резервных копий, в которых вас нет рядом с вами, чтобы прочитать результаты самостоятельно. Всегда просматривайте файлы журналов в свободное время, чтобы убедиться, что все работает правильно. Кроме того, это важный переключатель, который может использовать системный администратор, поэтому вам не останется ничего удивительного в том, как не удалось выполнить резервное копирование, когда вы оставили стажером ответственным.
Давайте посмотрим на нашу команду rsync теперь, когда мы добавили еще несколько переключателей:
rsync -avzhP --delete --stats --log-file = / home / geek / rsynclogs / backup.log --exclude-from '/home/geek/exclude.txt' -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files /
Команда по-прежнему довольно проста, но мы до сих пор не создали достойного решения для резервного копирования. Несмотря на то, что наши файлы сейчас находятся в двух разных физических местах, эта резервная копия не защищает нас от одной из основных причин потери данных: человеческой ошибки.



Резервные копии моментальных снимков


Если вы случайно удалите файл, вирус повредит любой из ваших файлов или произойдет что-то еще, в результате чего ваши файлы будут нежелательно изменены, а затем вы запустите сценарий резервного копирования rsync, ваши данные резервной копии будут перезаписаны нежелательными изменениями. Когда такое происходит (не если, а когда), ваше решение для резервного копирования ничего не сделало, чтобы защитить вас от потери данных.
Создатель rsync понял это и добавил --резервное копирование а также --backup-dir аргументы, чтобы пользователи могли запускать дифференциальные резервные копии. Очень первый пример на сайте rsync показывает сценарий, в котором полное резервное копирование выполняется каждые семь дней, а затем изменения в этих файлах ежедневно копируются в отдельные каталоги. Проблема с этим методом заключается в том, что для восстановления ваших файлов вам нужно эффективно восстанавливать их семь раз. Более того, большинство компьютерных фанатов запускают свои резервные копии несколько раз в день, поэтому вы можете легко иметь 20+ различных каталогов резервных копий в любой момент времени. Мало того, что сейчас восстановление файлов - проблема, но даже простой просмотр данных из резервной копии может занять очень много времени - вам нужно знать, когда в последний раз файл был изменен, чтобы найти его самую последнюю резервную копию. Вдобавок ко всему, неэффективно запускать только еженедельное (или даже реже в некоторых случаях) инкрементное резервное копирование.
На помощь приходят резервные копии моментальных снимков! Резервные копии моментальных снимков - это не что иное, как инкрементные резервные копии, но они используют жесткие ссылки для сохранения файловой структуры исходного источника. Поначалу может быть трудно осознать это, поэтому давайте рассмотрим пример.
Представьте, что у нас запущен сценарий резервного копирования, который автоматически выполняет резервное копирование наших данных каждые два часа. Каждый раз, когда rsync делает это, он называет каждую резервную копию в следующем формате: Backup-month-day-year-time.
Итак, в конце обычного дня у нас будет список папок в нашем целевом каталоге, например:




Просматривая любой из этих каталогов, вы увидите каждый файл из исходного каталога точно таким, каким он был в то время. Тем не менее, в любых двух каталогах не будет дубликатов. rsync выполняет это с помощью жесткого связывания через --link-dest = DIR аргумент.

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

#! / Bin / Bash
# скопируйте старый time.txt в time2.txt
да | cp ~ / backup / time.txt ~ / backup / time2.txt
# перезаписать старый файл time.txt новым временем
echo `date +”% F-% I% p ”`> ~ / backup / time.txt
# создать файл журнала
echo «»> ~ / backup / rsync-`date + »% F-% I% p» `.log
#rsync команда
rsync -avzhPR --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r --delete --stats --log-file = ~ / backup / rsync-`date + ”% F-% I% p »` .log --exclude-from '~ / exclude.txt' --link-dest = / home / geek2 / files / `cat ~ / backup / time2.txt` -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files / `date +”% F-% I% p ”` /
# не забудьте скопировать файл журнала и поместить его в резервную копию
scp -P 12345 ~ / backup / rsync-`cat ~ / backup / time.txt`.log [email protected]: / home / geek2 / files / `cat ~ / backup / time.txt` / rsync-`cat ~ / backup / time.txt`.log

Это будет типичный сценарий rsync для создания снимков. Если мы где-то вас потеряли, давайте разберем его по частям:
Первая строка нашего скрипта копирует содержимое time.txt в time2.txt. Канал «Да» подтверждает, что мы хотим перезаписать файл. Затем мы берем текущее время и помещаем его в time.txt. Эти файлы пригодятся позже.
Следующая строка создает файл журнала rsync, называя его rsync-date.log (где дата - это фактическая дата и время).
Теперь сложная команда rsync, о которой мы вас предупреждали:

-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest - Только переключатели, о которых мы говорили ранее; прокрутите вверх, если вам нужно напомнить.
--- ch также d = zu = rwx, D go = rx, fu = rw, F go = r - Это разрешения для целевого каталога. Поскольку мы создаем этот каталог в середине нашего сценария rsync, нам необходимо указать разрешения, чтобы наш пользователь мог записывать в него файлы.

Использование команд date и cat

Мы собираемся рассмотреть каждое использование команд date и cat внутри команды rsync в порядке их появления. Примечание: мы знаем, что есть и другие способы реализации этой функции, особенно с использованием объявления переменных, но для целей этого руководства мы решили использовать этот метод.
Файл журнала определяется как:
~ / backup / rsync-`date + ”% F-% I% p” `.log
В качестве альтернативы мы могли бы указать это как:
~ / backup / rsync-`cat ~ / backup / time.txt`.log
В любом случае --журнальный файл команда должна быть в состоянии найти ранее созданный файл датированного журнала и записать в него.
Файл назначения ссылки указан как:
--link-dest = / home / geek2 / files / `cat ~ / backup / time2.txt`
Это означает, что --link-dest команде дается каталог с предыдущей резервной копией. Если мы выполняем резервное копирование каждые два часа, а в то время, когда мы запускали этот скрипт, было 16:00, тогда --link-dest Команда ищет каталог, созданный в 14:00, и передает только те данные, которые изменились с тех пор (если таковые имеются).
Повторюсь, именно поэтому time.txt копируется в time2.txt в начале скрипта, поэтому --link-dest команда может ссылаться на это время позже.
Целевой каталог указан как:
[email protected]: / home / geek2 / files / `date +”% F-% I% p ”`
Эта команда просто помещает исходные файлы в каталог с заголовком с текущей датой и временем.
Наконец, мы убеждаемся, что копия файла журнала помещена в резервную копию.
scp -P 12345 ~ / backup / rsync-`cat ~ / backup / time.txt`.log [email protected]: / home / geek2 / files / `cat ~ / backup / time.txt` / rsync-`cat ~ / backup / time.txt`.log
Мы используем безопасную копию на порту 12345, чтобы взять журнал rsync и поместить его в соответствующий каталог. Чтобы выбрать правильный файл журнала и убедиться, что он попадает в нужное место, необходимо указать файл time.txt с помощью команды cat. Если вам интересно, почему мы решили скопировать time.txt вместо того, чтобы просто использовать команду date, это потому, что во время выполнения команды rsync могло пройти много времени, поэтому, чтобы убедиться, что у нас есть нужное время, мы просто cat текстовый документ, который мы создали ранее.



Автоматизация


Использовать Cron в Linux или Планировщик заданий в Windows для автоматизации вашего сценария rsync. Одна вещь, о которой вы должны быть осторожны, - это убедиться, что вы завершили все запущенные в данный момент процессы rsync, прежде чем продолжить новый. Планировщик задач, кажется, автоматически закрывает все уже запущенные экземпляры, но для Linux вам нужно проявить немного больше творчества.
Большинство дистрибутивов Linux могут использовать команду pkill, поэтому не забудьте добавить следующее в начало сценария rsync:
pkill -9 rsync



Шифрование


Нет, мы еще не закончили. Наконец-то у нас есть фантастическое (и бесплатное!) Решение для резервного копирования, но все наши файлы все еще уязвимы для кражи. Надеюсь, вы сохраняете резервные копии своих файлов где-нибудь за сотни миль. Каким бы безопасным ни было это далекое место, воровство и взлом всегда могут стать проблемой.
В наших примерах мы туннелировали весь наш трафик rsync через SSH, так что это означает, что все наши файлы зашифрованы при передаче к месту назначения. Однако нам нужно убедиться, что пункт назначения такой же безопасный. Имейте в виду, что rsync шифрует ваши данные только при их передаче, но файлы становятся широко открытыми, когда достигают места назначения.
Одна из лучших функций rsync заключается в том, что он передает только изменения в каждом файле. Если все ваши файлы зашифрованы и вы внесли одно незначительное изменение, весь файл придется повторно передать в результате того, что шифрование полностью рандомизирует все данные после любого изменения.

По этой причине лучше / проще всего использовать какой-либо тип шифрования диска, например BitLocker для Windows или dm-crypt для Linux. Таким образом, ваши данные будут защищены в случае кражи, но файлы можно будет передавать с помощью rsync, и ваше шифрование не будет препятствовать его работе. Доступны и другие варианты, которые работают аналогично rsync или даже реализуют какую-либо его форму, например Duplicity, но им не хватает некоторых функций, которые может предложить rsync.
После того, как вы настроили резервные копии моментальных снимков в удаленном месте и зашифровали исходный и целевой жесткие диски, похвалите себя за то, чтобы освоить rsync и реализовать самое надежное решение для резервного копирования данных.




Источник: www.thefastcode.com.
Читайте также

Отметьте картинки:*
new.thin.kiev.ua
Авторизация