This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision | |||
| 
                    резервное_копирование_и_восстановление [2011/02/24 11:41] val removed  | 
                — (current) | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Резервное копирование и восстановление ====== | ||
| - | |||
| - | ===== Резервное копирование и восстановление файлов (cpio) ===== | ||
| - | |||
| - | [[Команда cpio]] | ||
| - | |||
| - | ==== Сценарий: бэкап фотографий из Apple iPhoto ==== | ||
| - | <code> | ||
| - | [~ ] $ 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 | ||
| - | </code> | ||
| - | |||
| - | ===== Резервное копирование и восстановление каталогов (tar) ===== | ||
| - | |||
| - | ==== Создание архива ==== | ||
| - | <code> | ||
| - | # cd /; tar -c -v -f /mnt/user_dirs.tar --exclude home/user2 root/ home/ | ||
| - | </code> | ||
| - | ==== Просмотр содержимого архива ==== | ||
| - | <code> | ||
| - | # tar -t -f user_dirs.tar | ||
| - | </code> | ||
| - | ==== Распаковка отдельных файлов/каталогов архива ==== | ||
| - | <code> | ||
| - | # 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*' | ||
| - | </code> | ||
| - | |||
| - | ==== Распаковка всего архива ==== | ||
| - | <code> | ||
| - | # cd /; tar -x -v -f user_dirs.tar | ||
| - | </code> | ||
| - | |||
| - | ==== Управление сжатием архива ==== | ||
| - | <code> | ||
| - | -z - использовать gzip сжатие | ||
| - | -j - использовать bzip2 сжатие | ||
| - | </code> | ||
| - | |||
| - | ==== Сценарий 1: архивирование каталогов с файлами конфигураций с использованием rsh/ssh ==== | ||
| - | <code> | ||
| - | # cat /root/backup_conf.sh | ||
| - | </code><code> | ||
| - | #!/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" | ||
| - | </code><code> | ||
| - | # chmod +x /root/backup_conf.sh | ||
| - | </code> | ||
| - | |||
| - | ==== Сценарий 2: архивирование репозитория APT с разбиением на файлы размером не более 2GB ==== | ||
| - | <code> | ||
| - | # tar -cvf - apt-mirror/ | ssh root@backup.corpX.un "cd /mnt/rep1004; split -b 2GB - apt-mirror.tar." | ||
| - | </code> | ||
| - | |||
| - | ===== Резервное копирование и восстановление данных разделов (dump/restore) ===== | ||
| - | |||
| - | ==== Бекап раздела ==== | ||
| - | <code> | ||
| - | # dump 0 -aLf /mnt/home.dmp /home | ||
| - | </code> | ||
| - | |||
| - | ==== Восстановление отдельного каталога/файла ==== | ||
| - | <code> | ||
| - | # 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/ | ||
| - | </code> | ||
| - | |||
| - | ==== Восстановление всего раздела ==== | ||
| - | <code> | ||
| - | # cd /home | ||
| - | |||
| - | # restore -rf /mnt/home.dmp | ||
| - | </code> | ||
| - | |||
| - | ===== Сценарий: резервное копирование и восстановление операционной системы FreeBSD ===== | ||
| - | |||
| - | ==== Планирование ==== | ||
| - | <code> | ||
| - | part mount util  file size | ||
| - | |||
| - | a / dump  root.dmp  138Mb | ||
| - | d /var/ dump  var.dmp  34Mb | ||
| - | e /usr/ tar  usr.tgz  230Mb (без /usr/ports) | ||
| - | </code> | ||
| - | |||
| - | ==== Резервное копирование ==== | ||
| - | <code> | ||
| - | [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" | ||
| - | </code> | ||
| - | |||
| - | ==== Восстановление ==== | ||
| - | |||
| - | |||
| - | === Загружаем систему с livecd === | ||
| - | |||
| - | При использовании FreeBSD livefs диска выбираем пункты меню: | ||
| - | <code> | ||
| - | "Fixit" -> CDROM/DVD -> Alt-F4 | ||
| - | </code> | ||
| - | |||
| - | При использовании frenzy livecd в процессе загрузки указываем опцию  | ||
| - | <code> | ||
| - | nohdd | ||
| - | </code> | ||
| - | |||
| - | === Настраиваем и тестируем сеть === | ||
| - | |||
| - | <code> | ||
| - | Fixit# ifconfig rl0 inet 10.10.106.X/24 | ||
| - | Fixit# ping 10.10.106.Z | ||
| - | ... | ||
| - | </code> | ||
| - | Добавляем упоминание сервиса rsh в файл /etc/services | ||
| - | <code> | ||
| - | Fixit# cat >> /etc/services | ||
| - | shell 514/tcp | ||
| - | <Ctrl>-D | ||
| - | </code> | ||
| - | |||
| - | === Создаем файловую систему на новом диске === | ||
| - | |||
| - | Используем sysinstall вместо утилит fdisk, bootmgr, bsdlabel и newfs | ||
| - | <code> | ||
| - | 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) | ||
| - | </code> | ||
| - | |||
| - | === Восстанавливаем файлы === | ||
| - | |||
| - | === / раздел === | ||
| - | <code> | ||
| - | Fixit# cd /mnt/a | ||
| - | Fixit# restore -rf uX@10.10.106.Z:root.dmp | ||
| - | </code> | ||
| - | |||
| - | При необходимости можно откорректировать востановленные файлы конфигурации | ||
| - | <code> | ||
| - | Fixit# ee /mnt/a/etc/rc.conf | ||
| - | |||
| - | Fixit# ee /mnt/a/etc/fstab | ||
| - | </code> | ||
| - | |||
| - | === /var раздела === | ||
| - | <code> | ||
| - | Fixit# cd ../e | ||
| - | Fixit# restore -rf uX@10.10.106.Z:var.dmp | ||
| - | </code> | ||
| - | |||
| - | === /usr раздел === | ||
| - | <code> | ||
| - | Fixit# cd ../d | ||
| - | |||
| - | Fixit# rsh -l uX 10.10.106.Z "cat usr.tgz" | tar -xvf – | ||
| - | </code> | ||
| - | |||
| - | === Исправляем имена разделов === | ||
| - | <code> | ||
| - | 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 | ||
| - | </code> | ||
| - | |||
| - | Редактируем имена разделов | ||
| - | <code> | ||
| - | 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 | ||
| - | </code> | ||
| - | |||
| - | === Восстановливаем загрузчики boot0 и boot2 === | ||
| - | <code> | ||
| - | Fixit# sysinstall | ||
| - | Configure | ||
| - | Fdisk | ||
| - | Set bootable | ||
| - | Write | ||
| - | Boot Manager | ||
| - | Exit | ||
| - | Exit Install | ||
| - | Reboot in new system: | ||
| - | Fixit# exit | ||
| - | </code> | ||