Нужен ли CRC для файлов в бэкапе

vovanium

Новичок
Делаю сейчас файловый бэкап типа дампера. Изначально планировал взять один из готовых контейнеров, первое, что приходит в голову это TAR и ZIP.
Вроде TAR общепринятый стандарт на unix, народ поголовно делает бэкап с его помощью. Но обратил внимание на такой нюанс, у TAR нет никакой контрольной суммы для файлов в архиве, в нем предусмотрена только контрольная сумма заголовка (которая еще и по дебильному считается, так как сначала место этой контрольной суммы в заголовке заполняется нулями, считается контрольная сумма заголовка, и вставляется обратно).
В общем склоняюсь в сторону ZIP, но там свои нюансы (сохранение прав доступа unix).

В общем, как считаете нужен или не нужен CRC файлов в бэкапе?
 

Breeze

goshogun
Команда форума
Партнер клуба
в tar-е не нужен, в пожатом архиве -- нужен
 

fixxxer

К.О.
Партнер клуба
Не думаю, что пермишены на дамп представляют какую-то ценность.

Другой вопрос, что unzip-а под рукой может не оказаться, а tar+gzip всегда есть
 

vovanium

Новичок
fixxxer
Тут как бы unzip не особо важен, системные команды юзаться не будут. И софтина будет в обе стороны процесс производить. В TAR еще не нравится то, что из него сложнее доставать нужный файл, по сути нужно разбирать весь бэкап. Так же в TAR не предусмотрена многотомность.

Склоняюсь к варианту zip (как контейнер) + а zip-файл пожат gzip. Это всё делается налету, PHP с такими файлами быстро работает, и сжатие лучше чем у обычного zip.
 

MiksIr

miksir@home:~$
С каких-то пор tar, предназначенный изначально для хранения бакапов на лентах, не поддерживает многотомность?
Не говоря уже, что есть банальный split.
А контрольные суммы можно отдельно строить - пара строк при вызове тара.
 

vovanium

Новичок
MiksIr
В самом формате TAR нет информация о номере тома и т.п. То что можно тупо порезать файл на куски, не означает поддержки многотомности, с таким же успехом любой файл может стать многотомным.
 

MiksIr

miksir@home:~$
Вам шашечки или ехать, я не понимаю? Чего именно не хватает? Нужно "т.п." или что бы работало?
 

vovanium

Новичок
MiksIr
Как ты представляешь себе выковыривание файлов из такого архива многотомного, если он еще и сжат gzip (или предлагаешь не сжимать бэкапы)? Сначала склеить потом распаковать найти нужный файл? У zip в каждом томе метаинформация, чтобы посмотреть содержимое не нужно читать весь файл, аналогично выковыривание файла значительно проще.
Попробуй ради интереса сжать ну к примеру каталог Zend Framework в TAR+GZIP и в ZIP, и потом открыть в WinRAR, TAR будет читаться весь, чтобы список файлов увидеть, в ZIP прочитается только метаинформация в конце файла и он откроется почти мгновенно.

Тут как бы не стоит задача сделать копию tar, а сделать удобный иструмент, для тех, кто предпочитает графический интерфейс, а не командную строку.
 

fixxxer

К.О.
Партнер клуба
gzip все универсальные (де)архиваторы тоже для отображения зипа распакуют целиком, мне кажется

а откуда в дампе куча файлов? по идее (если 1 файл-1 база), от солид арзива толку немного. А удивления от gzipped zip будет много у того кто захочет это открыть.

в общем я за зип
 

vovanium

Новичок
fixxxer
Речь о бэкапе файлов, а не БД, это новая софтина на базе дампера (ну точнее со схожим интерфейсом).
В данном случае речь именно о самом формате, в ZIP четко в конце есть список всех файлов со смещениями, достать его просто, мотаешь файл в конец, узнаешь размер этой служебной инфы, читаешь саму инфу. С TAR такой фокус не прокатит, так как чтобы узнать список файлов, нужно пройтись по всем заголовкам файлов, и каждый раз читать заголовок, в нем размер файла и смещаться к следующему заголовку. Ну в общем у TAR болячка связанная с его изначальным предназначением - бэкап на ленту, а там нет доступа к произвольным частям файла.
Что касается удивления от gzipped zip, да будет, но в данном случае, это просто для возможности открытия файла сторонним софтом (было вообще большое желание свой формат использовать), в штатном режиме софтина сама будет распаковывать файлы. В случае с использованием такого варианта конкретно в php, достигается значительно большая скорость и степень сжатия, чем при использовании классического zip, с отдельно сжатыми файлами.
 

fixxxer

К.О.
Партнер клуба
А, понял.
Тогда tar.gz конечно.
Бэкап всегда может понадобиться загрузить куда угодно. Включая "принес на флешке в датацентр, в комнатку куда выносят сервер без интернетов".
 

vovanium

Новичок
fixxxer
Зачем носить? Скрипт будет сам работать с удаленными серверами. Особого смысла делать полный аналог того что можно сделать таром, я не вижу. Тот кто носит данные на флэшке в дата-центр, врятли будет пользоваться решениями на php.
 

fixxxer

К.О.
Партнер клуба
Ну я себе как это представляю. Делает себе вебмастер бэкапы, делает. Потом вдруг внезапно сервер всё, надо ставить новый, он просит админа этим заняться, и вручает флэшку с бэкапом. А теперь подумай сколько минут этот админ будет тебя материть. :)

Если не рассматривать подобные ситуации - то вообще можно любой кастомный формат. Просто я если честно не вижу каки-то преимуществ, которые бы перевесили возможность открыть где угодно подручными средствами.

Короче, чем tar.gz то не устраивает? :)
 

MiksIr

miksir@home:~$
Если делать сторонний файл с хешами, то он же и будет листингом. Многотомность поддерживается таром, склеивать тома предварительно не обязательно. Зато у тара из коробки поддержка накопительных бакапов.
 

vovanium

Новичок
fixxxer
Ты рассматриваешь вариант только полного переноса сайта, а что делать если тебе нужно восстановить только часть из бэкапа? Да и в идеале я вижу процесс переноса так, залил софтину на хостинг, ввел логин/пароль от хранилища бэкапов, и софтина сама скачала и распаковала бэкап на новый хостинг. А если нужно, точно также можно восстановить только часть файлов. Кроме того будет же еще дифференциальный и инкрементальный бэкап, и прочие плюшки.
 

vovanium

Новичок
MiksIr
Ты немного путаешь возможности самого формата, и возможности утилиты tar.
 

vovanium

Новичок
Ну те же инкрементальные бэкапы делается с помощью дополнительного файла со списком файлов, так что причем тут формат TAR?
Да и сам по себе инкремент в tar как-то работает, как по мне, не очень, к примеру при изменении одного файла, в tar будет список всех каталогов и файлов, в случае с Zend Framework получается файл на 2,3 МБ, при том что по сути в нем содержится полезных данных аж 1 измененный файл на 11 КБ.
 

MiksIr

miksir@home:~$
Я к тому, что все-равно придется наворачивать что-то поверх, хоть тар, хоть зип.
 

vovanium

Новичок
MiksIr
Ну для инкремента и декремента в любом случае будет свой файл отдельный со списком. Хотя в случае с zip его можно было бы и не делать (там можно быстро список файлов прочитать), тут отдельный файл только для того чтобы сам файл бэкапа можно было не оставлять на том же сервере. Т.е. делается бэкап, шифруется AES'ом и сразу переливается на другой сервак.
 
Сверху