В жемчуге:
cat <somefile> | perl -e 'while(<>) { push @a, $_; } foreach (reverse(@a)) { print; }'
Как уже отмечено, существует много опций и какой является лучшим, зависит от Ваших требований.
Начиная с Ваших систем находится на RAID1, можно просто заменить один диск и позволить зеркалу восстановить себя. Удаленный диск может использоваться в качестве резервной копии.
В прошлом для полных системных резервных копий, я использовал Ghost4Linux (иначе G4L) и Mondo/Mindi. Первый может сохранить образ раздела локально или удаленно и позже может создать загрузочное восстановление (+rescue) CD или DVD. У обоих есть ncurses gui, никакая потребность в использовании командной строки.
Но много раз, я просто копирую целую систему. Я главным образом использую rsync, но здесь являюсь некоторыми опциями, что я думаю, что это - то, что Вы ищете.
Давайте предположим, что у Вас есть два раздела, /
и /var
и Вы хотите полное резервное копирование. Все команды требуют полномочий пользователя root.
mkdir /mnt/orig
mount / /mnt/orig -o bind
mount /var /mnt/orig/var -o bind
Это создаст новую точку монтирования для rootfs, который можно теперь скопировать, не волнуясь для других смонтированных файловых систем как /proc
или /sys
или сетевые ресурсы.
Давайте предположим, что Вам отформатировали второй диск с соответствующей файловой системой и смонтированный под /mnt/backup
(или NFS на той же точке монтирования). Рекомендуется, чтобы некоторые услуги прекратили работать, например, mysql сервис или почтовый сервер, гарантировать целостность тиражируемых данных.
Каждая из следующих команд должна быть достаточной.
cp -a /mnt/orig/* /mnt/backup/
rsync -a /mnt/orig/ /mnt/backup/
tar -C /mnt/orig -cf - ./ | tar -C /mnt/backup -xpf -
Последний является видом излишества все же. tar
и rsync
обеспечьте a --exclude
параметр для пропуска файлов на основе сопоставления с образцом, например. --exclude=\*.log --exclude=var/tmp
. Вышеупомянутые команды не используют сжатие, и у Вас будет точная копия Вашей системы. Можно также установить личинку и сделать диск с резервной копией загрузочным.
Если у Вас есть ограниченное пространство на Вашем устройстве резервного копирования или не совместимой файловой системе (NTFS), или это - смонтированная доля CIFS, можно создать сжатый архив tar.
tar -C /mnt/orig -zcf /mnt/backup/mybackup_$(date -I).tar.gz ./
или создайте изображение squashfs, которое можно позже циклично выполнить, монтируют и просматривают его содержание как нормальная файловая система.
mksquashfs /mnt/orig/ /mnt/backup/mybackup.squashfs
mkdir /mnt/squash
mount /mnt/backup/mybackup.squashfs /mnt/squash -o loop
Кроме того, получая удаленное резервное копирование с ssh
и tar
или rsync
. rsync
требует корневого доступа к удаленному серверу для сохранения владений, полномочий, файлы устройств и т.д. --numeric-ids
необходимо для того, чтобы не смешивать владения с пользователями удаленной системы.
tar -C /mnt/orig -zcf - ./ | ssh user@server 'cat -> mybackup_$(date -I).tgz'
rsync -aP -e ssh --numeric-ids /mnt/orig/ root@server:/path/to/backup/
В большинстве случаев полное восстановление потребует начальной загрузки с другой системой, предпочтительно Живой CD, затем создавая/перестраивая Вашу схему выделения разделов, справляясь/извлекая Ваши данные назад и при установке загрузчика снова.
Собственный способ сделать это состоит в том, чтобы создать уровень LVM между Вашими разделами и диском. LVM имеет возможность создать снимки, которые являются в основном мгновенными экземплярами момента времени диска. Причина этого вместо просто dd'ing диск непосредственно состоит в том, что содержание диска может измениться, в то время как dd происходит. Снимок LVM не изменится однажды его созданный. Затем после того, как Ваше резервное копирование завершено, уничтожьте снимок.
Таким образом, многоуровневая топология посмотрела бы что-то как:
DISK0 + DISK1
НАБЕГ 1
LVM
Разделы
Файловые системы
Вы могли также поместить LVM сверх каждого раздела, если бы Вы хотели создать резервную копию просто единственного раздела. Любой работы
cat
. Нет ничего волшебного о dd
, волшебство находится в /dev/sd*
. И не, dd
не быстрее.
– Gilles 'SO- stop being evil'
10.04.2011, 22:35
Как насчет того, чтобы использовать http://clonezilla.org/ Clonezilla для этого? Clonezilla LiveCD очень прост в использовании.