Untar, ungz, gz, tar - bagaimana Anda mengingat semua opsi yang berguna?

76

Saya cukup yakin saya bukan satu-satunya dengan masalah berikut: setiap kali saya perlu mengompres file di * nix saya tidak dapat mengingat semua switch, dan akhirnya googling, yang mengherankan mengingat seberapa sering saya perlu melakukan hal ini.

Apakah Anda memiliki lembar contekan kompresi yang baik? Atau bagaimana dengan mnemonic untuk semua switch jahat di tar?

Saya membuat artikel ini sebagai wiki sehingga kita dapat membuat lembar contekan yang bagus di sini.

Oh, dan tentang halaman manual: apakah ada satu hal yang tidak membantu, itu untuk mencari tahu cara membuka kompresi file.

deadprogrammer
sumber
1
gunakan halaman manual, maka Anda tidak harus membuat wiki, dan hanya perlu mengingat perintah man :-) man (1)
Florenz Kley
9
eXtract Zee File adalah bagaimana saya mengingatnya
Canadian Luke
Buat Zee Vocking File mungkin tepat untuk membuat .tar.gz
CousinCocaine

Jawaban:

65

Atau bagaimana menggunakan shell dengan kemampuan penyelesaian tingkat lanjut (seperti zsh atau versi bash baru) yang akan melengkapi opsi untuk Anda, dengan bantuan komprehensif? :))

Mengenai tar: lihat saja keyboard "qwerty". Ada huruf "zxcvf" di sebelah satu sama lain. Anda memerlukan "tar czvf file.tar.gz file" atau "tar xzvf file.tar.gz".

Mahir
sumber
Alat peraga untuk benar-benar menjawab pertanyaan :)
Sekarang, itu adalah tip "qwerty" KEREN! :)
luar biasa!
deadprogrammer
2
Kiat lain adalah bahwa zopsi (atau jopsi untuk .bz2file) tidak diperlukan saat mengekstraksi dengan tar versi modern. Secara otomatis membuka file.
Nate
10
Saya telah menggunakan tar sekitar sepuluh miliar kali dan tidak pernah memperhatikan bahwa semua opsi yang paling umum digunakan tepat di sebelah satu sama lain pada keyboard. headsmack
Tyler McHenry
41

Ringkasan opsi tar

Anda dipersilakan untuk mengedit ini untuk menambahkan lebih banyak saklar esoteris tetapi inilah dasar-dasarnya:

  • x - ekstrak file
  • c - membuat arsip
  • t - daftar file
  • v - verbose (daftar file saat memprosesnya)
  • j - gunakan kompresi bz2
  • z - gunakan kompresi gz
  • f - baca atau tulis file ke disk

Contohnya

Membatalkan kompresi file tar.gz: tar zxf tarball.tar.gz

Hapus kompresi file tar.bz2: tar jxf tarball.tar.bz2

Buat file tar.gz: tar zcvf tarvall.tar.gz mydir / *

anon
sumber
23

Ada skrip Perl kecil yang disebut "unp".

unp filename.tar.gz

... dan itu mengekstrak segalanya. Bekerja dengan setiap file yang terkompresi selama Anda memiliki binari yang tepat. Dan Anda hanya lupa tentang sintaks atau semua omong kosong itu. Periksa repositori distribusi Linux Anda. Itu harus ada di sana (setidaknya di Arch, Debian dan Ubuntu).

Vicent Marti
sumber
Bahkan setelah menggunakan tar untuk waktu yang cukup lama saya masih perlu google untuk bendera bodoh. unp adalah cara untuk pergi.
Yada
8

Sungguh dengan penggunaan yang sering, saya membuat perbedaan antara mengekstraksi (x) data dan mengompresi (c) data:

Untuk mengekstrak:

tar xzf data.tgz

Untuk kompres:

tar czf data.tgz

Selanjutnya Anda dapat menambahkan dua fungsi juga .bashrc Anda:

function extract () {     
        if ($# -ne 1); then
                echo "Usage: $0  `<compressed archive>"`
                exit 1
        fi
        tar xzf $1
}

function compress () {
        if ($# -ne 2); then
                echo "Usage: $0 `<compressed archive> <files|directories>"`
                exit 1
        fi
        tar czf $1 $2
}

Ada fungsi ekstrak lain yang bagus, itu mendeteksi ekstensi file terkompresi Anda dan melakukan pekerjaan untuk Anda:

extract () {
   if [ -f $1 ] ; then
       case $1 in
           *.tar.bz2)   tar xvjf $1    ;;
           *.tar.gz)    tar xvzf $1    ;;
           *.bz2)       bunzip2 $1     ;;
           *.rar)       unrar x $1       ;;
           *.gz)        gunzip $1      ;;
           *.tar)       tar xvf $1     ;;
           *.tbz2)      tar xvjf $1    ;;
           *.tgz)       tar xvzf $1    ;;
           *.zip)       unzip $1       ;;
           *.Z)         uncompress $1  ;;
           *.7z)        7z x $1        ;;
           *)           echo "don't know how to extract '$1'..." ;;
       esac
   else
       echo "'$1' is not a valid file!"
   fi
 }
