Резервное копирование с помощью dump + FTP

Автор: | 17/12/2012
 

backupКраткое описание процесса создания резервной копии всего раздела (на диске всего один корневой раздел /) с помощью утилиты dump.

Просто для информации (в примере этот момент рассматриваться не будет) – несколько слов об инкрементом копировании – из книги M. Lucas “Absolute FreeBSD”:

Уровни резервирования
Одна из наиболее интересных особенностей dump – возможность ин-
крементного копирования через уровни резервирования (dump level),
которые варьируются от 0 до 9. По умолчанию принимается уровень 0,
что подразумевает копирование всех файлов на диске, для которых не
установлен флаг nodump. Более высокие уровни резервирования означа-
ют следующее: «сохранять файлы, которые были изменены или созда
ны с момента выполнения дампа более низкого уровня». Такая после-
довательность уровней позволяет выполнять инкрементные дампы –
достаточно указать необходимый уровень резервирования как ключ
командной строки.
Например, пусть каждый понедельник выполняется дамп уровня 0.
Во вторник можно выполнить инкрементный дамп уровня 1. При этом
будут сохранены только те файлы, которые изменились с момента про-
ведения дампа в понедельник. Если в среду выполнить дамп уровня 2,
то будут сохранено все, что изменилось со вторника. Однако если в сле-
дующий вторник выполнить еще один дамп уровня 1, будет сохранено
все, что изменилось с первого понедельника, включая файлы, которые
были сохранены в среду.
Хотя с помощью dump можно выполнять инкрементное резервирова-
ние, лучше создавать дампы уровня 0 – просто потому, что тогда будет
намного легче восстанавливать файлы, чем в случае серии инкремент-
ных дампов. Дампы уровня 0 выполняются дольше инкрементных
дампов и требуют больше места, однако в большинстве случаев время,
сбереженное при восстановлении данных, важнее, чем стоимость лен-
ты. При надлежащем планировании дампы уровня 0 можно выпол-
нять ночью.
Указывайте желаемый уровень резервирования как аргумент команд-
ной строки, например, чтобы создать дамп уровня 2, запустите коман-
ду dump –2.

Пример восстановления резервной копии из файла dump-файла можно найти тут>>>.

Можно выполнять dump напрямую из копируемой системы, для этого необходимо использовать ключ -L – в таком случае, утилита dump создаст snapshot (“слепок“) системы, и уже с него будет делать копию. Это необходимо, что бы корректно скопировались такие файлы как базы данных.

Внимание: если в файловой системе используется journaled soft-updates – то dump тут не поможет. Как вариант – использовать tar. Возможно – во FreeBSD 10.* эту проблему исправят.

В данном примере будет произведено копирование с выключенной ОС и файловой системы.

Загружаемся с любого LiveCD, например – Frenzy. Для удобства работы – настроим сеть:

# ifconfig em0 inet 77.120.***.29 netmask 255.255.255.0
# route add default 77.120.***.1

Настроим NS, в файл /etc/resolv.conf добавим строку:

nameserver 8.8.8.8

Теперь, надо создать пользоваля, под которым мы будем подключаться по SSH, с помощью команды adduser и запустить сам сервер SSH:

# service sshd onestart

Найдем раздел с FreeBSD, который необходимо копировать:

# ls /dev | grep da
da0
da0p1
da0p2
da0p3

В данном примере, весь диск разбит на один корневой раздел, его мы и будем копировать:

# file -s /dev/da0p2
/dev/da0p2: Unix Fast File system [v2] (little-endian) last mounted on /, last written at Mon Dec 17 09:45:20 2012, clean flag 1, readonly flag 0, number of blocks 7340016, number of data blocks 7223927, number of cylinder groups 39, block size 32768, fragment size 4096, average file size 16384, average number of files in dir 64, pending blocks to free 0, pending inodes to free 0, system-wide uuid 0, minimum percentage of free blocks 8, TIME optimization

Если бы на диске присутствовали другие разделы, например раздел /tmp, то определить их можно так (пример с другой машины):

# file -s /dev/da0p4
/dev/da0p4: Unix Fast File system [v2] (little-endian) last mounted on /tmp

Теперь, можно выполнить само копирование.

Что бы не копировать лишнее – установим флаги nodump на каталоги и файлы, которые не требуются в резервной копии:

# chflags nodump /var/log/

Просмотреть флаги можно командой ls с ключём -o:

# ls -Glo
total 66176
drwxrwxr-x   2 root    operator  –                       512 Aug  2 18:16 .snap
-r——–   1 root    wheel     schg,sunlnk,nodump 33554432 Aug  2 18:16 .sujournal
drwxr-xr-x   2 root    wheel     –                       512 Jan  3  2012 account
drwxr-xr-x   4 root    wheel     –                       512 Jan  3  2012 at
drwxr-x—   2 root    audit     –                       512 Jan  3  2012 audit
drwxr-x—   2 root    wheel     –                       512 Jan  6 03:02 backups
drwxr-x—   2 root    wheel     –                       512 Jan  3  2012 cache
drwxr-x—   2 root    wheel     –                       512 Jan  3  2012 crash
drwxr-x—   3 root    wheel     –                       512 Jan  3  2012 cron
drwxr-xr-x  14 root    wheel     –                       512 Jan  6 09:08 db
dr-xr-xr-x   2 root    wheel     schg                    512 Jan  3  2012 empty
drwxrwxr-x   2 root    games     –                       512 Jan  3  2012 games
drwx——   2 root    wheel     –                       512 Jan  3  2012 heimdal
drwxr-xr-x   6 root    wheel     nodump                 2048 Jan  6 03:29 log

