Назад | Перейти на главную страницу

wget и конвейер для tar в фоновом режиме

Я пытаюсь загрузить большой файл, .tar.gz и (> 2 ГБ) по размеру. Сценарий bash также выполняет множество других функций, поэтому я хочу начать загрузку, а затем продолжить обработку других команд в сценарии bash. Я использую wget и трубопровод к tar и запускаем его в фоновом режиме с помощью &.

wget -q "https://download-of-large-file-here.tar.gz" | tar xz &
# other commands here

Однако это нарушает:

gzip: stdin: unexpected end of file
tar: Child returned status 1
tar: Error is not recoverable: exiting now

Есть идеи, как это сделать?

Вам нужно будет проинструктировать wget чтобы написать в STDOUT, вы делаете это, передавая -O - в wget, иначе он сохранит файл на диск. tar не работает, потому что при выполнении он чего-то ожидает от STDIN.

Это должно работать:

wget -q -O - "https://download-of-large-file-here.tar.gz" | tar xz &

куда -q подавляет информацию о прогрессе по умолчанию из STDOUT и -O - устанавливает выходной файл в STDOUT.