Contoh Perintah 15 tar untuk Sysadmin dan Pengembang
Diterbitkan: 2021-09-21tar adalah salah satu format pengarsipan file populer yang tersedia di sistem berbasis Unix dan Linux.
Nama itu sendiri berasal dari T ape AR chive karena dikembangkan untuk menulis data sekuensial pada perangkat pita. Kadang-kadang juga disebut sebagai tarball.
Secara default, tar hanya mengarsipkan file tanpa kompresi tetapi menggunakan beberapa bagian. Kita dapat menggunakan teknik kompresi yang berbeda untuk mendapatkan output terkompresi. utilitas tar biasanya disertakan di sebagian besar distribusi Linux secara default, dan formatnya sendiri didukung di seluruh sistem operasi lain, termasuk Windows dan macOS, melalui alat dan utilitas yang berbeda.
Kami akan membahas beberapa contoh umum dan penggunaan perintah tar dan flag yang didukungnya di artikel ini.
Jadi mari kita mulai…
Buat Arsip tar
Untuk membuat arsip sederhana yang tidak terkompresi, sintaks untuk perintah tar adalah:
$ tar cvf <tar-file-name> <files-to-archive> Di sini flag c adalah singkatan dari creation, v untuk verbose output dan f untuk menentukan nama file arsip tar. Secara konvensi, tentukan nama file tar dengan ekstensi .tar . File yang akan diarsipkan dapat ditentukan dengan wildcard atau sebagai nama/jalur file tunggal atau ganda.
Sebagai contoh, saya memiliki tiga file di direktori saya:
$ ls -l total 12 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $ Dan saya ingin membuat arsip tar berisi ketiga file, itu bisa dilakukan sebagai:
$ tar cvf archive.tar * file1.txt file2.txt file3.txt $ ls -l archive.tar -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar $Saya hanya dapat menentukan file tertentu untuk diarsipkan juga, seperti:
$ tar cvf archive1.tar file1.txt file2.txt file1.txt file2.txt $ ls -l archive1.tar -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive1.tar $Buat Arsip Terkompresi (GZ)
tar tidak hanya memungkinkan pengarsipan file tetapi juga mengompresinya untuk menghemat ruang. Salah satu format kompresi yang populer adalah gunzip, biasanya diwakili oleh ekstensi .gz setelah .tar atau sebagai tgz . Kita dapat menggunakan z flag untuk menentukan bahwa kita memerlukan file yang akan dikompresi menggunakan gunzip. Berikut ini contohnya:
$ tar cvzf archive.tar.gz file* file1.txt file2.txt file3.txt $ ls -l archive.tar archive.tar.gz -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar -rw-r--r-- 1 abhisheknair abhisheknair 188 Sep 12 20:21 archive.tar.gz $ Anda dapat mengamati bahwa ukuran kedua file arsip secara substansial berbeda meskipun keduanya berisi tiga file yang sama. Hal ini disebabkan penggunaan kompresi menggunakan z flag.
Buat Arsip Terkompresi (BZ2)
tar mendukung beberapa format kompresi lainnya. Salah satunya adalah bz2 atau bzip2 yang diwakili oleh ekstensi tar.bz2 atau kadang-kadang sebagai tbz2 . Ini mungkin memberi Anda ukuran arsip yang lebih kecil tetapi pada gilirannya menghabiskan lebih banyak CPU, sehingga proses kompresi/dekompresi bisa lebih lambat daripada arsip gz .
Contoh:
$ tar cvjf archive.tar.bz2 file* file1.txt file2.txt file3.txt $ ls -l archive.tar archive.tar.gz archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 12 20:25 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 188 Sep 12 20:21 archive.tar.gz $ file archive.tar* archive.tar: POSIX tar archive (GNU) archive.tar.bz2: bzip2 compressed data, block size = 900k archive.tar.gz: gzip compressed data, from Unix, original size modulo 2^32 10240 $Buka Tar Semua File
Arsip tar (baik terkompresi atau tidak terkompresi) dapat diekstraksi hanya dengan menggunakan opsi x . Contoh di bawah ini akan memperjelas penggunaannya:
$ tar xvf archive.tar file1.txt file2.txt file3.txt $ ls -l total 24 -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 19 18:25 archive.tar -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $ Ini berfungsi untuk arsip terkompresi gz sebagai:
$ tar xvf archive.tar.gz file1.txt file2.txt file3.txt $ ls -l total 16 -rw-r--r-- 1 abhisheknair abhisheknair 188 Sep 19 18:27 archive.tar.gz -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $ Atau bahkan untuk arsip terkompresi bz2 sebagai:
$ tar xvf archive.tar.bz2 file1.txt file2.txt file3.txt $ ls -l total 16 -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $Daftar Isi tar
Untuk membuat daftar isi arsip tar, Anda dapat menggunakan tanda t seperti yang ditunjukkan di bawah ini:
$ tar tvf archive.tar.bz2 -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt $Untar File Tertentu
Hanya satu file yang dapat diekstraksi dari arsip tar atau tar.gz atau tar.bz2 dengan menentukan nama file sebagai:
$ tar xvf archive.tar.bz2 file1.txt file1.txt $ ls -l total 8 -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt $Demikian pula, Anda dapat menentukan beberapa nama file yang dipisahkan oleh spasi untuk mengekstraknya sekaligus.
$ tar xvf archive.tar.bz2 file1.txt file3.txt file1.txt file3.txt $ ls -l total 12 -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $Untar menggunakan Wildcard
Untuk mengekstrak satu atau lebih file menggunakan wildcard PATTERN , gunakan --wildcards flag:
$ tar xvf archive.tar.bz2 --wildcards "file*" file1.txt file2.txt file3.txt $ ls -l total 16 -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $Tambahkan File ke Arsip
File baru dapat ditambahkan/ditambahkan ke tarball terkompresi yang ada dengan menggunakan flag r atau --append dengan nama file baru atau pola wildcard (ingat ini hanya berfungsi dengan file .tar tidak terkompresi dan tidak dengan format terkompresi tar.gz atau tar.bz2 ):

$ tar rvf archive.tar file-new* file-new.txt file-new2.txt $ tar tvf archive.tar -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt -rw-r--r-- abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt -rw-r--r-- abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt -rw-r--r-- abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new.txt -rw-r--r-- abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new2.txt $ Anda dapat mengamati bahwa daftar isi dari archive.tar kembali menunjukkan dua file yang baru ditambahkan.
Hapus File dari Arsip
Menghapus file tertentu dari arsip tar dimungkinkan menggunakan --delete flag seperti yang ditunjukkan di bawah ini (bandingkan daftar tar sebelum dan sesudah penghapusan file):
$ tar tvf archive.tar -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt -rw-r--r-- abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt -rw-r--r-- abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt -rw-r--r-- abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new.txt -rw-r--r-- abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new2.txt $ tar --delete -f archive.tar file-new.txt file-new2.txt $ tar tvf archive.tar -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt -rw-r--r-- abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt -rw-r--r-- abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt $Sekali lagi ini hanya berfungsi untuk tarball yang tidak terkompresi dan akan gagal untuk format arsip terkompresi.
Buat dengan Verifikasi
Saat membuat file tar yang tidak terkompresi, Anda dapat memverifikasi konten arsip menggunakan flag W sebagai:
$ tar cvfW archive.tar file*.txt file1.txt file2.txt file3.txt Verify file1.txt Verify file2.txt Verify file3.txt $ Ini tidak dapat digunakan dengan tanda kompresi meskipun Anda dapat mengompresi file tar dibuat nanti menggunakan gzip atau alat lain.
Ekstrak tar ke Folder
Jika Anda ingin mengekstrak konten tarball Anda ke folder tertentu alih-alih direktori saat ini, gunakan flag -C dengan jalur direktori seperti yang ditunjukkan di bawah ini:
$ tar xvf archive.tar -C new-directory/ file1.txt file2.txt file3.txt file2.txt file4.txt $ ls -l new-directory/ total 16 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 15 Sep 19 18:59 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt -rw-r--r-- 1 abhisheknair abhisheknair 10 Sep 19 18:58 file4.txt $Gunakan Bendera yang berbeda
Anda dapat menggunakan --diff atau d flag untuk menemukan perubahan apa pun antara file di arsip tar dan file di sistem file. Berikut adalah contoh yang menjalankan diff sekali ketika file di dalam tar dan di luar sama. Setelah memperbarui file, itu dijalankan sekali lagi untuk menunjukkan perbedaan dalam output.
$ tar dvf archive.tar file4.txt file4.txt $ $ echo newline > file4.txt $ $ tar dvf archive.tar file4.txt file4.txt file4.txt: Mod time differs file4.txt: Size differs $Kecualikan File
Mengecualikan file tertentu dapat menjadi persyaratan saat membuat arsip tar. Ini dapat dicapai dengan --exclude flag.
$ tar --exclude="dir/file2.txt" --exclude="dir/file-new*.txt" -cvzf archive.tar.gz dir/ dir/ dir/file1.txt dir/file3.txt $ ls -l dir total 24 -rw-r--r-- 1 abhisheknair abhisheknair 9 Sep 19 19:10 file-new.txt -rw-r--r-- 1 abhisheknair abhisheknair 9 Sep 19 19:10 file-new2.txt -rw-r--r-- 1 abhisheknair abhisheknair 5 Sep 19 19:20 file-new3.txt -rw-r--r-- 1 abhisheknair abhisheknair 5 Sep 19 19:27 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 6 Sep 19 19:27 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 8 Sep 19 19:27 file3.txt $ tar tvf archive.tar.gz drwxr-xr-x abhisheknair/abhisheknair 0 2021-09-19 19:30 dir/ -rw-r--r-- abhisheknair/abhisheknair 5 2021-09-19 19:27 dir/file1.txt -rw-r--r-- abhisheknair/abhisheknair 8 2021-09-19 19:27 dir/file3.txt $ Seperti yang dapat Anda perhatikan dari output di atas, kita dapat menentukan flag --exclude beberapa kali untuk menentukan beberapa nama file atau pola dalam kondisi AND . Perhatikan bahwa dari enam file dalam dir pada contoh di atas, hanya dua file yang memenuhi syarat untuk dimasukkan ke dalam archive.at.gz .
Lihat Ukuran Konten tar
Kita bisa mendapatkan ukuran isi arsip tar terkompresi menggunakan perintah di bawah ini:
$ tar tvf archive.tar.gz -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt $ tar -xzf archive.tar.gz --to-stdout|wc -c 56 $ Demikian pula untuk arsip bz2 :
$ tar tvf archive.tar.bz2 -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt $ tar -xjf archive.tar.bz2 --to-stdout|wc -c 56 $Pertahankan Izin
Secara default, perintah tar mempertahankan izin file dan direktori yang diarsipkan meskipun Anda dapat secara eksplisit menentukan yang sama menggunakan flag -p atau --preserve-permissions seperti yang ditunjukkan di bawah ini:
$ tar cvpzf archive.tar.gz *.txt file1.txt file2.txt file3.txt $Ringkasan
tar adalah utilitas yang berguna pada sistem Unix/Linux untuk waktu yang lama dan terutama digunakan dalam tugas pengarsipan dan pencadangan. Utilitas telah berkembang dengan banyak pilihan dari waktu ke waktu. Ini dapat digunakan untuk tugas-tugas sederhana hingga kompleks, mengingat Anda mengetahui fitur-fitur yang ditawarkannya. Artikel ini membahas beberapa operasi dasar yang dapat Anda lakukan dengan perintah tar dan menunjukkan bagaimana hal itu dapat membantu Anda dalam tugas administrasi sistem harian Anda.
Lihat halaman man tar atau gunakan perintah tar --help atau tar --usage untuk mendapatkan detail lebih lanjut.
