User Tools

Site Tools


резервное_копирование_и_восстановление

This is an old revision of the document!


Table of Contents

Резервное копирование и восстановление

Резервное копирование и восстановление файлов (cpio)

Создание архива

# cd /; find etc/ -name '*,v' | sed -e 's/RCS\///' -e 's/,v//' | cpio -o | bzip2 -c > /mnt/etc.cpio.bz2

Просмотр содержимого архива

# bzcat /mnt/etc.cpio.bz2 | cpio -t

Распаковка отдельных файлов/каталогов архива

# cd /tmp; bzcat /mnt/etc.cpio.bz2 | cpio -id etc/clamav/clamd.conf

Распаковка всего архива

# cd /tmp; bzcat /mnt/etc.cpio.bz2 | cpio -id

Сценарий: бекап фотографий из Apple iPhoto

[~ ] $ cat Pictures/backup/backup.sh 
#!/bin/sh

# Archive size
# export as=734003200 #CD
# export as=700000000 #CD
# export as=4831838208 #DVD
export as=8500000000 #DVDRDL

# Backup list file name
export bf=backup/backup`date "+%Y-%m-%d_%H-%M-%S"`_${as}.txt

export IFS=""

cd ~/Pictures
[ -e backup/full.txt ] && rm backup/full.txt
mkfifo backup/full.txt

find iPhoto\ Library -type f -exec ls -l {} \; > backup/full.txt &

cat backup/backup*.txt | fgrep -v -f - backup/full.txt | 
(
        s=0
        while read f
        do
                echo $f >> $bf
                s=$(($s+`echo "$f" | awk '{print $5}'`))
                test $s -gt $as && break 
        done
        test $s -gt $as && {
                echo "Success create list for archive"
                echo "File name: $bf"
                echo "Archive size: $s"
                sed 's/.*\(iPhoto Library.*\)/\1/' ${bf} | cpio -o > ${bf}.cpio
        } || {
                echo "No enought files for archive"
                echo "Need $as exists $s"
                rm $bf
        }
)
[ -e backup/full.txt ] && rm backup/full.txt

Резервное копирование и восстановление каталогов (tar)

Создание архива

# cd /; tar -c -v -f /mnt/user_dirs.tar --exclude home/user2 root/ home/

Просмотр содержимого архива

# tar -t -f user_dirs.tar

Распаковка отдельных файлов/каталогов архива

# cd /tmp

# tar -xf user_dirs.tar root/.bashrc
# tar -xOf user_dirs.tar root/.bashrc  #вывести на экран (STDOUT)
# tar -xf user_dirs.tar root/
# tar -xf user_dirs.tar '*bash*'

Распаковка всего архива

# cd /; tar -x -v -f user_dirs.tar

Управление сжатием архива

-z	- использовать gzip сжатие
-j	- использовать bzip2 сжатие

Сценарий 1: архивирование каталогов с файлами конфигураций с использованием rsh/ssh

# cat /root/backup_conf.sh
#!/bin/sh
echo Backup conf

CMD="/bin/tar"
# CMD="/usr/bin/tar"

RCMD="ssh userX@backup"
# RCMD="rsh -l userX backup"

DIRS="etc/ var/cache/bind/"
# DIRS="etc/ usr/local/etc/ var/named/etc/namedb"

cd /; $CMD -cjf - $DIRS | $RCMD "cat > `hostname`.backup_conf.`date '+%Y%m%d'`.tbz"
# chmod +x /root/backup_conf.sh

Сценарий 2: архивирование репозитория APT с разбиением на файлы размером не более 2GB

# tar -cvf - apt-mirror/ | ssh root@backup.corpX.un "cd /mnt/rep1004; split -b 2GB - apt-mirror.tar."

Резервное копирование и восстановление данных разделов (dump/restore)

Бекап раздела

# dump 0 -aLf /mnt/home.dmp /home

Восстановление отдельного каталога/файла

# cd /tmp

# restore -xf /mnt/home.dmp /home/user1/
...
Specify next volume #: 1
set owner/mode for '.'? [yn] y

# ls /tmp/home/user1/

# restore -if /mnt/home.dmp
restore > cd home
restore > add user1
restore > extract
...
Specify next volume #: 1
set owner/mode for '.'? [yn] y
restore > quit

# ls /tmp/home/

Восстановление всего раздела

# cd /home

# restore -rf /mnt/home.dmp

Сценарий: резервное копирование и восстановление операционной системы FreeBSD

Планирование

part    mount   util      file        size

