Может ли архив файла сломать его?

85

Я просто попросил кого-нибудь прислать мне заархивированный psdфайл.

Они отказались, сославшись на то, что архивирование файла может сломать шрифты .

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

Есть ли правда о том, что архивирование содержимого его файлов может быть сжато?

Алекс
источник
51
Возможно, другой человек перепутал архивирование файла (без потерь) со сжатием jpeg (с потерями), которое может сделать тест выглядящим безобразно.
Мэтт Х
Я знаю, что у меня когда-то были проблемы с совместимостью для zip-файлов, потому что формат файла используется на всех платформах ...
jokoon
1
Я, конечно, сталкивался с некоторыми «патологическими» случаями, когда встроенные средства Winrar и WinXP ломали файлы (десятки тысяч в одном zip-файле). Это было 4-5 лет назад, и единственное решение, которое я смог найти, было использовать 7-zip. Насколько я помню, даже 7-Zip не мог успешно разархивировать файлы, созданные другими подпрограммами, предполагая, что ошибка была в заархивировании, а не в разархивировании. Очевидно, я все равно решил использовать 7-zip для обеих сторон в производственной системе.
FumbleFingers
1
@jokoon: я не уверен, что можно говорить о формате файла ... используется на всех платформах . Существует довольно много различных внутренних форматов, используемых в zip-файлах, и всегда возможно, что архив может быть создан одной подпрограммой упаковки, используя формат, который несовершенно поддерживается другой подпрограммой, которую вы используете во время распаковки.
FumbleFingers
@Шарить; Но, тем не менее, любой приличный архиватор должен отследить изменение хеш-функции и сообщить об операции как об ошибке, а не оставлять поврежденный файл без присмотра.
Фоши

Ответы:

133

Нет, архивирование файла не может его сломать. Если ваш zip-файл не поврежден, он будет воспроизводить идентичный файл в разархивированном виде.

В этом случае различие между шрифтами, установленными в двух разных системах, может вызвать проблемы, но это совершенно не связано с процессом zip / unzip.

Майк Фицпатрик
источник
4
Это то, что я подозревал. Спасибо за Ваш ответ.
Алекс
34
Кроме того, некоторые zip-форматы поддерживают избыточность, что означает, что хранение в виде zip- файла может быть более безопасным, чем сохранение простого файла.
BlueRaja - Дэнни Пфлугхофт
Вы не должны говорить «нет» так быстро, есть много реализаций архивирования / разархивирования файлов, считая все существующие ОС и другие вещи, которые могут создавать файлы ZIP, я не удивлюсь, что некоторые реализации просто не заботятся о других ,
jokoon
@jokoon: тогда эти файлы будут повреждены, что он явно исключает
mbx
3
-1 Теоретически это правда, но на практике существуют проблемы с распаковкой шрифтов Mac на ПК в виде 0 байтов. Это связано с созданием ветки ресурса. Попробуйте сами и посмотрите.
Джанго Рейнхардт
80

В общем случае zip без потерь (при условии реализации без ошибок), но есть один сценарий, который может применяться к потере данных: альтернативные потоки данных NTFS. Эта мало используемая функция позволяет одному файлу иметь несколько независимых наборов содержимого. Большая часть кода будет видеть только безымянный поток, но другие могут существовать.

Так; если программа решила сохранить данные в потоке альтернативных данных NTFS, ваш zip-клиент не увидит эту часть (ему нужно явно запросить ее, и RAR - единственный, кто делает это в настоящее время ).

Но чтобы подчеркнуть: это используется очень редко, и не обычно с такими вещами, как PSD. Я подозреваю, что ваш друг / партнер просто не прав.

Марк Гравелл
источник
11
Вау, это совершенно новое для меня знание.
kizzx2
5
Новое для меня и странное. Когда файл не файл? Когда его содержимое видоизменяется по желанию. Я слышал о худших поражениях, но не много.
Msw
7
@msw - они не видоизменяются по желанию; просто - может быть более одного куска данных, связанных с одной записью файла. Почти всегда есть ровно один (он очень редко используется), но ...
Марк Гравелл
4
Вернитесь к ТАК! Слишком технический! (шучу конечно;)
Байрон Уитлок
32

Существуют обстоятельства, при которых шрифт Mac может не совпадать, если он был разархивирован, а затем разархивирован. Это может не сломать его, но в отличие от некоторых утверждений выше, процесс может не предоставить идентичный файл.

Обстоятельства обсуждаются здесь:

http://xahlee.org/UnixResource_dir/macosx.html

http://ask.metafilter.com/59789/How-to-email-my-font

Но вкратце:

  1. Если они являются более старыми шрифтами, которые содержат разветвления ресурсов, и у пользователя есть более старая версия Mac OS X, обычно 10.4 или более ранняя. Устаревшие шрифты, подобные этой, работают в OS X, хотя изначально они предназначались для OS 9 и более ранних версий операционной системы Macintosh. Вполне вероятно (и, по моему опыту, часто), что некоторые люди все еще используют библиотеку шрифтов, которую они создали еще 20 лет назад. Обычно это художники и арт-директора. Например, у меня есть несколько шрифтов с датами создания 1993 года и сотни с датами создания 1998 года, большинство из которых содержат ресурсы. Конечно, я должен был преобразовать их в более современные форматы или прекратить их использование, но давайте посмотрим правде в глаза: как только вы покупаете библиотеку шрифтов Adobe, вы никогда не захотите покупать ее снова. В мои годы работаю с арт-директорами в сфере рекламы,

  2. Некоторые метаданные будут удалены в определенных версиях операционной системы. Метаданными могут быть вещи, добавленные в информационное поле файла. Это не сломает файл, но опять же, и при этом zip-unzip в обе стороны не создаст идентичный файл.

PS: здесь я предполагаю, что если кто-то архивирует PSD-файл для доставки другому человеку, то он не был расплющен и что шрифт не был преобразован в контур, что означает, что он также будет доставлять файлы шрифтов с PSD чтобы человек на принимающей стороне мог вносить свои изменения в файл. Это обычная практика.

Грант Барретт
источник
2
+1 - Я хотел бы дать этому достаточно очков, чтобы подтолкнуть его к вершине стека. В Mac OS есть варианты шрифтов Type 1 и TrueType, где данные шрифта хранятся в ветке ресурсов. Хотя нативные инструменты zip / unzip в ОС могут корректно справиться с этой ситуацией, не все инструменты (особенно инструменты командной строки, портированные на OS X) будут. Что еще хуже, не сжать шрифты и пытается отправить их по электронной почте или FTP будет разорвать их!
afrazier
1
Но проблема здесь заключается в том, как вы сжимаете их, а не можете ли вы. Кажется, нужна программа, которая понимает разветвления ресурсов, и вы должны знать, как ее использовать. Я читаю это правильно?
uSlackr
@uSlackr, верно, но проблема сохраняется на принимающей стороне. Если после этого архив перемещается в Windows, вы, вероятно, получите стек бесполезных файлов шрифтов, поскольку, хотя Windows (в частности, NTFS) допускает использование нескольких потоков данных в файле, шрифты в Windows не работают таким образом. Однако сам PSD-файл, вероятно, будет переносимым между Mac и Windows.
RBerteig
+1 - например, сохраните ваши шрифты Mac на сетевом диске, а затем посмотрите, насколько они велики на ПК с Windows или Linux - 0 байт! Это ресурсная ветка, которая путает идею «все работает».
ʍǝɥʇɐɯ
Да, в моей отрасли хорошо известен тот факт, что шрифты Mac не очень удобны. Часто пользователь ПК разархивирует им 0 байт.
Джанго Рейнхардт
14

ZIP использует контрольную сумму, чтобы проверить, является ли распакованный файл точно таким же, каким он был до упаковки.

Так что если бы он был изменен по какой-то причине (например, сломанный архив) - он даже не был бы распакован.

zerkms
источник
не имеет значения, поскольку zip использует сжатие без потерь (или «хранилище», сжатие может быть отключено). контрольная сумма должна быть в состоянии предоставить некоторую обратную связь, если что-то пошло не так.
Акира
13
Простите за педантизм, но ZIP не использует контрольную сумму - он использует 32-битную циклическую проверку избыточности (также известную как CRC-32 ), которая обнаруживает гораздо более широкий диапазон ошибок.
Беван
5
Термин «контрольная сумма» явно стал несколько более широким по смыслу, чем его первоначальное определение, если люди могут [и они действительно] называют результаты криптографических хеш-функций «контрольными суммами».
Random832
9

Только если они делают что-то глупое, например, преобразование текстового режима, или если где-то сломан zip / unzip, который запутывается встроенным zip. (Такие ошибки уже имели место в прошлом -. Означающего может быть , 10 лет назад)

geekosaur
источник
4

Zip использует алгоритм сжатия без потерь, чтобы гарантировать, что возвращаемые вами данные идентичны введенным вами данным.

(Кстати, другие технологии, такие как JPG, MPEG, MP3, используют методы с потерями, чтобы сжать с теорией, что наши глаза и уши не так чувствительны)

uSlackr
источник
0

Единственная истина, которую я видел в выражении «zipping breaks fonts», заключается в том, что сам формат файла PSD имеет «сжатую» версию или параметр, который можно включить в любой программе, создающей эти файлы, и этот параметр каким-то образом обрабатывает шрифты по-разному.

Использование любой zip-программы должно быть хорошо, за исключением случаев, когда она глючит.

В ответ на Марк, есть также потенциальные проблемы с файловой системой в файловых системах EXT, если вы попытаетесь сжать структуру каталогов, содержащую мягкие и жесткие ссылки в заархивированном формате, который не понимает их (именно поэтому я всегда делаю вместо этого .tar.gz .zip там). Кроме того, сжатие мягких ссылок с относительными путями, а затем разархивирование их в другое место, конечно, не сработает, но это не ошибка программы zip.

user81051
источник
0

Если у них была эта проблема раньше (архивирование PSD с повреждением), то либо программное обеспечение их компрессора неисправно, они не включают все файлы, которые им нужны на PSD, и / или их компьютеры заражены вирусом.

Я хотел бы спросить их, были ли у них подобные повреждения при перемещении файлов на USB-диски, просто чтобы отменить этот последний вариант.

egarcia
источник
0

Просто добавьте еще одно предостережение для полноты: сжатие может привести к потере метаданных файла, таких как разрешения или время последнего доступа.

Я не верю, что это вообще актуально для PSD файлов и шрифтов.

Oddthinking
источник
Я думаю, что существует неправильное понимание концепции алгоритма сжатия без потерь и программ, которые выполняют эту задачу. Без потерь означает, что сжатый двоичный поток будет распакован в идентичный выходной двоичный поток. Мета-информация зависит от ОС и должна обрабатываться ОС и / или приложением.
Бора
1
Спасибо, @Bora, но у меня нет такого недоразумения. Я понимаю, что архивирование не влияет на фактические данные в файле. Я предлагаю «внешнюю» причину, которая может заставить людей думать, что почтовый индекс повредил их файлы и каталоги. В прошлом я был пойман, восстанавливая заархивированные резервные копии, но обнаружил, что мои приложения больше не работают, потому что они зависят от метаданных, которые я не передавал. (Не основное недоразумение с моей стороны, а просто недосмотр.)
Нечетное мышление
0

Zip может испортить имена файлов. Zip как таковой не использует юникод. Кодировка имен файлов не указана, и в Windows используется текущая локаль.

Поэтому при переносе в другую систему ваши имена файлов будут испорчены.

Существует расширение формата Zip, которое используют самые последние программы (winzip начиная с версии 11, я думаю).

Я предпочитаю 7z, потому что у меня был почтовый ящик с японскими именами, который я не смог распаковать.

Кугель
источник
0

Предполагается, что почтовый файл может точно воспроизводить содержимое.

Одно связанное примечание, хотя - восстановить данные труднее, если файл ZIP поврежден , чем если бы данные были в исходном формате. Почему? Многие форматы файлов имеют избыточность и разработаны так, что либо незначительные ошибки исправимы, либо незначительные ошибки не являются критическими.

Представьте себе видео файл. В большинстве форматов, если небольшая часть будет повреждена, вы увидите временное мерцание в этой небольшой части видео, но все еще можете смотреть видео. Но если видеофайл заархивирован, возможности исправления ошибок уменьшаются, и в зависимости от степени повреждения вы просто не сможете разархивировать файл / посмотреть видео. (Это надуманный пример, поскольку в любом случае бесполезно архивировать большинство видеоформатов).

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

Танон
источник
Как сказано выше, некоторые форматы zip-файлов поддерживают избыточность. Это может сделать его даже более безопасным, чем оригинальный формат.
DMan