Я пытаюсь загрузить большой файл, .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.