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:
- Ékstrak sadaya file tina tarball ka diréktori
- Ngalakukeun pilarian grep dina file sasari
- 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
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.
- Kumaha nyambungkeun switch nintendo ka wifi
- Kumaha carana nyingkahan scam roman online
- Kumaha cara nambihan Safari ka layar utama
- Kumaha carana kéngingkeun seueur réréncangan dina facebook
- Kumaha ngitung durasi beungkeut