GZIP используется неправильно для архивирования нескольких файлов - PullRequest
0 голосов
/ 05 октября 2018

Я выполнил команду gzip (чтобы получить data.gz) для группы файлов, теперь, когда я запускаю gunzip, я получаю только один файл.Я понимаю, что я должен был использовать tar для сохранения структуры файла.Но можно ли теперь получить отдельные файлы?

В каталоге было два файла 1.sas7bdat, 2.sas7bdat.Я запустил:

$ gzip -c *.sas7bdat | ssh -l adsusername newserver.com 'cat > /home/username/data.gz'

Теперь, когда я запускаю:

gunzip data.gz

Я получаю только один файл, данные.Я хотел бы иметь 1.sas7bdat и 2.sas7bdat

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Если это буквально была команда, которую вы использовали, то у вас нет проблем.Однако не должно быть и файла data.gz, если он не был там.Произошла бы ошибка, если бы в этом каталоге уже существовал файл data.gz.Либо вы получите gzip: data.gz already has .gz suffix -- unchanged или gzip: data.gz: No such file or directory.

Имена в командной строке gzip индивидуально сжимаются и создают отдельных файлов, по одному для каждого файлав командной строке.Результатом gzip file1 file2 file3 являются файлы file1.gz, file2.gz и file3.gz.Все, что вам нужно сделать, чтобы восстановить эти файлы, это gunzip *.gz.

Обновление:

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

При использовании опции -c сжатые данные записывались в стандартный вывод, который объединял два входных файла перед сжатием.их.Таким образом, конечный результат после gunzip data.gz совпадает с cat *.sas7bdat > data.

Однако в файле data.gz два файла тайно разделены внутренне, хотя нет утилит для их извлечения по отдельности.Вы можете написать свою собственную программу, используя zlib , чтобы извлечь члена за раз и записать их в отдельные файлы.Функции inflateInit2, inflate, inflateEnd с соответствующими параметрами для выбора формата gzip извлекают только один элемент за раз.

0 голосов
/ 05 октября 2018

gzip сжимает файлы и не является структурой каталогов.

по умолчанию, gzip добавляет .gz в конце имени файла.

в вашем случае вы можете просто запустить 'gzip *'и у вас будет два отдельных файла .gz

для сжатия структуры, вы можете использовать опцию tar с z для непосредственного сжатия без передачи в gz.

...