Arxivlar — tar, gzip, zip
Muammodan boshlaylik
Saytning uploads papkasini (12 000 ta rasm) boshqa serverga ko'chirish kerak. Yoki kunlik zaxira nusxa olish. Yoki GitHub dan node-v22.11.0-linux-x64.tar.xz ni yuklab oldingiz — endi uni qanday ochasiz?
Linux da arxiv bilan ishlashning asosiy vositasi — tar. U taniqli darajada "g'alati" bayroqlarga ega, lekin aslida faqat 3–4 ta shaklni bilish yetarli.
tar va gzip — ikki xil ish
- tar (tape archive) — ko'p fayl va papkani bitta faylga yig'adi. O'zi siqmaydi
- gzip, bzip2, xz, zstd — bitta faylni siqadi
Shuning uchun Linux arxivlari ko'pincha ikki kengaytmali:
| Kengaytma | Nima | tar bayrog'i |
|---|---|---|
.tar |
Faqat yig'ilgan, siqilmagan | — |
.tar.gz, .tgz |
gzip bilan siqilgan — eng keng tarqalgan | z |
.tar.bz2 |
bzip2 — kichikroq, sekinroq | j |
.tar.xz |
xz — eng kichik, eng sekin | J |
.tar.zst |
zstd — tez va yaxshi siqish | --zstd |
tar — 3 ta asosiy buyruq
Yaratish (c — create)
tar -czf zaxira.tar.gz papka/
- c — create (yaratish)
- z — gzip bilan siqish
- f — fayl nomi (keyingi argument)
Ochish (x — extract)
tar -xzf zaxira.tar.gz
tar -xzf zaxira.tar.gz -C /opt/ # boshqa papkaga
Ichini ko'rish (t — list)
tar -tzf zaxira.tar.gz
tar -tzf zaxira.tar.gz | head
Eslab qolish
c — create (yarat)
x — extract (och)
t — list (ko'r)
z — gzip
v — verbose (har bir faylni ko'rsat)
f — file (fayl nomi — DOIM OXIRIDA, chunki undan keyin nom keladi)
[!TIP] Zamonaviy
tarsiqish turini kengaytmadan o'zi aniqlaydi ochishda.tar -xf fayl.tar.xz—Jshart emas. Yaratishda esa siqishni ko'rsatish kerak, yoki-a:tar -caf arxiv.tar.xz papka/.
Amaliy misollar
# Loyihani node_modules siz arxivlash
tar -czf dokon.tar.gz --exclude=node_modules --exclude=.git dokon/
# Sana bilan zaxira
tar -czf "zaxira-$(date +%F).tar.gz" /var/www/dokon
# Faqat bitta faylni chiqarib olish
tar -xzf zaxira.tar.gz dokon/config.json
# Jarayonni ko'rish
tar -xzvf katta.tar.gz
# Yuklab olingan dasturni ochish
wget https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-x64.tar.xz
tar -xf node-v22.11.0-linux-x64.tar.xz
Absolyut yo'llar
tar -czf zaxira.tar.gz /var/www/dokon
tar: Removing leading '/' from member names
tar xavfsizlik uchun boshidagi / ni olib tashlaydi — ochganda fayllar var/www/dokon/ sifatida joriy papkaga chiqadi, /var/www ni ustidan yozmaydi. Arxivni papkaning ichidan yaratish toza natija beradi:
tar -czf zaxira.tar.gz -C /var/www dokon
-C /var/www — "avval shu papkaga o'tib, keyin dokon ni arxivla".
[!WARNING] Begona arxivni ochishdan oldin
tar -tzfbilan ichini ko'ring: ba'zi arxivlar fayllarni to'g'ridan-to'g'ri joriy papkaga "sochib" yuboradi (ichida bitta umumiy papka yo'q). Shubhali bo'lsa — alohida bo'sh papkada oching.
gzip — bitta faylni siqish
gzip katta.log # → katta.log.gz (asl fayl o'chadi!)
gzip -k katta.log # asl faylni saqlab
gunzip katta.log.gz # ochish
zcat katta.log.gz | less # ochmasdan o'qish
zgrep ERROR app.log.gz # ochmasdan qidirish (14-dars)
Matnli fayllar (loglar, SQL dump lar) gzip bilan 5–10 barobar kichrayadi:
mysqldump dokon | gzip > dokon.sql.gz # siqilgan zaxira
gunzip -c dokon.sql.gz | mysql dokon # tiklash
Rasmlar, videolar, allaqachon siqilgan fayllar (.jpg, .mp4, .zip) — deyarli kichraymaydi.
zip — Windows bilan almashish uchun
Windows foydalanuvchilariga yuborish uchun .zip qulayroq:
sudo apt install zip unzip
zip -r loyiha.zip loyiha/
zip -r loyiha.zip loyiha/ -x "*/node_modules/*"
unzip loyiha.zip
unzip loyiha.zip -d /opt/loyiha
unzip -l loyiha.zip # ichini ko'rish
| tar.gz | zip | |
|---|---|---|
| Linux ruxsatlari, havolalar | ✅ Saqlanadi | ❌ Qisman |
| Windows da ochish | Qo'shimcha dastur (yoki Windows 11) | ✅ Standart |
| Siqish | Butun arxiv birga — yaxshiroq | Har fayl alohida |
| Bitta faylni tez olish | Sekin | ✅ Tez |
| Linux da standart | ✅ |
Linux serverlar orasida — tar.gz. Odamlar bilan almashishda — zip.
Hajm va tezlik
ls -lh zaxira.tar.gz
du -sh papka/ # asl hajm bilan solishtirish
Katta arxivlar uchun zstd — gzip dan bir necha barobar tezroq, siqishi yaxshiroq:
tar --zstd -cf zaxira.tar.zst papka/
Nima uchun shunday?
Nima uchun Linux da yig'ish (tar) va siqish (gzip) — ikki alohida vosita?
UNIX falsafasi yana: har bir vosita bitta ishni yaxshi qiladi. tar faqat fayllarni oqimga aylantiradi (ruxsatlar, egalar, havolalar bilan); siqish esa istalgan algoritm bilan qilinishi mumkin — va yangi, yaxshiroq algoritm paydo bo'lsa (xz, zstd), tar ni o'zgartirmasdan ishlatiladi. Bundan tashqari, ular pipe bilan birlashadi: tar -c papka | ssh server "tar -x" — arxiv faylini yaratmasdan, papkani tarmoq orqali to'g'ridan-to'g'ri boshqa serverga ko'chiradi (35-dars). Yagona "hammasini qiladigan" format bunday moslashuvchanlikni bermaydi.
Xulosa
Eslab qoling:
tar -czf arxiv.tar.gz papka/— yaratishtar -xzf arxiv.tar.gz [-C manzil]— ochish (-xf— tur avtomatik)tar -tzf arxiv.tar.gz— ichini ko'rish--exclude=node_modules;-C— papkaga o'tib arxivlashgzip -k,gunzip,zcat,zgrep— bitta faylmysqldump | gzip > zaxira.sql.gzzip -r/unzip— Windows bilan almashish uchun- Begona arxivni ochishdan oldin —
tar -tzf
Keyingi bo'lim
7-bo'lim: Tarmoq — IP, DNS, portlar, curl, SSH va firewall.