Будут использоваться такие ключи:

0 — максимальный уровень сохранения информации при дампе;
a – не проверять наличие места на диске;
f – сохраняет дамп в файл.

Запускаем:

# dump -0af – /dev/da0p2 | ftp -u ftp://user:[email protected]/user.kioko.dump –

DUMP: Date of this level 0 dump: Mon Dec 17 12:52:22 2012
DUMP: Date of last level 0 dump: the epoch
DUMP: Dumping /dev/da0p2 to standard output
DUMP: mapping (Pass I) [regular files]
Trying 77.120.***.145…
Connected to backup.dc.server.com.
220———- Welcome to Pure-FTPd [privsep] ———-
220-You are user number 3 of 500 allowed.
220-Local time is now 13:52. Server port: 21.
220-This is a private system – No anonymous login
220 You will be disconnected after 15 minutes of inactivity.
331 User user OK. Password required
230-OK. Current restricted directory is /
230 2093188 Kbytes used (0%) – authorized: 230686720 Kb
Remote system type is UNIX.
Using binary mode to transfer files.
200 TYPE is now 8-bit binary
remote: user.kioko.dump
500 Unknown command
227 Entering Passive Mode (77,120,112,145,197,214)
150 Accepted data connection
DUMP: mapping (Pass II) [directories]
DUMP: estimated 5522617 tape blocks.
DUMP: dumping (Pass III) [directories]
DUMP: dumping (Pass IV) [regular files]
DUMP: 11.46% done, finished in 0:38 at Mon Dec 17 13:36:10 2012
DUMP: 26.86% done, finished in 0:27 at Mon Dec 17 13:29:47 2012
DUMP: 41.36% done, finished in 0:21 at Mon Dec 17 13:28:48 2012
DUMP: 57.57% done, finished in 0:14 at Mon Dec 17 13:27:17 2012
DUMP: 72.81% done, finished in 0:09 at Mon Dec 17 13:26:53 2012
DUMP: 86.39% done, finished in 0:04 at Mon Dec 17 13:27:16 2012
DUMP: 100.00% done, finished in 0:00 at Mon Dec 17 13:27:33 2012
DUMP: DUMP: 5523577 tape blocks
DUMP: finished in 2102 seconds, throughput 2627 KBytes/sec
DUMP: DUMP IS DONE
226-7616758 Kbytes used (3%) – authorized: 230686720 Kb
226-File successfully transferred
226 2390.344 seconds (measured here), 2.26 Mbytes per second
5656135680 bytes sent in 35:12 (2.55 MB/s)

Или, для примера – выполнение dump с архивацией bzip и загрузкой по FTP:

# dump -0Laf – /dev/da0p3 | gzip -9 | ftp -u ftp://user:[email protected]/user.akira_root.dump –
Trying 77.120.***.145:21 …
Connected to backup.dc.server.com.
220———- Welcome to Pure-FTPd [privsep] ———-
220-You are user number 10 of 500 allowed.
220-Local time is now 10:27. Server port: 21.
220-This is a private system – No anonymous login
220 You will be disconnected after 15 minutes of inactivity.

DUMP: Date of this level 0 dump: Sun Jan  6 09:27:29 2013
DUMP: Date of last level 0 dump: the epoch
DUMP: Dumping snapshot of /dev/da0p3 (/) to standard output
150 Accepted data connection
DUMP: mapping (Pass I) [regular files]
DUMP: mapping (Pass II) [directories]
DUMP: estimated 204012 tape blocks.
DUMP: dumping (Pass III) [directories]
DUMP: dumping (Pass IV) [regular files]

226-7703473 Kbytes used (6%) – authorized: 125829120 Kb
226-File successfully transferred
226 319.935 seconds (measured here), 271.04 Kbytes per second
88796593 bytes sent in 05:19 (271.04 KiB/s)

Вот и сам файл дампа:

# lftp user:[email protected]
lftp [email protected]:~> ls
-rw-r–r–    1 65534      nogroup      88796593 Jan  6 10:32 user.akira_root.dump

Дамп выполнен. Проверим:

# ftp [email protected]
Trying 77.120.***.137…
Connected to backup.dc.server.com.

150 Accepted data connection

-rw-r–r–    1 65534      nogroup    5656135680 Dec 17 14:32 user.kioko.dump

ftp>

Копия раздела готова.

Что бы проверить целосность файла дампа и/или просмотреть его содержимое – можно вспользоваться утилитой restore с ключём -t, например:

# restore -t -f user.kioko.dump
Dump   date: Mon Dec 17 14:52:22 2012
Dumped from: the epoch
2      .
3      ./.snap
1184000      ./dev
1231360      ./bin
1231361      ./bin/cat
1231362      ./bin/chflags

1326229      ./var/tmp/sess_a804d5f5bc0d2d331489fad183c255f5
1326232      ./var/tmp/sess_5abd13a40fa846c494b2c04f856a430d
1326101      ./var/yp
1326102      ./var/yp/Makefile.dist
1326103      ./var/yp/Makefile
1564442      ./var/lib
1615541      ./var/lib/dbus
5      ./sys
6      ./.profile
7      ./.cshrc
8      ./COPYRIGHT
2806      ./home
9      ./entropy
4      ./.sujournal

Русский man по утилите dump можно найти, например, у Лиссяры тут>>>.