У мене є великий тарбол, який зайнятий переходом FTP від віддаленої до нашої локальної системи.
Я хочу знати, чи можна запустити untarring, щоб сказати 50 файлів одночасно, щоб ці файли могли почати оброблятися під час передачі.
У мене є великий тарбол, який зайнятий переходом FTP від віддаленої до нашої локальної системи.
Я хочу знати, чи можна запустити untarring, щоб сказати 50 файлів одночасно, щоб ці файли могли почати оброблятися під час передачі.
Відповіді:
Ось детальне пояснення того, як можна витягти конкретні файли з архіву. Зокрема, гугл GNU може використовуватися для вилучення одного або декількох файлів із тарболу. Для вилучення конкретних членів архіву вкажіть їхні точні імена членів як аргументи.
Наприклад:
tar --extract --file={tarball.tar} {file}
Ви також можете витягти ті файли, які відповідають певному шаблону глобусу (символи підстановки). Наприклад, щоб витягти з cbz.tar всі файли, які починаються з pic, незалежно від їх префіксу каталогу, ви можете ввести:
tar -xf cbz.tar --wildcards --no-anchored 'pic*'
Щоб витягнути всі файли php, введіть:
tar -xf cbz.tar --wildcards --no-anchored '*.php'
Де,
-x
: доручає tar витягувати файли.
-f
: вказує ім'я файлу / тарбол.
-v
: Докладний (показує хід під час вилучення файлів).
-j
: фільтруйте архів через bzip2, використовуйте для розпакування файлів .bz2.
-z
: фільтрувати архів через gzip, використовувати для розпакування файлів .gz.
--wildcards
: доручає tar розглянути аргументи командного рядка як шаблони глобалізації.
--no-anchored
: повідомляє, що шаблони застосовуються до імен членів після будь-якого / роздільника.
-t
списку до повного завантаження тарболу. У будь-який момент часу у списку відображаються лише імена файлів, які були або передані, або передані, тобто. не повний список; до повного завантаження.
Я сам не пробував цього, але як щодо цього:
tar xvf archive.tar | head -n50
Тар видає рядок STDOUT для кожного вилученого файлу, тоді head
команда знищить трубу через 50 рядків. Після вмирання труби я би очікував, що дьоготь теж помре.
head
. Дозвольте мені змінити свою відповідь.
tar
побоююсь, що завдяки буфері труби може витягнути більше 50 файлів до того, як стане SIGPIPEd, і, зокрема, він може витягти останній, неповний файл.
tar -tvf tarfile.tar
дає вам весь список файлів у tarfile.tar
tar -xvf tarfile.tar fileToRestore
Ця команда відновлює fileToRestore
Для вилучення декількох файлів, але не всіх ви можете:
Ви вміщуєте весь список файлів tarfile.tar
уtar.txt
tar -tvf tarfile.tar > tar.txt
Тепер 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 ""
І це все