anon
sumber
5

Cukup ketikkan tar --helpdan inilah cheatsheet Anda.

Jeremy Ruten
sumber
12
Serius, pernahkah Anda mencoba membaca halaman manual itu?
deadprogrammer
Mungkin sedikit tidak terbaca dan panjang tapi saya pikir itu berfungsi dengan baik hanya dengan mencari nama opsi. Anda juga dapat memilih opsi yang Anda cari, yaitu 'tar --help | ekstrak grep '.
Jeremy Ruten
1
Bagus. Dan kemudian Anda harus mengarungi halaman manual yang (di antara hal-hal yang Anda cari) memberi tahu Anda banyak perintah streamer kuno dan opsi yang tidak perlu dilakukan oleh siapa pun kecuali yang dibutuhkan pengembang.
2
Saya benar-benar tidak melihat apa yang begitu sulit tentang hal itu. Untuk mengekstrak arsip, cukup temukan opsi ekstrak dan tambahkan -x ke perintah Anda. Jika Anda menginginkannya verbose, cari opsi itu dan tambahkan av untuk mendapatkan -xv. Kemudian lanjutkan sampai Anda mendapatkan perintah yang tepat yang Anda inginkan. Bahkan memiliki perintah contoh untuk operasi umum.
Jeremy Ruten
1
Jeremy, masalah sebenarnya adalah Anda mungkin tidak selalu tahu kosa kata yang tepat. Karena itu, mudah untuk bingung dan menemukan opsi serupa dan membuatnya tidak berfungsi. Kemudian, Anda harus menempatkan (beberapa) dari mereka dalam urutan yang benar. Ini tidak sepele untuk seseorang yang bermigrasi jauh dari Windows. Terlebih lagi jika mereka tidak tahu scripting di Windows.
Nazadus
3

Jika Anda kesulitan mengingat opsi tar, coba gunakan pipa:

  • zcat file.tar.gz | tar xvf -
  • bzcat file.tar.bz2 | tar xvf -

Ganti tar xvdengan tar tvuntuk hanya melihat konten tarball.

Secara pribadi, saya menggunakan mnemonik berikut:

  • t, x, atau c untuk masing-masing "tabulasi", "xtracting", atau "create".
  • v untuk daftar semua file.
  • z, j, atau tidak sama sekali untuk tar.gz, tar.bz2, atau polos .tar, masing-masing.
  • f untuk memberikan nama file, vs. standar menggunakan stdin / stdout atau perangkat pita.

Meskipun "j" dan "bzip2" tampaknya tidak ada hubungannya satu sama lain, saya merasa mudah untuk mengingat pengecualian ini.

Juga, saya merasa lucu bahwa Googling telah menggantikan "man tar".

Logan
sumber
Anda harus membiasakan diri untuk selalu memberikan fopsi: baru belakangan ini distribusi tar default menjadi f -, default historisnya f /dev/rmt0atau serupa. Bagaimanapun, tar adalah Tape ARchiver.
ephemient
1
apa tabulasi?
Claudiu
3

Manusia adalah temanmu.

man tar

madlep
sumber
2

Tiga Operasi Yang Paling Sering Digunakan :

--create -c

Buat arsip tar baru.

--list -t

Daftar isi arsip.

--extract -x

Ekstrak satu atau lebih anggota dari arsip.


Lima Operasi Operasi Lanjutan :

--append -r

Tambahkan entri baru ke arsip yang sudah ada.

--update -u

Tambahkan salinan terbaru dari anggota arsip ke bagian akhir arsip, jika ada.

--concatenate --catenate -A

Tambahkan satu atau lebih arsip yang sudah ada ke akhir arsip lain.

--delete

Hapus item dari arsip (tidak berfungsi pada kaset).

--compare --diff -d

Bandingkan anggota arsip dengan rekan-rekan mereka di sistem file.


Lazer
sumber
2

Saya selalu membaca perintah di pikiran saya, saat mengetik

kompres verbose file zip

tar cvzf FILE

ekstrak file zip verbose FILE

tar xvzf FILE
feeela
sumber
2

Saya melakukan hal berikut

Untuk membuat tar:

tar czvf foo.tar.gz <files to be included>

Untuk untar:

tar zxvf foo.tar.gz

Ini harus menjadi sakelar utama yang perlu Anda khawatirkan:

c - create
z - compress/uncompress
x - extracte
v - verbose
f - file

Anda dapat melakukan beberapa hal yang lebih menarik seperti tar dan untar inline saat Anda mencoba untuk memindahkan file di direktori seperti:

tar cf - <files to be copied> | (cd <target directory>; tar xvf - )
anon
sumber
1

90% dari waktu saya hanya digunakan

tar -xvf file.*  

x: ekstrak
v: menjadi verbose (opsional)
f: file input (tar, gz, bzip2, dll ...)

Mudah kan? :)
Gunakan Fileroller, atau Ark jika Anda tidak di konsol.

ramayac
sumber
Sampai sekarang, saya sudah menggunakan fileroller, tetapi saat ini saya kurang beruntung karena versi yang saya miliki menggunakan memori 1,1 Gb.
Andrew Grimm
1

Saya telah menggunakan skrip Perl yang disebut aunpack, bagian dari proyek atool , selama bertahun-tahun sekarang. Jadi, Anda jalankan saja: aunpack foo.{zip/tar.gz/tar.bz2}dan ia melakukan hal yang benar berdasarkan ekstensi file.

Manfaat lain aunpackadalah tidak akan mencemari direktori saat ini dengan banyak file. Katakanlah ada 20 file dalam foo.zipyang tidak ada dalam subdirektori. Alih-alih memuntahkan file-file ini di direktori saat ini, aunpackakan membuat foosubdirektori dan meletakkan semua file di sana.

Dave Dribin
sumber
1

Yang Anda butuhkan adalah tar x(ekstrak dari stdin), tar c(tar ke stdout), gzip -c(gzip dari stdin ke stdout; -1ke -9untuk tingkat kompresi; berlaku untuk bzip2) dan gunzip -c(gunzip dari stdin ke stdout) - semua yang lain adalah pipa.

Untuk tar dan gzip:

$ tar c * | gzip -c > out.tar.gz

Untuk un-gzip dan untar

$ gunzip -c < out.tar.gz | tar x

Jika Anda ingin bilah progres yang manis, gunakan pv yang mirip dengan kucing tetapi bilah bilah progres:

$ tar c * | bzip2 -c | pv > out.tar.gz
 22.6MiB 0:00:03 [3.64MiB/s] [  <=>                           ]
$ pv in.tar.gz | bunzip2 -c | tar x
   80MiB 0:00:00 [  58MiB/s] [===============================>] 100%
porty
sumber
0

Saya pikir mudah untuk memikirkan apa yang Anda inginkan dan bukan hanya beberapa surat.

Sebagai ilustrasi, saya akan menggunakan contoh cara mengekstrak file.tar.gz:

Karena ini adalah file tar, Anda harus menggunakan program tar. Maka itu opsi:

  1. x karena Anda ingin e x saluran.
  2. z jika file berakhir dengan .gz. (gz adalah setelah tar dalam nama file) Opsi ini gunzip arsip.
  3. f untuk file diikuti dengan nama arsip.

Ini ditunjukkan dalam contoh di bawah ini:

tar xzf file.tar.gz
Espen
sumber
0

Yang saya ingat adalah selalu "tar XXvf", di mana kedua Xs berada

  • x untuk e X tract atau c untuk C reate dan,
  • baik z = gzip, j = bzip2 (gzip lebih umum sehingga biasanya z, untuk alasan apa pun j = bzip2 hanya terjebak di kepalaku).

Kadang-kadang Anda mengalami file terkompresi tetapi tidak tar di mana Anda menambahkan un untuk apa pun jenis kompresi. mis. g un zip atau b un zip2.

Jika ada, saya lupa 2 dan kadang-kadang ketik "bzip".

mmacaulay
sumber
0

Anda juga dapat membuat alias. cukup tambahkan dua baris ini ke ~/.bash_aliasesfile Anda :

alias untar="tar xvf"
alias dotar="tar cvf"

Anda dapat menggunakannya untar foo.tar.gzuntuk mengekstrak dan dotar foo.barmengompres. Anda bisa menggunakan alias lain yang mudah Anda ingat.

foerno
sumber
0

C buat kembali Z ip ke F ilename

tar -czf myfile.tar.gz myfile.sql

e X traktat Z ip dengan F ilename

tar -xzf myfile.tar.gz
littledynamo
sumber