Я пытаюсь создать файл .tar в Cygwin:
find . > tmpfilelist
tar -cf tmp.tar -T tmpfilelist
но когда я открываю tmp.tar в Windows с 7-Zip, каждый файл имеет четыре экземпляра:
Name Size Link
.gitignore 62
.gitignore 0 path/to/.gitignore
.gitignore 0 path/to/.gitignore
.gitignore 0 path/to/.gitignore
и когда я извлекаю tar в свою папку, мне предлагается перезаписать каждый файл три раза. Кроме того, при просмотре свойств извлеченной папки в проводнике отображается размер 0 байт.
Можно ли создать в Cygwin файл .tar, который будет вести себя в Windows? Просто чтобы уточнить, я использую только файлы .gitignore в качестве примера; проблема, кажется, со всеми файлами.
Редактировать:
$ tar -tvf tmp.tar | grep -i "link to" | grep -i ".gitignore" | sort | head -n20
hrw-r--r-- user/None 0 2011-07-06 11:27 path/to/.gitignore link to path/to/.gitignore
hrw-r--r-- user/None 0 2011-07-06 11:27 path/to/.gitignore link to path/to/.gitignore
hrw-r--r-- user/None 0 2011-07-06 11:27 path/to/.gitignore link to path/to/.gitignore
hrw-r--r-- user/None 0 2011-09-29 15:40 path/to/other/.gitignore link to path/to/other/.gitignore
hrw-r--r-- user/None 0 2011-09-29 15:40 path/to/other/.gitignore link to path/to/other/.gitignore
hrw-r--r-- user/None 0 2011-09-29 15:40 path/to/other/.gitignore link to path/to/other/.gitignore
...
,
$ grep -i ".gitignore" tmpfilelist | sort | head -n20
path/to/.gitignore
path/to/other/.gitignore
...
tar
Cygwin в показывает тот же список, но tmpfilelist не появляется , чтобы эти дополнительные ссылки. Поэтому я думаю, что реальный вопрос в том, как сделать красиво сформированный tar-файл в Cygwin? Я не уверен, имеют ли они отношение или как применять параметры tar
- --dereference
и --hard-dereference
.
Редактировать: Насколько я знаю, 7z
не сохраняет структуры каталогов, когда предоставляется список файлов без указания корня, и нет общего корня для некоторых файлов в моем списке (список в конечном итоге будет агрегирован для нескольких выполнений find
).