This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
резервное_копирование_и_восстановление [2011/02/24 10:45] val |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Резервное копирование и восстановление ====== | ||
- | |||
- | ===== Резервное копирование и восстановление файлов (cpio) ===== | ||
- | |||
- | ==== Создание архива ==== | ||
- | <code> | ||
- | # cd /; find etc/ -name '*,v' | sed -e 's/RCS\///' -e 's/,v//' | cpio -o | bzip2 -c > /mnt/etc.cpio.bz2 | ||
- | </code> | ||
- | |||
- | ==== Просмотр содержимого архива ==== | ||
- | <code> | ||
- | # bzcat /mnt/etc.cpio.bz2 | cpio -t | ||
- | </code> | ||
- | |||
- | ==== Распаковка отдельных файлов/каталогов архива ==== | ||
- | <code> | ||
- | # cd /tmp; bzcat /mnt/etc.cpio.bz2 | cpio -id etc/clamav/clamd.conf | ||
- | </code> | ||
- | |||
- | ==== Распаковка всего архива ==== | ||
- | <code> | ||
- | # cd /tmp; bzcat /mnt/etc.cpio.bz2 | cpio -id | ||
- | </code> | ||
- | |||
- | ==== Сценарий: бекап фотографий из 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> | ||