Как использовать rsync для резервного копирования данных на Linux

Оглавление:

Как использовать rsync для резервного копирования данных на Linux
Как использовать rsync для резервного копирования данных на Linux

Видео: Как использовать rsync для резервного копирования данных на Linux

Видео: Как использовать rsync для резервного копирования данных на Linux
Видео: Как переустановить Internet Explorer в Windows 7 - YouTube 2024, Апрель
Anonim
rsync - это протокол, созданный для Unix-подобных систем, который обеспечивает невероятную универсальность для резервного копирования и синхронизации данных. Он может использоваться локально для резервного копирования файлов в разные каталоги или может быть настроен для синхронизации через Интернет с другими хостами.
rsync - это протокол, созданный для Unix-подобных систем, который обеспечивает невероятную универсальность для резервного копирования и синхронизации данных. Он может использоваться локально для резервного копирования файлов в разные каталоги или может быть настроен для синхронизации через Интернет с другими хостами.

Он может использоваться в системах Windows, но доступен только через различные порты (например, Cygwin), поэтому в этом руководстве мы поговорим об установке его в Linux. Во-первых, нам нужно установить / обновить клиент rsync. В дистрибутивах Red Hat команда «yum install rsync», а на Debian - «sudo apt-get install rsync».

 Команда Red Hat / CentOS после входа в систему с правами root (обратите внимание, что некоторые недавние дистрибутивы Red Hat поддерживают метод sudo).
Команда Red Hat / CentOS после входа в систему с правами root (обратите внимание, что некоторые недавние дистрибутивы Red Hat поддерживают метод sudo).
 Команда на Debian / Ubuntu.
Команда на Debian / Ubuntu.

Использование rsync для локальных резервных копий

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

$ rsync -av --delete /Directory1/ /Directory2/

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

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

1. -a = рекурсивный (рекурсия в каталоги), ссылки (копирование символических ссылок как символических ссылок), perms (сохранение разрешений), время (сохранение времени модификации), группа (группа сохранения), владелец (сохранение владельца), сохранение файлов устройств и сохранить специальные файлы. 2. -v = verbose. Причина, по которой я думаю, что многословная важна, - это то, что вы можете точно увидеть, что резервное копирование rsync. Подумайте об этом: что, если ваш жесткий диск плохо работает и начинает удалять файлы без вашего ведома, тогда вы запускаете свой скрипт rsync и подталкиваете эти изменения к своим резервным копиям, тем самым удаляя все экземпляры файла, который вы не хотите получать избавиться от? 3. -delete = Это говорит rsync удалять любые файлы, которые находятся в каталоге2, которые не входят в каталог1. Если вы решите использовать эту опцию, я рекомендую также использовать подробные параметры по причинам, указанным выше.

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

На скриншоте выше указано, что File1.txt и File2.jpg были обнаружены как новые или иным образом измененные из копий, существующих в Directory2, и поэтому они были скопированы. Noob tip: обратите внимание на завершающие косые черты в конце каталогов в моей команде rsync - они необходимы, обязательно запомните их.
На скриншоте выше указано, что File1.txt и File2.jpg были обнаружены как новые или иным образом измененные из копий, существующих в Directory2, и поэтому они были скопированы. Noob tip: обратите внимание на завершающие косые черты в конце каталогов в моей команде rsync - они необходимы, обязательно запомните их.

Мы перейдем к нескольким более удобным переключателям в конце этого урока, но просто помните, что для просмотра полного списка вы можете ввести «man rsync» и просмотреть полный список используемых коммутаторов.

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

Использование rsync для внешних резервных копий

rsync можно настроить несколькими способами для внешних резервных копий, но мы рассмотрим наиболее практичный (также самый простой и безопасный) метод туннелирования rsync через SSH. Большинство серверов и даже многие клиенты уже имеют SSH, и их можно использовать для ваших резервных копий rsync. Мы покажем вам процесс получения одной Linux-машины для резервного копирования в другую в локальной сети. Процесс был бы таким же, если бы один хост находился где-то в Интернете, просто обратите внимание, что порт 22 (или любой другой порт, на котором настроен SSH), должен быть перенаправлен на любое сетевое оборудование со стороны сервера.

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

# yum -y install 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/ [email protected]:/Directory2/

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

$ rsync -av –delete -e 'ssh -p 12345' /Directory1/ [email protected]:/Directory2/

Как видно из приведенного выше скриншота, вывод, указанный при резервном копировании по сети, почти такой же, как при резервном копировании на локальном компьютере, единственное, что меняется, - это команда, которую вы используете. Также обратите внимание, что он запрашивает пароль.Это нужно для аутентификации с помощью SSH. Вы можете настроить ключи RSA, чтобы пропустить этот процесс, что также упростит автоматизацию rsync.
Как видно из приведенного выше скриншота, вывод, указанный при резервном копировании по сети, почти такой же, как при резервном копировании на локальном компьютере, единственное, что меняется, - это команда, которую вы используете. Также обратите внимание, что он запрашивает пароль.Это нужно для аутентификации с помощью SSH. Вы можете настроить ключи RSA, чтобы пропустить этот процесс, что также упростит автоматизацию rsync.

Автоматизация резервных копий rsync

Cron может использоваться в Linux для автоматизации выполнения команд, таких как rsync. Используя Cron, мы можем заставить нашу систему Linux выполнять ночные резервные копии или, как правило, вы хотите, чтобы они запускались.

Чтобы отредактировать файл таблицы cron для пользователя, вы вошли в систему как, запустите:

$ crontab -e

Чтобы отредактировать этот файл, вам нужно будет ознакомиться с vi. Введите «I» для вставки, а затем начните редактирование файла таблицы cron.

Cron использует следующий синтаксис: минута часа, час дня, день месяца, месяц года, день недели, команда.

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

0 22 * * * rsync -av --delete /Directory1/ /Directory2/

Первый «0» указывает минуту часа, а «22» указывает на 10 часов вечера. Поскольку мы хотим, чтобы эта команда запускалась ежедневно, мы оставим остальные поля со звездочками, а затем вставим команду 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 ГБ, а затем вы добавляете текстовый файл в каталог1, rsync будет знать, что все, что вы добавили (даже если оно находится в zip-файле), и передать только несколько килобайт измененных данных.
Приведенная выше команда берет файлы из Directory1, помещает их в /ZippedFiles/archive.zip, а затем rsyncs в каталог Directory2. Первоначально вы можете подумать, что этот метод окажется неэффективным для больших резервных копий, учитывая, что zip-файл будет меняться каждый раз при внесении малейшего изменения в файл. Однако rsync передает только измененные данные, поэтому, если ваш zip-файл составляет 10 ГБ, а затем вы добавляете текстовый файл в каталог1, rsync будет знать, что все, что вы добавили (даже если оно находится в zip-файле), и передать только несколько килобайт измененных данных.

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

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

Рекомендуемые: