1. Tinjauan

Dina Linux, urang biasana ngabungkus sababaraha file kana hiji arsip nganggo paréntah tar . Salajengna, tar sareng pilihan -z ngamungkinkeun urang pikeun niiskeun arsip nganggo gzip pikeun ngahémat rohangan disk. Dina tutorial ieu, urang bakal diajar kumaha ngalakukeun grep dina arsip tar.gz pikeun milarian file mana anu ngandung pola anu pikaresepeun pikeun urang.

2. Bubuka Masalah

Sakumaha biasa, hayu urang ngartos masalah ku conto.

2.1. Contona

Anu mimiti, hayu urang tingali sababaraha file log dina diréktori log :

$ head logs/**/*.log ==> logs/app1/app.log <== 2022-01-20 15:21:10 application started 2022-01-20 17:07:14 [Warn] Security alert: 10 Permission Denied Requests from the same IP ... 2022-01-20 17:08:14 [Warn] High RAM usage: 90% 2022-01-20 17:14:10 RAM usage is back to normal ==> logs/app1/user.log <== 2022-01-20 19:22:10 user Kevin login 2022-01-20 20:21:10 user Kevin logout 2022-01-20 22:18:10 security alert: 10 times failed login from the same IP ==> logs/app2/app.log <== 2021-11-20 15:21:10 application started 2021-11-20 17:08:14 [Warn] High CPU usage: 80% 2021-11-20 17:14:10 CPU usage is back to normal ==> logs/app2/user.log <== 2021-11-20 19:21:10 user Eric login 2021-11-20 22:08:14 security alert: 10 times failed login from the same IP 2021-11-20 23:44:10 user Eric logout

Salaku kaluaran di luhur nunjukkeun, urang gaduh opat file log pikeun dua aplikasi – app1 sareng app2. Salajengna, hayu urang bungkus kana arsip nganggo paréntah tar sareng pariksa naha tarball anu diciptakeun ngandung sadaya file anu urang peryogikeun:

$ tar czf app_logs.tar.gz logs $ tar tzf app_logs.tar.gz logs/ logs/app2/ logs/app2/app.log logs/app2/user.log logs/app1/ logs/app1/app.log logs/app1/user.log

2.2. Masalahna

Ayeuna, anggap urang hoyong ngalakukeun pamilarian anu teu merhatikeun kasus dina tarball app_logs.tar.gz pikeun milari file log mana anu ngandung pesen ” gegeran kaamanan “. Kami ngarepkeun ningali tilu file dina hasil sareng éntri log anu cocog:

logs/app2/user.log:2021-11-20 22:08:14 security alert: 10 times failed login from the same IP logs/app1/app.log:2022-01-20 17:07:14 [Warn] Security alert: 10 Permission Denied Requests from the same IP ... logs/app1/user.log:2022-01-20 22:18:10 security alert: 10 times failed login from the same IP

Gagasan munggaran anu tiasa muncul pikeun ngarengsekeun masalah sigana mangrupikeun solusi tilu léngkah:

  1. Ékstrak sadaya file tina tarball ka diréktori
  2. Ngalakukeun pilarian grep dina file sasari
  3. Nyoplokkeun file sasari

Ieu tiasa cara paling lugas pikeun ngahontal tujuan. Conto urang ngan ukur opat file log leutik. Nanging, di dunya nyata, tarball tiasa ngandung sajumlah file anu signifikan. Ogé, file dina arsip tiasa langkung ageung tibatan conto urang. Ku alatan éta, tilu léngkah ieu tiasa ningkatkeun beban IO disk sacara drastis . Upami urang ngan ukur hoyong terang file mana anu ngandung pola anu dipasihkeun, ékstrak sadaya file kana disk henteu diperyogikeun sareng henteu cekap. Dina tutorial ieu, urang bakal ningali sababaraha cara anu langkung éfisién pikeun ngabéréskeun masalah dina hiji waktos.

3. Ngeunaan Komando zgrep

Lamun urang ningali sarat “neangan dina tarball gzipped”, loba urang bisa mikir hiji utiliti gunana disebut zgrep . Mémang, sakumaha ngaranna nunjukkeun, paréntah zgrep tiasa ngalakukeun grep dina file gzipped tanpa ékstrak sadaya file kana disk . Ogé, zgrep ngadukung kalolobaan pilihan grep sacara saé. Kahiji, hayu urang cobaan pikeun ngajawab masalah urang ngagunakeun zgrep :

