2

Если у меня есть tar-файл bziped, разделенный на несколько DVD-дисков, каков наилучший способ извлечь его, не создавая много промежуточных файлов? Я не хочу сначала копировать все части архива на промежуточный диск.

пока лучшее, что я могу придумать, это

Терминал 1:

mkfifo temppipe1
mkfifo temppipe2
...
mkfifo temppipen
cat temppipe* | bunzip2 |tar -xvf -

терминал 2:

dd if=archive.tar.bz_part1 of=temppipe1
....
dd if=archive.tar.bz_partn of=temppipen

Это работает, позволяя мне менять DVD после каждого DVD, но кажется мне потенциально создающим много именованных каналов и потенциально подверженным ошибкам. Одна опечатка в терминале 2, и tar собирается выйти, не оставляя другого выбора, кроме как начать заново. Также важно создать достаточно имен каналов в начале

У кого-нибудь есть идеи получше?

1 ответ1

3

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

Терминал 1:

mkfifo temppipe
tar xvfj temppipe

терминал 2:

cat > temppipe

У нас не будет команды cat писать что-либо в канал, но его присутствие будет держать канал открытым, пока мы выполняем команды dd .

терминал 3:

dd if=archive.tar.bz_part1 of=temppipe # and so on

Затем вернитесь к терминалу 2 и нажмите Control-D. cat отправит окончательный конец файла, и tar завершит работу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .