Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
dirs 1494
files 10247
full_size 71.502
dup_size 2.506
archive_size 40.338
duplicates 692
bigfiles 249
bf_blocks 1581
bf_dup 45
bf_size 45.058
bf_dup_size 1.221
time 162.6651
В TAR отсутствует каталог с содержимым архива. Поэтому для просмотра содержимого архива нужно сканировать архив, пройдясь по всем заголовкам файлов. Что на больших архивах может занимать значительное время.
Хм, а зачем вам файлы сайта без БД? Обычно для сайта болезненна потеря и того, и другого.
К примеру, что вы будете делать если вам нужно восстановить одну таблицу из классического бэкапа
В моем же случае вам просто нужно зайти в тулзу и выбрать какую таблицу из БД нужно восстановить. Остальное делается автоматом, так как в каталоге архива содержится информация о том, в каком месте файла находится нужная вам таблица.
зачем мне вообще бэкап файлов сайта, когда есть версионник, в котором лежат исходники.
Но обычно так не делают, просто поднимают БД целиком поверх, чтобы сохранить целостность
я полностью в зависимости от вашей тулзы и вашей поддержки
А пользовательские данные у вас тоже в версионнике?
Целостность никуда не денется, если к примеру изменили текст какой-то статьи (неудачно). Видимо вы мало общались с блондинками заполняющими корпоративные сайты, они вам поднимут бэкап базы :)
К тому же ничего не мешает восстанавливать все связанные таблицы, но при этом не трогать не связанные, к примеру таблицу сессий, чтобы у пользователей авторизация не послетала.
из-за простого формата с разделителями табами
Пользовательские данные у меня в БД.
Бэкап базы должен поднимать администратор.
а хранением версий
Не надо хранить рантайм-данные
Вам никогда данные с табами не попадались?
Т.е. всякие там файлы, фотки, аватарки юзеры не заливают?
Т.е. всякие там файлы, фотки, аватарки юзеры не заливают?
Но в реальном мире, поднимать бэкап должна иметь возможность любая блондинка, которая открыла свой бложик в wordpress за 5 минут.
Если таковая есть на сайте, что далеко факт.
Ну то для примера, ладно еще пример, навернулась таблица со статьями, но с момента последнего бэкапа были добавлены штук 5 новостей в таблицу новостей. Будете поднимать старый дамп попутно затирая добавленные новости?
В то время как в случае с SQL файлом вам уже придется нехилый парсер подключать, так как ячейки разделены запятыми, которые в любых количествах могут быть в тексте, плюс нужно учитывать кавычки, и то что эти кавычки могут быть экранированными.
А что, их в БД хранить никак не возможно?
Зачем?
А должна быть. Не надо решать одну задачу инструментом от другой.
Да, потому что эти новости могли ссылаться на статьи, которые мы сейчас перезатрем.
Г-ди, а зачем SQL-файл-то для этого использовать?
Ну обычно не принято,
Что зачем? Зачем блондинке блог, или зачем ей возможность восстановить свой блог из бэкапа?
И что с того, если новости ссылались на статьи которые уже были в бэкапе?
Ну тут уже дело ваше, я же просто восстановлю таблицу со статьями, и новости останутся на месте.
А, дамп базы вы в каком виде храните? Не в SQL-файле?
Кем не принято?
фейсбуком как минимум
А если серьёзно, то гораздо проще работать с дампами весом в 100 метров, чем в 10 гиг (а с учётом хранения файлов в базе такие размеры имеют место быть).
Да и потом для обычного просмотра фоток каждый раз делать запрос к базе, не жирно ли?
А у Fb РСУБД?
Нет, при правильной организации — не жирно. Или у вас путь к файлу святым духом отдается?
я к тому, что если бы фейс хранил все файлы пользователей в базе, это был бы действительно ночной кошмар администраторов…
Делать лишний запрос к базе, который кстати сказать не такой уж и лёгкий, т.к. ему необходимо отдать всё тело файла. (При частом открытии одной сильно наполненной фотками странички, ddos на базу гарантирован. А в случае хранения файлов в файловой системе nginx кеширует и отдаёт файлы практически моментально и ничего более не требуется)
Файлы в БД хранятся тогда, когда есть нормальный апп-сервер. На котором никто не мешает сделать кэш.
В общем, это вечный спор. На одной стороне — целостность и удобство администрирования, на другой — быстродействие и прямолинейность разработки. Как всегда.
Как всегда.
вот скажите пожалуйста зачем делать кэш когда файлы итак есть?
я всегда наивно полагал, что быстродействие является самым важным фактором при разработке сайтов
как ни крути сайты делаются для пользователей, а не для администраторов
Вы вот какой онлайн-банкинг предпочтете, быстрый или безопасный?
А у Fb РСУБД?
dirs 53045
files 132904
full_size 6002.819
dup_size 2361.505
archive_size 2716.012
duplicates 114952
bigfiles 44403
bf_blocks 179124
bf_dup 73918
bf_size 4766.643
bf_dup_size 1866.851
time 1725.34368
dirs 2912
files 14214
full_size 203.521
dup_size 10.226
archive_size 124.562
duplicates 4204
bigfiles 880
bf_blocks 5259
bf_dup 247
bf_size 148.411
bf_dup_size 6.484
time 68.00453
dirs 241
files 911
full_size 7.222
dup_size 0.128
archive_size 9.422
duplicates 97
bigfiles 32
bf_blocks 87
bf_dup 0
bf_size 1.979
bf_dup_size 0
time 0.68338
Вы хотите сказать, что нет сайтов на которых пользовательские данные находятся не на отдельных серверах?
Тут вообще в первую речь о массовом решении, так сказать для домохозяек.
Я хочу сказать, что пользовательские данные должны быть полностью отделены от исполняемого кода
и так далее их не волнуют.
И какое отношение это имеет к бэкапу?
Не спорю, их так же не волнуют внутренности айфонов, но так, что теперь не обсуждать на специализированном сайте их внутренности и как писать программы для домохозяек для айфона?
Так какие проблемы выбрали какие каталоги бэкапить, какие-то нет, да и всё.
Чего это излишне наоборот, инкрементальные бэкапы и дедупликация для домохозяки значит «бэкап любимого гламурного бложика будет меньше места занимать», а вот детали технологий ей уже пофиг.
Насчет продолбал бэкап, не понял о чем речь.
Давайте не будем рассуждать что и куда должно быть встроено, а посмотрите на реальный мир, что встроено в wordpress, joomla, drupal, и т.п. в лучшем случае корявейшая бэкапилка базы.
Про отвечающего хостера, это в ту же степь про идеальный мир
Сделайте свое решение, которое будет встроено в WP, джумлу, друпал и так далее
Платите деньги, получайте SLA. И всё.
лежит. А если это что-то типа хостинга с предустановленным wordpress, то вполне сможет юзать. БД и файловую систему то поднимут админы, но вот их актуальность, может быть не очень.
Да я как бы давно определился, от начального и выше среднего.
Это не целевая аудитория.
Он сделал отличное решение для бекапа и восстановления всяких Wordpress-блогов, Joomla/modX и прочих сайтов на shared хостинге без ssh. Он не сделал решение для матерых админов, вроде вас.
Просто я разработчик, а не админ. И мне гораздо интереснее создавать новые вещи, а не, простите, трахаться с настройками бекапа, несмотря на то, что квалификация есть.
Потому что если сервак взорвется, то восстанавливать всю туеву хучу этих настроек придется на новом месте, потратив уйму времени.
Вот именно поэтому оставьте эту работу админам вашего хостинга.
В-третьих, админы хостинга делают бэкап можно сказать «в лоб», просто делая бэкап всего подряд, в то время как у разного софта есть данные бэкап которых абсолютно не нужен (поисковые результаты, кэш, сессии, и прочие временные данные).
Понимаете в плане бэкапов, лучше пусть их будет два, чем ни одного.
Во всяком случае за те годы, что я делаю дампер, жалоб на админов наслушался достаточно
А я наслушался жалоб на пользователей, которым дали возможность управлять системой
С таким же успехом копирование файлов можно назвать управлением системой.
Т.е. если какой-то «чайник» скопировал конфиг wordpress на локальный комп, а потом залил его обратно восстанавливая старые настройки, то он уже может себе скил продвинутого админа писать?
Еще раз напомню Apple Time Machine, это тоже только для продвинутых админов?
Во-первых, кому он должен?
А дальше уже зависит от уровня пользователя, кто не понимает зачем ему восстанавливать отдельный файл, просто не будет пользоваться такой возможностью.
Нормально написанный софт подходит широкому кругу пользователей.
hash_init, hash_update, hash_final, если результат потом нигде не используется?dirs 11620
files 21338
full_size 1967.178
dup_size 32.739
archive_size 16.141
duplicates 4457
bigfiles 9592
bf_blocks 66038
bf_dup 981
bf_size 1891.764
bf_dup_size 28.275
time 272.92845
$crc = hash('md5', $content, true);
if (!isset($this->catalog[$crc . $stat['size']])) { // Если нет такого блока, то сохраняем
## Первый тест
vos@ctfsu ~/t/sxbtest $ dd if=/dev/urandom of=testfile bs=10M count=1
vos@ctfsu ~/t/sxbtest $ ln -s testfile link
vos@ctfsu ~/t/sxbtest $ time php sxb_test.php
<source lang="php">
dirs 0
files 3
full_size 20.004
dup_size 10
archive_size 10.005
duplicates 320
bigfiles 2
bf_blocks 640
bf_dup 320
bf_size 20
bf_dup_size 10
time 0.6723
</source>
real 0m0.737s
user 0m0.628s
sys 0m0.104s
vos@ctfsu ~/t $ time rar a test.rar sxbtest
<...>
real 0m16.094s
user 0m15.481s
sys 0m0.400s
vos@ctfsu ~/t $ time zip -r test.zip sxbtest
<...>
real 0m1.069s
user 0m0.908s
sys 0m0.132s
vos@ctfsu ~/t $ time tar czvf test.tar.gz sxbtest
<...>
real 0m0.643s
user 0m0.492s
sys 0m0.120s
vos@ctfsu ~/t $ ls -la
-rw-r--r-- 1 vos vos 21027433 Jan 16 13:51 test.rar
-rw-r--r-- 1 vos vos 10490797 Jan 16 13:50 test.sxb
-rw-r--r-- 1 vos vos 10489462 Jan 16 13:51 test.tar.gz
-rw-r--r-- 1 vos vos 20976774 Jan 16 13:51 test.zip
# Можно заметить, что RAR и ZIP честно "сжали" оба файла - и реальный, и симлинк.
# SXB схавал симлинк благодаря дедупликации, а TAR - благодаря поддержке симлинков ;)
# При этом TAR сработал на 100 мсек быстрее, и архив получился чуть меньше
## Второй тест
root@zenyro /var/www/zenyro # du -s .
1015580 .
root@zenyro /var/www/zenyro # time php sxb_test.php
<source lang="php">
dirs 77
files 1038
full_size 987.905
dup_size 0.46
archive_size 935.769
duplicates 175
bigfiles 146
bf_blocks 31505
bf_dup 13
bf_size 982.087
bf_dup_size 0.385
time 114.39332
</source>
real 1m54.616s
user 1m6.716s
sys 0m3.700s
root@zenyro /var/www # time tar czvf test.tar.gz zenyro
<...>
real 1m4.614s
user 0m56.044s
sys 0m3.380s
root@zenyro /var/www # ls -la
-rw-r--r-- 1 root root 981224934 2013-01-16 13:57 test.sxb
-rw-r--r-- 1 root root 980944407 2013-01-16 13:59 test.tar.gz
# Снова TAR чуть меньше, и быстрее на 10 секунд
# Не говоря уже о том что его можно распаковать :)
Корректнее было бы сравнивать не с ZIP и RAR, а с TAR.GZ, ведь вы по сути его и придумали.
К тому же, я слабо представляю как вы собираетесь совместить некоторые фичи, например «Непрерывный архив» и «Наличие индекса + Быстрый случайный доступ к содержимому»
Но есть несколько нюансов, tar не считает попутно md5 хэши для файлов и блоков.
Что касается потоков в TAR, тут основная проблема в заголовках.
ls -lR * > .index; echo > .checksumm; for i in `cat index| awk '{print $9}'`; do md5sum $i >> .checksumm; done; tar cvf backup.tar *; zip backup.zip backup.tar .index .checksumm
dirs 333
files 552
full_size 9.322
dup_size 0.008
archive_size 0.538
duplicates 57
bigfiles 54
bf_blocks 258
bf_dup 0
bf_size 7.258
bf_dup_size 0
time 5.58459
applicationdirs 51368
files 94823
full_size 1968.667
dup_size 1210.483
archive_size 302.122
duplicates 95438
bigfiles 4817
bf_blocks 49942
bf_dup 34714
bf_size 1470.996
bf_dup_size 1027.673
time 143.4513
dirs 1762
files 9308
full_size 74.562
dup_size 11.541
archive_size 40.567
duplicates 3636
bigfiles 319
bf_blocks 1769
bf_dup 156
bf_size 49.66
bf_dup_size 4.204
time 38.93353
У меня куча вопросов про дедупликацию. Вы сами придумали идею дедупликации? А термин ваш? Где можно ещё почитать про эту дедупликацию?
Если верен второй вариант, то мне хочется узнать об этой дедупликации больше.
Какие ещё есть свободные архиваторы с поддержкой дедупликации?
Разрабатываем новый формат файла для бэкапа сайтов