завихритесь к tar для архивирования не работы правильно

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

Команда я использую:

curl -L "someURL" | tar xOzf - | zip -qr > /home/username/filename.zip

дает мне zip-файл, который содержит названный файл -.

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

Возможно, я пропускаю что-то здесь...

0
задан 16 September 2014 в 18:58

1 ответ

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

Это распечатает извлеченные имена файлов с их полным путем в стандартном выводе, канал это для архивирования. Ваше задание будет сделано.

curl -L "http://someurl/some.tar.gz" | tar xvzf - | zip -qr /path/to/myfile.zip -@

Здесь список файлов указан как -@, zip берет список входных файлов от стандартного входа вместо из командной строки. Для знания больше о zip, посмотрите man zip

Содержание myfile.zip будет как указано ниже:

myfile.zip
└──some
    ├── file1
    ├── file2
    ├── file3
    └── folder
        ├── file4
        ├── file5
        ├── file6
        └── file7

Каждый регистрируют, и папки являются внутренней родительской папкой some который находится в корне zip.

Как к помещенному все файлы и папки в корне zip

Поскольку OP попросила иметь все файлы, чтобы быть в корне zip, в отличие от вышеупомянутого случая, где все те файлы и папки были в папке, которая была в корне zip.

Используйте следующее,

curl -L "http://someurl/some.tar.gz" | tar xvzf - --strip-components=1 && zip -qr /path/to/myfile.zip *

Это создаст содержание myfile.zpi как следующее:

myfile.zip
    ├── file1
    ├── file2
    ├── file3
    └── folder
        ├── file4
        ├── file5
        ├── file6
        └── file7

Опция --strip-components=1 с tar не извлекайте первый компонент архива т.е. родительской папки. Таким образом, все файлы и папки извлечены в текущей папке.

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

0
ответ дан 7 October 2019 в 02:38

Другие вопросы по тегам:

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