$ zgrep -Hai 'security alert' app_logs.tar.gz  app_logs.tar.gz:2021-11-20 22:08:14 security alert: 10 times failed login from the same IP app_logs.tar.gz:2022-01-20 17:07:14 [Warn] Security alert: 10 Permission Denied Requests from the same IP ... app_logs.tar.gz:2022-01-20 22:18:10 security alert: 10 times failed login from the same IP

Kami parantos nganggo tilu pilihan grep dina paréntah di luhur:

  • -H : Kaluaran nami file pikeun tiap pertandingan
  • -a : Ngubaran file binér salaku file téks
  • -i : Malire bédana kasus nalika cocog pola

Sapertos kaluaran di luhur nunjukkeun, zgrep parantos suksés mendakan tilu kajadian ” kaamanan waspada “. Nanging, upami urang ningal langkung caket kana nami file dina kaluaran, urang ngan ukur ningali nami file tar.gz tibatan nami file log dina arsip . Salajengna, pikeun terang naha éta kajadian, urang kedah ngartos kumaha zgrep jalan. Kahiji, zgrep ngan skrip cangkang:

$ file $(which zgrep) /usr/bin/zgrep: POSIX shell script, ASCII text executable 

Éta hartosna urang tiasa maca sumberna pikeun ngartos kumaha jalanna. Kantun nempatkeun, zgrep ngagunakeun gzip pikeun decompress file ka Stdout sareng pipa ka grep pikeun ngalaksanakeun panéangan . Dasarna, éta sami sareng paréntah:

tar xzfO app_logs.tar.gz | grep -Hai 'security alert'

Di dieu, kami nganggo pilihan -O pikeun naroskeun paréntah tar pikeun nimba file kana Stdout tinimbang disk. Ku alatan éta, zgrep tiasa milarian eusi file dina arsip anu dikomprés, tapi éta henteu tiasa nyarios file mana anu aya dina arsip anu cocog . Maksudna, zgrep henteu cocog pikeun ngabéréskeun masalah urang.

4. Ngagunakeun tar kalawan Pilihan -to-command

4.1. Solusina

Sanajan zgrep teu bisa ngajawab masalah urang, urang geus diajar yén lamun urang nimba file ka Stdout, urang tiasa pipe ka grep langsung tur ngahindarkeun tambahan beban IO disk. Janten, masalah urang tiasa gampang direngsekeun upami aya cara pikeun nga-decompress file di jero tarball ka Stdout sareng ngajaga nami file aslina. Untungna, tar nyayogikeun pilihan -to-command = COMMAND . Pilihan ieu nyarioskeun tar pikeun nimba file ka Stdout sareng pipa ka COMMAND . Sumawona, COMMAND tiasa kéngingkeun inpormasi file di jero tarball ngalangkungan sakumpulan variabel lingkungan TAR_* , ​​contona:

  • TAR_FILENAME – Ngaran koropakna
  • TAR_SIZE – Ukuran file
  • TAR_FILETYPE – Jinis file, contona, naha éta file biasa, diréktori, atanapi tautan simbolis, sareng sajabana

Jelas, variabel TAR_FILENAME persis naon anu urang pilari. Di sisi anu sanés, paréntah grep ngagaduhan pilihan –label=LABEL pikeun nampilkeun LABEL salaku nami file . Ieu geulis mangpaat lamun urang grep on Stdin. Ku alatan éta, pikeun ngabéréskeun masalah, urang tiasa ngumpul paréntah sapertos tar … –to-command=’grep …’ sareng paskeun variabel TAR_FILENAME tar kana pilihan -label grep . Hayu urang cobian:

$ tar xzf app_logs.tar.gz --to-command='grep --label=$TAR_FILENAME -Hi "security alert";true' logs/app2/user.log:2021-11-20 22:08:14 security alert: 10 times failed login from the same IP logs/app1/app.log:2022-01-20 17:07:14 [Warn] Security alert: 10 Permission Denied Requests from the same IP ... logs/app1/user.log:2022-01-20 22:18:10 security alert: 10 times failed login from the same IP 

Éta hasil! Kami ngagaduhan hasil anu dipiharep.

