Я пытаюсь создать zip-файл из нескольких файлов, но при распаковке zip-архива получается только 1 файл.
tar cfvz test.zip file1.mp3 file2.mp3 file3.jpg
И после того, как я извлек test.zip, я получаю только файл «test». Размер zip-архива в порядке, я просто не знаю, как заставить это работать так, чтобы при извлечении я получал те же файлы: «file1.mp3 file2.mp3 file3.jpg»
решение1
Мне это помогло:
$ tar -czvf test.tar.gz ./file1 ./file2 ...
$ tar -tzf test.tar.gz
./file1
./file2
# to extract do:
$ tar -xzf test.tar.gz
После передачи f
параметра необходимо указать имя файла создаваемого архива.
О, и в случае, если вы используете zip
для распаковки файла, вы не получите каталог, а вместо этого получите tarball. Tarball содержит все ваши файлы. Используйте:
tar -xf test
И вы должны увидеть все свои файлы.
Если вы хотите иметьнормальныйzip-файлы, используйте zip
команду вместо tar
/ gz
tandem. Также хорошей практикой является добавление правильного суффикса файла:
- tar с gzip (т.е.
tar czvf ...
): имя_файла.tar.gz - tar с bzip2 (т.е.
tar cjvf ...
): имя_файла.tar.bz2 - tar без сжатия (т.е.
tar cvf ...
): имя_файла.tar
решение2
Во-первых, даже если вы назвали свой сжатый файл .zip
, это не ZIP-файл, а файл TAR и GZIP, поэтому правильным расширением файла будет .tar.gz
или .tgz
.
Теперь, какую команду вы использовали для извлечения сжатого файла? Если вы использовали утилиту ZIP, она могла спутать расширение и только распаковать файл, не распаковав его. Это объяснило бы, почему результатом является один файл, который на самом деле является файлом TAR. Если вы используете утилиту untar (или команду tar -xf test
), вы должны получить обратно все ваши файлы изнутри.
решение3
Чтобы извлечь файлы, вам необходимо сделать следующее:
tar xvfz test.zip
и по умолчанию все файлы будут извлечены из пути относительно того, где вы находитесь, так что если test.zip содержал myfile.txt dir1/myfile.txt, оба файла будут извлечены из zip-архива