rsync – это протокол, созданный для Unix-подобных систем, который обеспечивает невероятную универсальность для резервного копирования и синхронизации данных. Его можно использовать локально для резервного копирования файлов в разные каталоги или настроить синхронизацию через Интернет с другими хостами.
Он может использоваться в системах Windows, но доступен только через различные порты (например, Cygwin), поэтому в этом руководстве мы поговорим о его настройке в Linux. Для начала нам нужно установить/обновить клиент rsync. В дистрибутивах Red Hat эта команда называется «yum install rsync», а в Debian – «sudo apt-get install rsync».
Команда в Red Hat/CentOS, после входа в систему как root (обратите внимание, что некоторые недавние дистрибутивы Red Hat поддерживают метод sudo).
Команда в Debian/Ubuntu.
Использование rsync для локального резервного копирования
В первой части этого руководства мы создадим резервные копии файлов из Directory1 в Directory2. Оба эти каталога находятся на одном жестком диске, но это будет работать точно так же, если каталоги существуют на двух разных дисках. Есть несколько различных подходов к этому, в зависимости от того, какие резервные копии вы хотите настроить. Для большинства целей будет достаточно следующей строки кода:
$ rsync -av --delete/Directory1// Directory2/
Приведенный выше код синхронизирует содержимое Каталога1 с Каталогом2 и не оставляет различий между ними. Если rsync обнаружит, что в Directory2 есть файл, которого нет в Directory1, он его удалит. Если rsync найдет файл, который был изменен, создан или удален в Directory1, он отразит те же самые изменения в Directory2.
Существует множество различных ключей, которые вы можете использовать для rsync, чтобы настроить его в соответствии с вашими потребностями. Вот что вышеупомянутый код говорит rsync делать с резервными копиями:
1. -a = рекурсивно (рекурсивно в каталоги), ссылки (копировать символические ссылки как символические ссылки), перми (сохранить разрешения), время (сохранить время изменения), группа (сохранить группу), владелец (сохранить владельца), сохранить файлы устройства и сохранить специальные файлы.
2. -v = многословно. Причина, по которой я думаю, что многословность важна, заключается в том, что вы можете точно видеть, что поддерживает rsync. Подумайте об этом: что если ваш жесткий диск выходит из строя и начинает удалять файлы без вашего ведома, тогда вы запускаете свой скрипт rsync, и он помещает эти изменения в ваши резервные копии, тем самым удаляя все экземпляры файла, которые вы не хотели получать избавиться от?
3. –delete = Это говорит rsync об удалении любых файлов, которые находятся в Каталоге 2, которых нет в Каталоге 1. Если вы решите использовать этот параметр, я рекомендую также использовать подробные параметры по причинам, указанным выше.
Используя приведенный выше скрипт, вы получите результат, полученный с помощью rsync для резервного копирования Directory1 в Directory2. Обратите внимание, что без подробного переключателя вы не получили бы такую подробную информацию.
Снимок экрана выше говорит нам, что File1.txt и File2.jpg были обнаружены как новые или иным образом изменены из копий, существующих в Directory2, и поэтому они были скопированы. Совет Noob: обратите внимание на косые черты в конце каталогов в моей команде rsync – они необходимы, обязательно запомните их.
Мы рассмотрим еще несколько удобных переключателей в конце этого урока, но просто помните, что для просмотра полного списка вы можете набрать «man rsync» и просмотреть полный список используемых ключей.
Это о покрывает это, насколько местные резервные копии затронуты. Как вы можете сказать, rsync очень прост в использовании. Он становится немного сложнее при использовании его для синхронизации данных с внешним хостом через Интернет, но мы покажем вам простой, быстрый и безопасный способ сделать это.
Использование rsync для внешних резервных копий
rsync можно настроить несколькими различными способами для внешних резервных копий, но мы рассмотрим наиболее практичный (а также самый простой и безопасный) способ туннелирования rsync через SSH. Большинство серверов и даже многие клиенты уже имеют SSH, и его можно использовать для резервного копирования rsync. Мы покажем вам процесс резервного копирования одной машины Linux на другую в локальной сети. Процесс был бы точно таким же, если бы один хост находился где-то в интернете, просто обратите внимание, что порт 22 (или любой другой порт, на котором вы настроили SSH), должен быть перенаправлен на любое сетевое оборудование на стороне сервера.
На сервере (компьютере, который будет получать резервные копии) убедитесь, что SSH и rsync установлены.
# yum -y установить ssh rsync
# sudo apt-get install ssh rsync
Помимо установки SSH и rsync на сервере, все, что действительно нужно сделать, – это настроить репозитории на сервере, на котором вы хотите создать резервную копию файлов, и убедиться, что SSH заблокирован.Убедитесь, что у пользователя, которого вы планируете использовать, есть сложный пароль, и это также может быть хорошей идеей для переключения порта, который прослушивает SSH (по умолчанию 22).
Мы выполним ту же команду, что и для использования rsync на локальном компьютере, но добавим необходимые дополнения для туннелирования rsync через SSH на сервер в моей локальной сети. Для пользователя «geek», подключающегося к «192.168.235.137» и использующего те же ключи, что и выше (-av –delete), мы запустим следующее:
$ rsync -av –delete -e ssh/Directory1/geek@192.168.235.137:/Directory2/
Если у вас есть SSH, прослушивающий какой-либо порт, отличный от 22, вам нужно будет указать номер порта, например, в этом примере, где я использую порт 12345:
$ rsync -av –delete -e 'ssh -p 12345'/Directory1/geek@192.168.235.137:/Directory2/
Как вы можете видеть на скриншоте выше, выходные данные, получаемые при резервном копировании по сети, почти такие же, как и при локальном резервном копировании, единственное, что изменяется, – это команда, которую вы используете. Также обратите внимание, что запрашивается пароль. Это для аутентификации с SSH. Вы можете настроить ключи RSA, чтобы пропустить этот процесс, что также упростит автоматизацию rsync.
Автоматизация резервного копирования rsync
Cron можно использовать в Linux для автоматизации выполнения команд, таких как rsync. Используя Cron, мы можем заставить нашу систему Linux запускать ночные резервные копии, или как бы часто вы не хотели их запускать.
Чтобы отредактировать файл таблицы cron для пользователя, в который вы вошли, выполните:
$ crontab -e
Вам нужно быть знакомым с vi, чтобы редактировать этот файл. Введите «I» для вставки, а затем начните редактирование файла таблицы cron.
Cron использует следующий синтаксис: минута часа, час дня, день месяца, месяц года, день недели, команда.
Поначалу это может немного сбить с толку, поэтому приведу пример. Следующая команда будет запускать команду rsync каждую ночь в 22:00:
0 22 * * * rsync -av --delete/Directory1// Directory2/
Первое «0» указывает минуты часа, а «22» указывает 22 часа. Поскольку мы хотим, чтобы эта команда выполнялась ежедневно, мы оставим остальные поля со звездочками, а затем вставим команду rsync.
После завершения настройки Cron нажмите escape, а затем введите «: wq» (без кавычек) и нажмите enter. Это сохранит ваши изменения в vi.
Cron может получить гораздо больше, чем это, но продолжить это было бы за рамками этого урока. Большинству людей понадобится просто еженедельное или ежедневное резервное копирование, и то, что мы показали, вы можете легко сделать это. Для получения дополнительной информации о Cron, пожалуйста, смотрите справочные страницы.
Другие полезные функции
Еще одна полезная вещь, которую вы можете сделать, это поместить ваши резервные копии в zip-файл. Вам нужно будет указать, где вы хотите разместить zip-файл, и затем rsync этот каталог в ваш каталог резервного копирования. Например:
$ zip /ZippedFiles/archive.zip/Directory1/&& rsync -av --delete/ZippedFiles// Directory2/
Команда выше берет файлы из Directory1, помещает их в /ZippedFiles/archive.zip и затем rsyncs этот каталог в Directory2. Сначала вы можете подумать, что этот метод окажется неэффективным для больших резервных копий, учитывая, что zip-файл будет меняться каждый раз, когда в файл вносится малейшее изменение. Однако rsync передает только измененные данные, поэтому, если размер zip-файла составляет 10 ГБ, а затем вы добавляете текстовый файл в Directory1, rsync будет знать, что это все, что вы добавили (даже если он находится в zip-файле), и передаст только несколько килобайт. измененных данных.
Существует несколько способов шифрования резервных копий rsync. Самый простой способ – установить шифрование на самом жестком диске (на тот, на который копируются ваши файлы). Другой способ – зашифровать ваши файлы перед отправкой на удаленный сервер (или другой жесткий диск, на что бы вы ни делали резервные копии). Мы рассмотрим эти методы в следующих статьях.
Какие бы опции и функции вы ни выбрали, rsync окажется одним из самых эффективных и универсальных инструментов резервного копирования на сегодняшний день, и даже простой скрипт rsync может спасти вас от потери ваших данных.