При архивировании файлов в OSX хотите 'разрешить' символьные ссылки

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

То, что я хочу сделать, сжать каждый демонстрационный каталог в a .zip файл, проблема, которую я имею, является символьными ссылками, сохраняются в zip-файле, и на другой машине просто не существовал бы каталог ресурса.

Существует ли способ архивировать демонстрационную папку с какими-либо символьными ссылками, разрешенными поэтому при разархивации файлы появляются, как будто они были частью стандартной файловой структуры?

Большое спасибо :-)

3
задан 16.12.2010, 01:20

3 ответа

Несколько вопросов: 1) структура папок Вы архивируете символьные ссылки использования внутренне, чтобы экономить на пространстве? ("Внутренне", я имею в виду, учитывая конкретную корневую папку, делаю символьные ссылки в той корневой папке только относятся к другим файлам или каталогам, которые являются также в той папке?).

2) Как Вы создаете архив .zip в OS X? (Используя инструмент командной строки, и если так, который, или при помощи Утилиты Архива, и т.д.)

3) Какая операционная система является целевым компьютером (где архив будет разархивирован), выполнение, и какой метод Вы используете для разархивации файла там?

В первую очередь, в OS X, символьные ссылки являются файлами в основном простого текста с некоторой дополнительной информацией "о Mac", которая позволяет OS X знать, что это должно рассматривать файл как символьную ссылку. Этой дополнительной информацией о Mac является специальный тип файла, код создателя и информация флага Finder, которая хранится не в самом файле, а в HFS + дисковый каталог.

В OS X при создании .zip файла нет никакой комнаты в потоке zip для этой дополнительной информации о Mac, таким образом, в некотором смысле символьная ссылка хранится в рамках zip-файла как простой файл. Может ли кто-то на другом Mac разархивировать архив и иметь его, правильно представляют исходную структуру, кажется, зависит от того, кто или что Вы используете для разархивации его.

Например, приблизительно один месяц назад компания, выпущенная игра закончена Пар, игровое программное обеспечение распределения Клапана. Пакет игрового приложения включал библиотеку Cg NVIDIA в форме платформы, которые внутренне используют символьные ссылки. Была первоначально проблема с Паром не правильно восстановление необходимой информации о Mac о Trine.app, как упомянуто в этом потоке: http://forums.steampowered.com/forums/showthread.php?t=1556083

Изображение ниже показывает 2 различных копии Cg.framework, один я установил отдельно с веб-сайта NVIDIA (верхнее изображение), и более низкие шоу изображения, что было получено с игрой:

alt text

Заметьте, что все объекты совпадают, но что должно быть символьными ссылками, простые файлы данных.

После более тщательно изучения записи FSCatalogInfo для обоих объекты мне было ясно, какова проблема была:

alt text

Вы заметите в верхнем изображении, что начало finderInfo структуры имеет следующие значения:

0x736C6E6B = 'slnk'
0x72686170 = 'rhap'

Эти значения определяются в/usr/include/hfs/hfs_format.h:

/*
 *  File type and creator for symbolic links
*/
enum {
    kSymLinkFileType  = 0x736C6E6B, /* 'slnk' */
    kSymLinkCreator   = 0x72686170  /* 'rhap' */
};

9-е значение байта, 0x80, соответствует kIsAlias флаг finderInfo.finderFlags. То значение определяется в/System/Library/Frameworks/CoreServices.framework/.../CarbonCore.framework/.../Headers/Finder.h:

enum {
    kIsAlias                      = 0x8000 /* Files only */
};

Кажется, что разархивировали функцию, встроенную к OS X (Утилита Архива) трудно кодируется для поиска возможных файлов в архиве, это разархивировано, которые представляют символьные ссылки, и установить информацию соответственно. Я верю этому /usr/bin/ditto (при использовании для его способности к архивным файлам) также заботится об этом для Вас. Я не уверен ли zip или unzip сделать.

6
ответ дан 07.12.2019, 22:52

Это - поведение по умолчанию для информационного ZIP zip. Необходимо передать -y или --symlinks для хранения символьных ссылок в архиве вместо этого.

5
ответ дан 07.12.2019, 22:52

Чтения справки zip:

- y хранят символьные ссылки как ссылку вместо файла, на который ссылаются,

3
ответ дан 07.12.2019, 22:52

Теги

Похожие вопросы