Назад | Перейти на главную страницу

Как лучше всего сделать резервную копию веб-сервера Linux?

Я использую типичный сервер LAMP. Мне нужно создать резервную копию данных на этой машине по сети без прерывания обслуживания. Система резервного копирования поддерживает SSH, FTP, SMB, NFS и iSCSI. Как лучше всего это сделать?

Вы можете использовать 'scp' (который использует SSH) для резервного копирования данных, но лучший вариант для изучения - это настройка 'rsync': Репликация веб-серверов

rsync работает довольно быстро, так как отражает разницу, а не делает полную копию.

Rsync это лучшая вещь на свете. Однако, как инструмент резервного копирования общего назначения, он имеет несколько недостатков (не сам по себе, это прекрасный инструмент для копирования файлов). У вас 2 проблемы:

  1. наборы резервных копий будут создаваться с течением времени, поэтому первый скопированный файл будет старше, чем последний скопированный файл. Да, очевидно, но если оба файла должны быть синхронизированы, то у вас есть резервная копия, которая не отражает состояние сервера. В большинстве случаев это может не быть проблемой, но если она когда-нибудь возникнет, у вас возникнут проблемы при восстановлении.

  2. некоторые данные плохо копируются, например файл MySQL DB. Если файл открыт и часть его содержимого находится в памяти, то истинное состояние сервера не будет скопировано.

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

В MySQL есть инструменты для сброса баз данных - mysqldump. Я использую это для создания резервной копии файла sql, для которого создается резервная копия, после этого я игнорирую сами файлы mysql, когда я прихожу для восстановления, я знаю, что могу восстановить дампы. LVM имеет возможность делать снимки диска. Они создают запасной раздел, и все записи на диск с момента создания моментального снимка прозрачно переходят в раздел моментального снимка, то есть исходный диск остается неизменным. После создания резервной копии удалите моментальный снимок, и все изменения «сохранятся» на основном диске.

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

Лучшая альтернатива, если у вас есть деньги, - использовать что-то вроде Постоянная защита данных r1soft, который постоянно поддерживает изменения.

Rsync великолепен, но rdiff-backup еще лучше. Он не только хранит зеркало всех ваших файлов, но и позволяет при желании восстанавливать старые версии из предыдущих резервных копий. Он сохраняет только те части файла, которые были изменены («обратные различия»), поэтому вы не сохраняете целую кучу дополнительных данных, чтобы получить функциональность восстановления.

Он использует те же алгоритмы, что и rsync, но он немного более мощный и полезный.

Кроме того, duplicity - это система, которая работает так же, как rdiff-backup, но делает все на стороне клиента (т.е. ее не нужно устанавливать на сервере). Он также может шифровать резервные копии перед их отправкой и может быть настроен для работы с хранилищем Amazon S3.

Rsync - это способ сделать простые настройки.

Для больших настроек рассмотрите BackupPC :-)

Я бы пошел с DRBD для синхронизации веб-контента и веб-конфигураций на другом сервере или в общем доступе.

В настоящее время я создаю резервные копии нескольких систем unix, используя ключи ssh и rsync поверх ssh. Он отлично работает и работает быстро, поскольку rsync синхронизирует только различия. Я сбрасываю кучу резервных копий rsync в один Linux-сервер, а затем backup exec может запустить задание для отправки этих данных на ленту позже. Скрипты bash достаточно просты для написания

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

Важно иметь инкрементные резервные копии с восстановлением на определенный момент времени. Dirvish - www.dirvish.com - отличный инструмент, созданный на основе rsync, который позволяет эффективно восстанавливать снимки и создавать резервные копии с помощью rsync.

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

command="sudo /usr/bin/rsync -Rlptd / -",no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-rsa AAAAB3N....

в файле authorized_keys - обеспечение (вместе с правильным ограничением sudo) того, что удаленный ключ очень ограничен в том, что ему разрешено выполнять.

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

Мне очень нравится использовать rdiff-backup. При этом используется внутренняя rsync для хранения редакций файлов (различий), что позволяет легко откатить файл или дерево к определенному времени.

rsync - самое простое решение. Лично я использую DAR для создания дифференциальных резервных копий, а затем rsync для передачи их на другой сервер. Не забывайте, что вы не можете сделать резервную копию своей базы данных MySQL, просто сделав резервную копию / var / lib / mysql; скорее всего, он будет в коррумпированном состоянии. Вместо этого используйте mysqldump.

Вы можете также взглянуть на rsnapshot (www.rsnapshot.org). Вероятно, он доступен как установочный пакет для используемого вами дистрибутива Linux.

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

Вы можете определить интервалы между моментальными снимками и срок их хранения. Типичной настройкой может быть хранение ежемесячных снимков в течение 6 месяцев, еженедельных снимков в течение одного месяца и ежедневных снимков в течение одной недели.

Для правильной настройки rsnapshot требуются некоторые знания о ssh и / или rsync (в зависимости от ваших настроек). В «безопасной» внутренней среде вам может быть достаточно использования простого rsync в качестве среды передачи для rsnapshot.

Да! Rsync очень быстр, это чрезвычайно универсальный инструмент для копирования файлов.

  • Элемент списка

1.Rsync поддерживает копирование, ссылки, устройства, владельцев, группы и разрешения.

2. опции Exclude и exclude-from, аналогичные GNU tar

3. Не требует привилегий суперпользователя

Локально: rsync [ОПЦИЯ ...] SRC ... [DEST]

   Access via remote shell:
     Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
     Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

   Access via rsync daemon:
     Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
           rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
     Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
           rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

   Usages with just one SRC arg and no DEST arg will list the source files instead of copying.