4.2. Sababaraha Catetan

Kami parantos ngarengsekeun masalahna. Sanajan kitu, masih aya sababaraha titik minor nu patut mentioning. Anu kahiji nyaéta nambihan paréntah anu leres saatos paréntah grep . Nalika nganggo pilihan -to-command = COMMAND , paréntah tar bakal ngaluarkeun pesen kasalahan upami COMMAND ngabalikeun kode kasalahan (non-enol). Di sisi séjén, nalika grep geus kapanggih hiji patandingan dina input, paréntah grep mulih 0. Upami teu kitu, eta mulih 1. Janten, éta hartosna tar bakal ngubaran grep sadayana “henteu kapendak” kasus salaku kasalahan sareng kaluaran pesen kasalahan:

$ tar xzf app_logs.tar.gz --to-command='grep --label=$TAR_FILENAME -Hi "security alert"' tar: 207869: Child returned status 1 logs/app2/user.log:2021-11-20 22:08:14 security alert: 10 times failed login from the same IP logs/app1/app.log:2022-01-20 17:07:14 [Warn] Security alert: 10 Permission Denied Requests from the same IP ... logs/app1/user.log:2022-01-20 22:18:10 security alert: 10 times failed login from the same IP tar: Exiting with failure status due to previous errors 

Ieu messes up kaluaran, nu pasti moal naon urang hayang. Kituna, urang tambahkeun paréntah leres dina tungtungna sangkan COMMAND salawasna balik 0 sarta ngurangan pesen kasalahan maranéhanana. Titik anu sanés anu urang kedah perhatikeun nyaéta kami parantos ngabungkus COMMAND sareng tanda petik tunggal . Ieu kusabab variabel TAR_* ditugaskeun nalika palaksanaan tar sareng dikirimkeun ka COMMAND . Janten, contona, upami urang dua kali cutatan COMMAND , variabel $TAR_FILENAME bakal dilegaan ku cangkang nalika ngajukeun paréntah tar :

$ tar xzf app_logs.tar.gz --to-command="grep --label=$TAR_FILENAME -Hi 'security alert';true"  :2021-11-20 22:08:14 security alert: 10 times failed login from the same IP :2022-01-20 17:07:14 [Warn] Security alert: 10 Permission Denied Requests from the same IP ... :2022-01-20 22:18:10 security alert: 10 times failed login from the same IP 

Salaku tes di luhur nembongkeun, urang boga tilu filenames kosong dina kaluaran, salaku variabel cangkang $ TAR_FILENAME teu aya nalika urang ngamimitian paréntah tar . Ku alatan éta, urang kedah nganggo tanda petik tunggal pikeun nyegah ngembangna ngaran variabel nalika ngamimitian tar .

5. Kacindekan

Dina tulisan ieu, urang diajar kumaha milarian dina tarball anu dikomprés, tanpa ékstrak sadaya file kana disk, pikeun milarian file mana anu ngandung pola anu dipasihkeun. Kahiji, urang geus dibahas naha paréntah zgrep ilahar dipaké teu bisa ngajawab masalah urang. Lajeng, kami geus kajawab solusi ngagunakeun conto tar ‘s -to-command pilihan. Upami anjeun gaduh sababaraha taun pangalaman dina ékosistem Linux, sareng anjeun resep ngabagi pangalaman éta sareng komunitas, tingali Pedoman Kontribusi kami . Nalika damel sareng file arsip, sakapeung anjeun kedah daptar eusi file arsip tinimbang ékstrak file arsip. Ngagunakeun ieu anjeun tiasa ningali file sadia dina file arsip. Baca tutorial sejen kalawan 18 conto paréntah tar Linux

Daptar Eusi File Arsip (Paréntah Gancang)

The -t switch dipaké pikeun daptar eusi file tarball tanpa ekstrak. Di handap ieu paréntah gancang dipaké pikeun daptar .tar, .tar.gz, .tar.bz2 jeung .tar.xz eusi file.

tar -tvf archive.tar tar -ztvf archive.tar.gz tar -jtvf archive.tar.bz2 tar -Jtvf archive.tar.xz 

Daptar .tar Eusi File

Paké -t switch kalawan paréntah tar pikeun daptar eusi file archive.tar tanpa sabenerna extracting. Anjeun tiasa ningali yén kaluaran anu sami sareng hasil paréntah ls -l.

