Вероятно, имеет место, что это было удалено в последнем Debian, Сжимают ядро (который является, где проблема была), и это теперь возвратилось в 2.6.38. Я говорю, что, потому что это прокладывало себе путь, прежде чем Сжатие было выпущено (и я только использую нетронутые пакеты ядра Debian).
Вот подробное объяснение о том, как возможно извлечь определенные файлы из архива. Конкретно tar GNU может использоваться для извлечения сингла или большего количества файлов от tarball. Для извлечения определенных членов архива дайте их точные имена элемента как аргументы.
Например:
tar --extract --file={tarball.tar} {file}
Можно также извлечь те файлы, которые соответствуют определенному globbing шаблону (подстановочные знаки). Например, для извлечения из cbz.tar всех файлов, которые начинаются с рис., неважно, их префикс каталога, Вы могли ввести:
tar -xf cbz.tar --wildcards --no-anchored 'pic*'
Для извлечения всех php файлов войдите:
tar -xf cbz.tar --wildcards --no-anchored '*.php'
Где,
-x
: дает tar команду извлекать файлы.
-f
: указывает имя файла / tarball имя.
-v
: Подробный (показывают прогресс при извлечении файлов).
-j
: пропустите архив через bzip2, используйте для распаковки .bz2 файлов.
-z
: пропустите архив через gzip, используйте для распаковки .gz файлов.
--wildcards
: дает tar команду рассматривать параметры командной строки как globbing шаблоны.
--no-anchored
: сообщает этому, что шаблоны относятся к именам элемента после любого / разделитель.
Не попробовал это самостоятельно, но как насчет этого:
tar xvf archive.tar | head -n50
Tar производит строку к STDOUT для каждого извлеченного файла, затем head
команда уничтожит канал после 50 строк. После смерти канала я ожидал бы, что tar умрет также.
head
. Позвольте мне изменить свой ответ.
– jippie
04.07.2012, 00:36
tar
может извлечь больше чем 50 файлов, прежде чем это будет SIGPIPEd, и в особенности это может извлечь последний, неполный файл.
– Gilles 'SO- stop being evil'
04.07.2012, 01:18
tar -tvf tarfile.tar
дает вам полный список файлов в tarfile.tar
tar -xvf tarfile.tar fileToRestore
Эта команда восстанавливает fileToRestore
Чтобы распаковать несколько файлов, но не все, вы можете:
Вы помещаете весь список файлов из tarfile.tar
в tar.txt
tar -tvf tarfile.tar> tar. текст
Теперь tar.txt
содержит весь список файлов в tarfile.tar
и вы можете оставить только те файлы, которые хотите восстановить или с головой ...
head -n50 tar.txt> tar2.txt
Вы можете поместить эти строки в файл
cat tar.txt|while read line
do
tar -xvf tarfile.tar ${line}
done
Или полный файл сценария:
#!/bin/bash
if [[ "$1" = "" || "$2" = "" ]]
then
echo ""
echo "Uso: untar-list.sh tarfile.tar listfile.txt"
echo ""
exit 1
fi
tarfile=$1
file=$2
if [[ ! -f ${tarfile} ]]
then
echo ""
echo "Archivo ${tarfile} no existe"
echo ""
exit 1
fi
if [[ ! -f ${file} ]]
then
echo ""
echo "Archivo ${file} no existe"
echo ""
exit 1
fi
cat ${file}|while read line
do
tar -xvf ${tarfile} ${line}
done
echo ""
echo "Finalizado"
echo ""
И все
-t
список до tarball полностью загружается. В любом моменте времени список показывает только имена файлов, которые были или являются, переданы, т.е. не полный список; пока это полностью не загружается. – Peter.O 04.07.2012, 06:36