У мене є великий тарбол, який зайнятий переходом 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 ""
І це все