tar -tvf archive.tar 

[Kaluaran Sampel]

drwxr-xr-x root/root 0 2018-01-12 11:11 cadangan/ drwxr-xr-x root/root 0 2018-01-12 11:09 cadangan/data/ -rw-r----- root/root 1058 2018-01-12 11:09 cadangan/data/config.ini -rw-r--r-- root/root 29 2018-01-12 11:11 cadangan/.htaccess -rw-r----- root/root 442 2018-01-12 11:08 cadangan/access.log -rw-r--r-- root/root 7 2018-01-12 11:09 cadangan/index.html lrwxrwxrwx root/root 0 2018-01-12 11:11 cadangan/config -> data/config.ini 

Daptar .tar.gz Eusi File

Kami nganggo switch -z pikeun nanganan file .tar.gz sareng nganggo -t pikeun daptar eusi file arsip. Tempo conto di handap pikeun daptar eusi file archive.tar.gz tanpa extracting file.

tar -ztvf archive.tar.gz 

[Kaluaran Sampel]

drwxr-xr-x root/root 0 2018-01-12 11:11 html/ drwxr-xr-x root/root 0 2018-01-12 11:09 html/config/ -rw-r----- root/root 1058 2018-01-12 11:09 html/config/config.ini -rw-r--r-- root/root 29 2018-01-12 11:11 html/.htaccess -rw-r----- root/root 442488 2018-01-12 11:08 html/access.log -rw-r----- root/root 263636 2018-01-12 11:08 html/error.log -rw-r--r-- root/root 17 2018-01-12 11:09 html/index.html lrwxrwxrwx root/root 0 2018-01-12 11:11 html/config.ini -> config/config.ini 

Daptar .tar.bz2 Eusi File

Kami nganggo -j switch pikeun nanganan file tar.bz2 sareng nganggo -t pikeun daptar eusi file arsip. Tempo conto di handap pikeun daptar eusi file archive.tar.bz2 tanpa extracting file.

tar -jtvf archive.tar.bz2 

[Kaluaran Sampel]

drwxr-xr-x root/root 0 2018-01-12 11:11 www/ drwxr-xr-x root/root 0 2018-01-12 11:09 www/data/ -rw-r----- root/root 1994 2018-01-10 10:19 www/data/config.ini -rw-r--r-- root/root 29 2018-01-12 11:11 www/.htaccess -rw-r----- root/root 33442 2018-01-11 10:08 www/index.php lrwxrwxrwx root/root 0 2018-01-12 11:11 www/config -> data/config.ini 

Daptar .tar.xz Eusi File

Kami nganggo saklar -J (modal J) pikeun nanganan file tar.xz sareng nganggo -t pikeun daptar eusi file arsip. Tempo conto di handap pikeun daptar eusi file archive.tar.xz tanpa extracting file.

tar -Jtvf archive.tar.xz 

[Kaluaran Sampel]

drwxr-xr-x root/root 0 2018-01-12 11:11 www/ drwxr-xr-x root/root 0 2018-01-12 11:09 www/data/ -rw-r----- root/root 1994 2018-01-10 10:19 www/data/config.ini -rw-r--r-- root/root 29 2018-01-12 11:11 www/.htaccess -rw-r----- root/root 33442 2018-01-11 10:08 www/index.php lrwxrwxrwx root/root 0 2018-01-12 11:11 www/config -> data/config.ini 

