forked from opennet/FSBackup
-
Notifications
You must be signed in to change notification settings - Fork 0
/
FAQ
393 lines (306 loc) · 29.9 KB
/
FAQ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
FAQ - ОТВЕТЫ НА ЧАСТО-ЗАДАВАЕМЫЕ ВОПРОСЫ
-------------------------------------------------------------------------------
Как увеличить быстродействие и снизить нагрузку на процессор при шифровании
бэкапа ?
При использовании шифрования через gpg, рекомендуется установить значение
$prog_gzip="" (т.е. отключить сжатие архива), так как gpg перед шифрованием
самостоятельно сжимает данные. Использование gzip приведет к двойному
сжатию и лишней нагрузке на CPU.
-------------------------------------------------------------------------------
Возникло опасение, что при большом количестве файлов fsbackup съест все ОЗУ.
Ничего подобного, одним из достоинств fsbackup является очень экономные
требования к памяти, за счет использования для хранения хэшей библиотеки
DBM. По умолчанию, используется не более 4 Мб ОЗУ.
-------------------------------------------------------------------------------
Как увеличить быстродействие и оптимизировать распределение памяти для
бэкапа ?
По умолчанию в памяти находится только 4 Мб индексов, остальное сбрасывается
на диск. Быстродействие создания бэкапа можно _на_порядок_ увеличить, за
счет увеличения размер кэша для размещения хэш таблицы в памяти.
Для этого в fsbackup.pl нужно изменить значения константы:
use constant DB_DEF_CACHE_SIZE => размер_кэша_в_байтах;
Чем больше DB_DEF_CACHE_SIZE - тем лучше.
-------------------------------------------------------------------------------
Собрался сменить fsbackup 1.0 на 1.1 (1.2). Не будет ли проблем с существующей
конфигурацией, при переходе на новую версию ?
Можно смело оставить старые файлы конфигурации, заменив только скрипты.
При желании активировать новинки, появившиеся в 1.1 (1.2), загляните в CHANGES
и добавьте новые переменные в старые конфиги.
-------------------------------------------------------------------------------
Зачем было создавать свою систему бэкапа SQL таблиц, когда есть pg_dump и
mysqldump ?
Ни тот ни другой не умеют бэкапить все базы, с пропуском нескольких.
Например, бэкап всех баз на MySQL сервере, кроме ненужной гигобайтовой базы
словоформ для поисковика. fsbackup же опирается на три кита: полный бэкап
всех баз, бэкап только указанных в backup_db_list баз данных и бэкап всех
баз, кроме указанных в backup_db_list. Начиная с версии 1.2 fsbackup умеет
производить бэкап (или исключать из бэкапа) не только отдельные базы, но
и таблицы.
-------------------------------------------------------------------------------
Как наиболее грамотно организовать бэкап сервера и большим объемом данных ?
Рекомендуется, описать бэкап разных участков файловой системы в нескольких
файлах конфигурации.
Например, создать следующие конфигурации:
server_etc.conf - описывает создание бэкапа директории /etc и секретных
данных с использованием PGP шифрования;
server_local.conf - бэкап /usr/local, за исключением временных файлов.
server_sql.conf - бэкап БД.
server_home.conf - бэкап директорий пользователей (/home или /usr/home)
server_soft.conf - бэкап архива программ (без сжатия)
Внимание, директории для сохранения бэкапа в каждом конфигурационном файле
должны отличаться ($cfg_remote_path, $cfg_local_path), сохранение в одной и
той же директории нескольких, описанных разными .conf файлами, бэкапов не
допустимо.
-------------------------------------------------------------------------------
Почему при указании переменной $cfg_maximum_archive_size=100, несжатые
тома архива оказываются размером немного больше или меньше 100 Кб ?
Переменная $cfg_maximum_archive_size учитывает реальный размер данных
в файлах плюс примерный размер атрибутов файла или директории. При этом
том завершается когда значение счетчика байт больше указанного в
конфигурации значения. Например, если последним добавляется файл размером 70Кб
и размер уже скомпонованного тома равен 90 Кб, то будет создан архивный
файл размером 90 Кб, а файл размером 70 Кб. будет помещен в следующий том.
Т.е. система старается создавать архивные тома размером чуть меньше, чем
размер указанный в файле конфигурации, за исключением случая наличия файла
размер которого больше лимита накладываемого на размер тома, в этом случае
файл целиком помещается в архивный том, несмотря на его большой размер.
Предотвратить создание архивных томов не помещающихся на накопитель,
используемый для резервирования, можно определив максимально возможный
размер файла для помещения в архив ($cfg_size_limit).
-------------------------------------------------------------------------------
Как мне не архивировать файлы из таких - то каталогов, причем сами каталоги
должны быть. Например, почтовые каталоги qmail, задаю маску: =!Maildir/cur/*
в результате не создает в архиве каталогов cur в профилях пользователя.
Достаточно указать:
=!.*/Maildir/new/.*
тогда все файлы внутри /Maildir/new/ не будут помещены в архив, а директория
будет добавлена в .dir файл и при восстановлении будет воссоздана. В tar архив
пустые директории не помещаются, только в .dir список.
-------------------------------------------------------------------------------
Почему fsbackup не делает backup каталогов, если в них нет файлов ?
Пустые каталоги просто не отражены в tar архиве (ровно как и права доступа
на все каталоги). Для хранения полного списка каталогов и прав доступа к ним,
используется .dir файл, выполненный в виде обычного shell сценария. При
восстановлении данных из backup, необходимо не только раскрыть .tar архив, но
и выполнить .dir сценарий.
-------------------------------------------------------------------------------
Что можете порекомендовать для бэкапа нескольких серверов ?
- Выделить старую машину с большим диском под backup-сервер.
- Вынести backup-сервер с тех. площадки, рекомендуется в другое здание
(например в удаленный офис), на случай пожара, грабежа и других
форс-мажорных обстоятельств. Или периодически скидывать бэкапы с
backup-сервера на переносной носитель (лента, CDROM и т.д.) и уносить
домой.
- Рекомендую производить бэкап по FTP, при грамотной организации, не менее
безопасно, чем по SSH (при использовании PGP шифрования бэкапа и
предотвращении возможности сниффинга), а главное более быстрый и
менее ресурсоемкий способ.
- На каждом из серверов, с которых будет производится бэкап, разграничить
области файловой системы в зависимости от важности и объема данных.
Каждую область описать в отдельном файле конфигурации (см. вопросы выше).
Для самых важных данных (например, файлы паролей, секретная информация
представляющая коммерческую тайну и т.д.), используйте PGP шифрование.
Для текстовых данных большого объема и не требующих частого поднятия из
бэкапа - используйте gzip сжатие. Если потребность в доступе к данным
в бэкапе велика, можно ограничиться обычным tar архивом без сжатия.
- Настроить ftp-сервер с доступом только c хостов с которых производится
бэкап (например, через /etc/hosts.allow) и закрытым для внешнего мира.
В конфигурации ftp сервера запретите выход за пределы домашней
директории (/etc/ftpchroot). Дополнительно, через crontab, пропишите
еженедельное дублирование резервной копии на бэкап-сервере на
соседний диск (резервирование бэкапа).
-------------------------------------------------------------------------------
Почему при создании бэкапа по FTP скрипт бэкапа "зависает" или вываливается по
таймауту ? FTP сервер (windows, nowell netware) на первый взгляд работает.
Некоторые ftp сервера или настройки фаервола не позволяют использовать
активный режим FTP соединения, применяемый по умолчанию. Установите
$cfg_remote_ftp_mode=1 в файле конфигурации.
-------------------------------------------------------------------------------
Не получается создать бэкап с использованием pgp-шифрования.
На удаленной и локальной машине создал\экспортировал\импортировал ключи так,
как написано в README на локальной машине (с которой сливается бэкап)
gpg --list-secret-key выдает:
pub 1024D/06E192F6 2002-08-20 Aleksey
sub 1024g/C3750174 2002-08-20
А когда запускаю fsbackup картина следующая:
PGP: enabled
......
gpg: backup: skipped: public key not found
gpg: [stdin]: encryption failed: public key not found
Судя по всему ваш ключ назван "Aleksey", а в файле конфигурации
(директива конфигурации $cfg_pgp_userid) в качестве имени публичного ключа
указан "backup". Еще одна частая ошибка - забывают заверить публичный ключ
(подписать, gpg --sign-key) на машине где производится бэкап.
-------------------------------------------------------------------------------
Как посмотреть размер файлов и атрибутов помещенных в архив ?
Архив получился слишком большой, нужно выяснить из-за какого файла так вырос
размер.
db_dump .hash
db_dump185 .hash
db2_dump .hash
-------------------------------------------------------------------------------
Почему в архив не помещаются файлы примонтированных через samba или netware дисков.
Попробуйте поместить в fsbackup.pl, после "use File::Find;" строку:
$File::Find::dont_use_nlink = 1;
-------------------------------------------------------------------------------
Можно ли реализовать через fsbackup архив файлов конфигурации. Т.е. бэкапить не
раз в день, а допустим проверять раз в 5 минут и если есть изменения делать
бэкап отражая в имени файла время изменения, в противном случае ничего не трогать ?
Настройте работу в режиме инкрементального бэкапа и укажите заведомо большое
число итераций (например, $cfg_increment_level=99999).
fsbackup, если нет изменений по сравнению с прошлым инкрементом, сругается,
что бэкапить нечего и не будет создавать лишних файлов.
-------------------------------------------------------------------------------
Если задать бэкап по /, будут ли помещены в бэкап все примонтированные
файловые системы ?
Нет, нужно перечислить в конфигурации все точки монитрования.
-------------------------------------------------------------------------------
На одной машине невозможно закачать по FTP архив (разбитый на тома по 800Мб)
суммарным размером больше 2 Гб.
Обновите версию perl модуля Net::FTP.
-------------------------------------------------------------------------------
Почему файл с именем /tmp/test/c:\trace_b.txt не помещается в архив, пишет:
/bin/tar: tmp/test/c\:\trace_b.txt: Cannot stat: No such file or direct
Боюсь, что с этим трудно бороться, \t вполне резонно может быть воспринят как
табуляция. Список файлов в tar передается как есть, без экранирования, и уже сам
tar разбирая файл со списком принимает решение об экранировании при помещении в
архив (что видно на примере экранирования ":").
Нужно почитать спецификацию на тип используемой вами файловой системы, вполне
вероятно, что символ \ не может быть использован в имени файла.
-------------------------------------------------------------------------------
fsbackup в сравнении с BackupPC ?
Насколько я понимаю, это продукты для разных задач. Задача fsbackup
- организовать бэкап только выборочных данных (гибкость задание
масок) используя ftp или ssh, а BackupPC - ведение полного архива
(прежде всего windows машин) на backup сервере на котором
установлено специальное серверное ПО. Для Web-интерфейса BackupPC
нужен suidperl, что не безопасно. И главное: fsbackup работает на
стороне клиента (отправка с клиента на сервер бэкапа), а BackupPC
на стороне сервера (сервер инициирует процесс бэкапа, на клиенте
софт не устанавливается (rsync или tar через ssh/rsh/nfs), т.е.
получив доступ к серверу бэкапа - автоматически получает полный
доступ ко всем клиентам).
-------------------------------------------------------------------------------
Хочу исключить из бэкапа файлы находящиеся в директории /etc/tinydns/log/main/.
Использую правило "f!/etc/tinydns/log/main/.*", но файлы все равно помещаются
в бэкап.
"f[~!]" - маска только для имени файла, без директории, "d[~!]" - маска только
для директории, '=[~!]' - маска для пути, '!' - исключение пути (не маска).
Например, есть файл "/dir/file.txt". "f" видит только "file.txt", "d" видит только
"/dir", а "=" видит "/dir/file.txt".
Примеры правильного решения:
!/etc/tinydns/log/main
=!/etc/tinydns/log/main/.*
-------------------------------------------------------------------------------
При создании архива с PGP-шифрованием из cron создаётся пустой tar (0 байт), почему?
Опишу Вам для информации (может быть пригодится для FAQ) решение моей
проблемы с шифрованием архива gpg по запуску из cron.
Заметил что в корне системы есть папка .gnupg (теор. не должно быть ?) с
пустым pubring. Переделал её в ссылку на ~/.gnupg, после чего файлы
стали нормально создаваться (не пустые).
Вывод: gpg, запускаемая cron из скрипта, не может обратиться к рутовой
pubring, а обращается к корневой (общей ?).
-------------------------------------------------------------------------------
install.pl ругается при установке одного из Perl модулей под AltLinux Master 2.4
В комплекте идут старые версии необходимых perl модулей, поэтому
рекомендуется перед запуском скрипта установки, вручную становить
более новые версии всех модулей:
File::Find - входит в базовую поставку Perl (perl-base)
Digest::MD5 - входит в базовую поставку Perl (perl-base) или в пакет perl-Digest-MD5
Net::FTP - пакет perl-libnet
DB_File - пакет perl-DBM
-------------------------------------------------------------------------------
Если я указываю параметр config_files="cfg_files1 cfg_files2",
то делается backup по конфигу cfg_files1 и скрипт висит не выполняя ни
каких действий(backup cfg_files2 не выполняется). Если отдельно
прописывать по одному эти файлы конфигурации, то все ок.
В скрипте create_backup.sh между запусками fsbackup стоит задержка в 10
минут. Закомментируйте строку "sleep 600" в конце файла.
-------------------------------------------------------------------------------
Можно ли исключать MySQL таблицы из бэкапа по маске. Имена "tbl_01_2007" (по датам).
В скрипте mysql_backup.sh для определения факта исключения используется
строка:
if [ "_$cur_ignore" = "_$cur_db:$cur_db_table" ]; then
можно попробовать заменить ее например на
grep_flag2=`echo "$cur_ignore"| grep -E "$cur_db:$cur_db_table"`
if [ -n "$grep_flag2" ]; then
Параметры задать как:
backup_db_list='base2:tbl_[0-9][0-9]_20[0-9][0-9]'
-------------------------------------------------------------------------------
Восстановление полного бэкапа всей системы в корень. Установил минимальный вариант FreeBSD.
Явно указываю в /scripts/fsrestore.sh название моего бэкапа; место, где его брать и место,
куда класть потом ("/"). Уже присутствующие файлы не заменяются новыми.
Подозреваю, что не получается восстановиться именно потому, что я ведь загрузил систему freebsd.
Корень её считается "/". И развернуть fsbackup пытается тоже в "/". Получается, что он пытается
перезаписать файлы, которые банально открыты системой и у него не получается.
Суть восстановления сводится к команде "tar -xpzf arc.tar.gz -C restore_path"
и запуску .dir файлов как shell скриптов.
Я не уверен, что вашем tar нет защиты от перетирания существующих
файлов (в BSD tar нужно указывать опцию "-U") (не удивлюсь если в
некоторых Linux дистрибутивах в пакет с tar включены патчи для защиты от
раскрытия архива в корень). Попробуйте добавить в строку вызова tar в
скрипте fsrestore.sh добавить опцию -U, например "tar -xpUzf".
Но я бы восстановил бэкап в /var/backup, а потом аккуратно перенес
оттуда частями в корень (не перенося /bin, /sbin и прочие уже
установленные системные файлы).
Самый правильный вариант - загрузиться с LiveCD (например штатный
FreeBSD resque или Frenzy), разбить и отформатировать дисковые разделы
руками, примонтировать в /mnt, скачать туда по ftp fsrestore.sh и архивы бэкапа,
а затем запустить восстановление в /mnt.
-------------------------------------------------------------------------------
Может ли fsbackup на FTP скопировать файлы не одним архивом, а по отдельности
без архивирования.
Возможно режим синхронизации можно для этого использовать, но он работает
через ssh, так как по сути тот же tar передает, но только с раскрытием
на удаленной стороне.
На первый взгляд, я бы сделал копирование одним файлом, но на удаленной
стороне в cron повесил скрипт, который бы следил за появлением новых
файлов или обновлением существующих и затем разархивировал что нужно.
Если просто синхронизировать нужно группу файлов, то лучше
использовать rsync. fsbackup для синхронизации подходит только в
ограниченных случаях, когда нужна особенно большая гибкость в выборе
файлов или есть необходимость подключить свой обработчик копирования
или фильтр.
-------------------------------------------------------------------------------
Почему fsbackup не работает с tar из состава OpenBSD ?
Для OpenBSD tar необходимо использовать вместо ключа -T ключ -l.
Замените все строки "$prog_tar -c -f - -T" в fsbackup.pl на
"$prog_tar -c -f - -l ".
-------------------------------------------------------------------------------
После запуска скрипта для бэкапа СУБД, дамп базы оставляются локально,
т.е. получается, что директории с дампом нужно дополнительно указывать
в конфигурации fsbackup.pl для загрузки на удаленный сервер бэкапа ?
Да, конечно. По умолчанию дампы в директорию fsbackup/sys_backup складываются,
и бэкапятся вместе с fsbackup. В конфиге явно должно быть:
__DATA__
...
/usr/local/fsbackup/sys_backup
или
/usr/local/fsbackup
-------------------------------------------------------------------------------
При запуске ./fsbackup.pl my_cfg выдает ошибку:
"my_cfg did not return a true value at ./fsbackup.pl line 78"
В чем может быть проблема ?
Посмотрите пример конфигурации, там чуть раньше блока __DATA__, есть
строка "1;". В вашем конфигурационном файле, она, судя по всему, удалена.
-------------------------------------------------------------------------------
Можно ли сделать, так чтоб бекап mysql вместе с остальными данными
копировался по сети, а не сохранялся в катологе sys_backup ?
Подразумевается, что каталог sys_backup должен быть включен в бэкап копируемый по сети,
если вы конечно строку из примера файла конфигурации не удалили.
Т.е. резервирование баз проходит в два этапа:
1. Помещаем дамп базы в sys_backup
2. Копируем содержимое sys_backup на сервер бэкапов.
По моему опыту, чаще всего на сервере с СУД требуется последняя версия дампа
базы, поэтому он и оставляется на локалньой машине.
-------------------------------------------------------------------------------
Поддерживает ли fsbackup ACL и сохранение данных о расширенных атрибутах ФС ?
Поддерживает ровно настолько, насколько их поддерживает tar,
установленный в вашей системе. Все операции по архивированию выполняются
через вызов программы tar. Из альтернативных реализаций tar, star точно
поддерживает ACL.
-------------------------------------------------------------------------------
Как сохранять в архиве директории с исключённым содержимым?
Как вариант исключать не через !/dir/, а через более мягкий оператор
исключения "d!/dir/.*". При этом исключенные директории будут учтены в
.dir файле. Другой вариант, использовать contrib/dir_sync.