Искате да извлечете един файл или папка от TAR или TAR.GZ архив? Ето как можете да направите това на Linux, като използвате командата tar.
Архив (TAR или TAR.GZ) е набор от файлове, групирани заедно като един архив, което улеснява съхраняването и прехвърлянето на голям брой файлове локално или по интернет. Когато имате нужда от файловете, можете просто да извлечете архива.
Помислете за сценарий, при който ви е необходим само един файл от голям архив. В такъв случай, вместо да извличате целия архив, можете да извлечете само файла, от който се нуждаете. Да видим как.
Вижте съдържанието на тарбол
Ако просто искате да видите съдържанието на файл TAR или TAR.GZ, не е необходимо да го извличате. Вместо това използвайте следната команда, за да видите какво има вътре:
tar -tvf [archive.tar]
tar -ztvf [archive.tar.gz]
Това ще отпечата списъка на всички файлове и директории в архива.
Извличане на един файл от tarball
За да извлечете един файл от TAR или TAR.GZ, използвайте следния команден формат:
tar -xvf [archive.tar] [път към файл]
tar -zxvf [archive.tar.gz] [път към файл]
Не забравяйте, че ще трябва да предоставите пълния път до файла, който искате да извлечете. Можете да намерите пълния път на файла или директорията, като използвате tar -tvf [archive.tar] команда.
За извличане на файл test1.txt от test.tar и test.tar.gz файлове, командите ще бъдат:
tar -xvf test.tar test1.txt
tar -zxvf test.tar.gz test1.txt
...където:
- -х се използва за извличане на файлове от архива
- -v се използва, за да видите напредъка, докато се извличат
- -f се използва за указване на името на tarball
- -z се използва за декомпресиране на файлове TAR.GZ
Тези команди ще извлекат посочения файл в текущата директория на терминала.
Извличане на единична директория от Tarball
По същия начин можете също да извлечете една директория от tarball, като използвате следния синтаксис:
tar xvf [archive.tar] [път към директория]
tar -zxvf [архив.tar.gz] [път към директория]
Например, за да извлечете цяло тест1 поддиректория от test.tar архив, ще трябва да предоставите пълния път на директорията, т.е. тест/тест1:
tar -xvf test.tar test/test1
Това ще извлече цялата поддиректория тест/тест1 в текущата директория на терминала.
Извличане на един файл или папка в друга директория
Можете също извличане на файл или директория от tarball към друга директория. За целта използвайте същия синтаксис като по-горе, но добавете -° С опция, последвана от целевата директория:
tar -xvf [архив.tar] -C [целева_директория] [файл-или-директория]
tar -zxvf [архив.tar.gz] -C [дестинационна_директория] [файл-или-директория]
Да кажем, че искаме да извлечем директория тест2 от test.tar архив към Изтегляния директория вместо настоящата работна директория. Командата в този случай ще бъде:
tar -xvf test.tar -C ~/Изтегляния/ тест/тест2
Изтриване на един файл или директория от тарбол
Ако трябва да изтриете един файл или директория от TAR или TAR.GZ файл, използвайте --Изтрий опция с командата tar:
tar -vf [archive.tar] --delete [файл-или-директория]
Въпреки това не можете да изтриете файл или директория директно от компресиран архив (TAR.GZ). Това, което трябва да направите, е първо да декомпресирате файла TAR.GZ, да изтриете файла или директорията и след това да го компресирате отново.
За да декомпресирате файла TAR.GZ, използвайте следната команда:
gzip -d [archive.tar.gz]
Декомпресирането му ще преобразува файла в TAR. Сега можете да изтриете файла от TAR архива, като използвате:
tar -vf [archive.tar] --delete [файл-или-директория]
След това компресирайте отново TAR файла с gzip:
gzip -f [archive.tar]
Спестете време, докато работите с архиви на Linux
Извличането само на необходимите файлове от архив не само предотвратява бъркотията, но и спестява време, което иначе би било изразходвано за търсене в голям брой файлове.
Понякога създаването и извличането на TAR файлове води до дублиране на файлове във вашата система. Затова е добра практика периодично да идентифицирате и премахвате тези дубликати, за да разчистите пространството си.