Tar mangrupikeun utilitas anu seueur dianggo pikeun ngumpulkeun file sareng nyiptakeun arsip. Éta dirancang pikeun nyiptakeun arsip pikeun nyimpen data dina kasét, ku kituna disebut ” T ape AR chive.” Utilitas ieu mimiti dilebetkeun kana versi UNIX 7 taun 1979 sareng ayeuna sayogi dina sababaraha platform.
Tar mangrupikeun utilitas Linux anu kasohor sareng gaduh sababaraha fungsi sapertos nyiptakeun arsip, ékstrak, ékstrak kana diréktori khusus, nambihan langkung seueur file kana arsip anu tos aya, jsb. Terminal? Jawabanana Sumuhun! Utilitas multi-fitur ieu ogé ngamungkinkeun ningali eusi file anu diarsipkeun, khususna nalika damel di server sareng henteu aya alat grafis. Nempo eusi file tar ogé bisa jadi rada gunana lamun file anu cukup badag, jeung anjeun ngan hayang manggihan husus sarta nimba eta. Kami parantos ngabahas seueur fitur tina utilitas Tar. Pituduh ieu museurkeun kana fitur utilitas Tar anu kirang dikenal sareng ningalikeun atanapi daptar eusi file tar. Janten, hayu urang mimitian: Kumaha ningali eusi file tar
Anjeun kedah ningali eusi file tar sabab ngumpulkeun seueur file sareng mastikeun upami aya file khusus. Sintaksis paréntah pikeun ningali eusi file tar tanpa ékstrak éta disebatkeun di handap ieu: Alternatipna: $tar —list —file=[file_name.tar] dimana:

  • “-t”/ “–list” : Dipaké pikeun daptar eusi file tar
  • “-f” / “–file” : Maréntahkeun utilitas nganggo file anu disebatkeun dina argumen di handap ieu

Leuwih ti éta, anjeun tiasa nganggo “-v” bandéra atawa “-verbose” pilihan pikeun meunangkeun kaluaran standar lengkep. Hayu urang ngartos eta ku conto: Kalayan bendera verbose: $tar -tvf my_doc_file.tar Paréntah panjang bakal kieu: $tar —list —file=my_doc_file.tar Atawa: $tar —list —verbose —file=my_doc_file.tar Dina paréntah di luhur, Kuring keur nempo eusi a “my_doc_file.tar” file. Kumaha cara ningali eusi file tar.gz atanapi tgz
Sakumaha dipikanyaho yén file tar henteu ngompres file, éta ngan ukur ngumpulkeun. Pikeun niiskeun éta, urang peryogi utiliti anu sanés. Utilitas anu biasa dianggo pikeun ngompres file tar nyaéta “gzip.” Paréntah pikeun ningali eusi file “tar.gz” atanapi “tgz” disebatkeun di handap ieu: $tar -ztvf my_doc_file.tar.gz Paréntah panjang bakal kieu: $tar —gzip —list —verbose —file=my_doc_file.tar.gz Dimana pilihan “-z” sareng “–gzip” dianggo pikeun nanganan file “tgz” atanapi “tar.gz” . Kumaha ningali eusi file tar.bz, tar.bz2, tbz, atanapi tbz2
” tzip mangrupikeun utilitas sanés pikeun komprési file tar. Pikeun ningali eusi file nganggo ekstensi “tar.bz” , “tar.bz2” , “tbz” atanapi “tbz2” , tuturkeun paréntah di handap ieu: $tar -jtvf my_doc_file.tar.bz2 Sareng paréntah anu panjang nyaéta: $tar —bzip2 —list —verbose —file=my_doc_file.tar.bz2 Bandéra “-j” dianggo pikeun nanganan file “bzip” . Kumaha ningali eusi file tar.xz File
tar.xz” nyaéta file tar anu dikomprés nganggo algoritma “LZMA/LZMA2” . Pikeun ningali eusi file nganggo file “tar.xz” , paké: $tar -Jtvf my_doc_file.tar.xz Atawa $tar —xz —list —verbose —file=my_doc_file.tar.xz Pilihan “-J” sareng “–xz” dianggo pikeun nanganan file “tar.xz” .

kacindekan

Tar mangrupikeun utilitas Linux anu beunghar fitur anu ngamungkinkeun ningali eusi sababaraha file arsip tar tanpa ékstrak. Ngeunaan eusi file tar dina terminal tiasa ngabantosan dina seueur kaayaan. Dina pituduh ieu, urang ngajalajah kumaha ningali eusi file tar sareng file tar anu dikomprés dina terminal nganggo bandéra anu béda sareng paréntah panjang. Pikeun langkung seueur ngeunaan utilitas Tar, jalankeun “man tar” dina terminal.

Ngeunaan pangarang

Abdi desainer grafis profésional kalayan langkung ti 6 taun pangalaman. Ayeuna ngalakukeun panalungtikan dina kanyataanana maya, realitas augmented jeung realitas campuran.
Kuring boro nonton pilem tapi resep maca buku sareng artikel anu aya hubunganana sareng téknologi.


Leave a comment

Your email address will not be published. Required fields are marked *