a 	/	dump      root.dmp    138Mb
d	/var/	dump      var.dmp     34Mb
e	/usr/	tar       usr.tgz     230Mb (без /usr/ports)

Резервное копирование

[hostX:~] # rsh -l uX gZ "touch root.dmp"
[hostX:~] # dump 0 -aLf uX@gZ:root.dmp /
  DUMP: Connection to gZ.class established.
...
  DUMP: DUMP IS DONE

[hostX:~] # rsh -l uX gZ "touch var.dmp"
[hostX:~] # dump 0 -aLf uX@gZ:var.dmp /var
  DUMP: Connection to gZ.class established.
...
  DUMP: DUMP IS DONE


[hostX:~] # cd /usr
[hostX:/usr] # tar –czvf - --exclude ports/ . | rsh -l uX gZ "cat > usr.tgz"

Восстановление

Загружаем систему с livecd

При использовании FreeBSD livefs диска выбираем пункты меню:

"Fixit" -> CDROM/DVD -> Alt-F4

При использовании frenzy livecd в процессе загрузки указываем опцию

nohdd

Настраиваем и тестируем сеть

Fixit# ifconfig rl0 inet 10.10.106.X/24
Fixit# ping 10.10.106.Z
...

Добавляем упоминание сервиса rsh в файл /etc/services

Fixit# cat >> /etc/services
shell 514/tcp
<Ctrl>-D

Создаем файловую систему на новом диске

Используем sysinstall вместо утилит fdisk, bootmgr, bsdlabel и newfs

Fixit# sysinstall
  Configure
    Fdisk
      C - Create Slise
      S - Set Bootable
      W - Write changes
      BootMgr
      Quit
    Exit
  Exit Install

Fixit# /stand/sysinstall
  Configure
    Label
      C - Create
        500M
        FS 
        /mnt/a (will be "/")
      S - Toggle Softupdates 
      C - Create
        500M
        FS 
        /mnt/b 
      C - Create
        3G
        FS 
        /mnt/d (will be "/usr")
      C - Create
        FS 
        /mnt/e (will be "/var")
      W - Write
      Q - Finish
    Exit
  Exit Install

Fixit# mount
/dev/md0 on / (ufs, local)
devfs on /dev (devfs, local)
/dev/acd0 on /dist (cd9660, local, read-only)
/dev/ad0s2d on /mnt/a (ufs, local)
/dev/ad0s2e on /mnt/b (ufs, local, soft-updates)
/dev/ad0s2f on /mnt/d (ufs, local, soft-updates)
/dev/ad0s2g on /mnt/e (ufs, local, soft-updates)

Восстанавливаем файлы

/ раздел

Fixit# cd /mnt/a
Fixit# restore -rf uX@10.10.106.Z:root.dmp

При необходимости можно откорректировать востановленные файлы конфигурации

Fixit# ee /mnt/a/etc/rc.conf

Fixit# ee /mnt/a/etc/fstab

/var раздела

Fixit# cd ../e
Fixit# restore -rf uX@10.10.106.Z:var.dmp

/usr раздел

Fixit# cd ../d

Fixit# rsh -l uX 10.10.106.Z "cat usr.tgz" | tar -xvf –

Исправляем имена разделов

Fixit# umount /mnt/a
Fixit# umount /mnt/b
Fixit# umount /mnt/d
Fixit# umount /mnt/e

Fixit# bsdlabel ad0s2
# /dev/ad0s2:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  c: 10474317        0    unused        0     0         # "raw" part, don't edit
  d:  1024000        0    4.2BSD     2048 16384 64008 
  e:  1024000  1024000    4.2BSD     2048 16384 64008 
  f:  6291456  2048000    4.2BSD     2048 16384 28552 
  g:  2X4861  8339456    4.2BSD     2048 16384 28552 

Fixit# EDITOR=ee

Редактируем имена разделов

Fixit# bsdlabel -e ad0s2
# /dev/ad0s2:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  1024000        0    4.2BSD     2048 16384 64008 
  b:  1024000  1024000    4.2BSD     2048 16384 64008 
  c: 10474317        0    unused        0     0         # "raw" part, don't edit
  d:  6291456  2048000    4.2BSD     2048 16384 28552 
  e:  2X4861  8339456    4.2BSD     2048 16384 28552 

Восстановливаем загрузчики boot0 и boot2

Fixit# sysinstall
  Configure
    Fdisk
      Set bootable
      Write
      Boot Manager
    Exit
  Exit Install
Reboot in new system:
Fixit# exit
резервное_копирование_и_восстановление.1298533546.txt.gz · Last modified: 2013/05/22 13:50 (external edit)