15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai
08.10.2024

Cara Mengekstrak File .tar.gz Menggunakan Command Line Linux

File .tar.gz adalah arsip terkompresi yang dibuat dengan menggabungkan dua operasi berbeda: tar (Tape Archive), yang menggabungkan beberapa file dan direktori menjadi satu arsip, dan gzip, yang mengompresi arsip tersebut untuk mengurangi ukurannya. Hasilnya adalah format paket yang portabel dan hemat ruang, yang menjadi standar de facto untuk mendistribusikan perangkat lunak, bundel konfigurasi, dan backup sistem di hampir setiap lingkungan Linux dan Unix-like.

Perintah standar untuk mengekstrak arsip .tar.gz adalah `tar -xzvf archive-name.tar.gz`. Memahami apa yang dilakukan setiap flag — dan kapan harus menyimpang dari default ini — adalah yang membedakan sysadmin yang kompeten dari seseorang yang hanya menempelkan perintah secara membabi buta dari internet.

Memahami Format .tar.gz

Sebelum menjalankan perintah apa pun, ada baiknya memahami apa yang sebenarnya Anda hadapi. Format `.tar.gz` (juga ditulis sebagai `.tgz`) adalah proses dua tahap:

  1. `tar` mengumpulkan file, mempertahankan struktur direktori, izin, kepemilikan, dan tautan simbolis ke dalam satu file datar.
  2. `gzip` mengompresi file datar tersebut menggunakan algoritma DEFLATE, biasanya mencapai pengurangan ukuran 60–70% pada konten yang banyak teks.

Arsitektur dua tahap ini adalah alasan mengapa flag `-z` (gzip) dan `-x` (ekstrak) keduanya diperlukan. Tidak ada satu alat pun yang dapat menangani pekerjaan penuh sendirian. Pada sistem Linux modern, `tar` cukup cerdas untuk mendeteksi otomatis jenis kompresi melalui `–auto-compress` atau cukup dengan membaca magic bytes file, tetapi menggunakan flag secara eksplisit selalu merupakan praktik yang lebih aman dalam skrip dan pipeline otomasi.

Sintaks Inti dan Referensi Flag

“`bash

tar -xzvf archive-name.tar.gz

“`

FlagBentuk PanjangFungsi
—————–———-
`-x``–extract`Mengekstrak file dari arsip
`-z``–gzip`Memfilter arsip melalui dekompresi gzip
`-v``–verbose`Mencetak setiap nama file saat diproses
`-f``–file=ARCHIVE`Menentukan nama file arsip (harus langsung mendahului nama file)
`-C``–directory=DIR`Mengekstrak ke direktori target tertentu
`-t``–list`Menampilkan isi arsip tanpa mengekstrak
`-p``–preserve-permissions`Memulihkan izin file asli secara tepat
`–strip-components=N`Menghapus N komponen path terdepan dari nama file

Detail penting: Flag `-f` harus selalu menjadi flag terakhir sebelum nama file. Menulis `tar -xvzf` dan `tar -xzvf` keduanya valid, tetapi `tar -fxzv archive.tar.gz` akan gagal karena `-f` mengharapkan argumen berikutnya adalah path arsip.

Panduan Ekstraksi Langkah demi Langkah

1. Buka Terminal

Pada sebagian besar distribusi Linux desktop, tekan `Ctrl + Alt + T`. Pada server headless yang diakses melalui SSH, Anda sudah berada dalam sesi terminal.

2. Temukan Arsip Anda

“`bash

ls -lh /path/to/directory

“`

Konfirmasi bahwa file ada dan catat ukurannya. Flag `-h` menampilkan ukuran dalam format yang mudah dibaca manusia (KB, MB, GB).

3. Ekstrak di Tempat

Navigasikan ke direktori yang berisi arsip, lalu ekstrak:

“`bash

cd /path/to/directory

tar -xzvf archive-name.tar.gz

“`

File yang diekstrak akan muncul di direktori kerja saat ini, biasanya di dalam subdirektori yang mencerminkan struktur internal arsip.

4. Ekstrak ke Direktori Tertentu

Gunakan flag `-C` untuk mengarahkan output ke path target mana pun. Jika tujuan tidak ada, buat terlebih dahulu:

“`bash

mkdir -p /opt/myapp

tar -xzvf archive-name.tar.gz -C /opt/myapp

“`

Flag `-p` pada `mkdir` mencegah kesalahan jika direktori sudah ada — kebiasaan yang baik dalam skrip.

Contoh — men-deploy arsip aplikasi web:

“`bash

mkdir -p ~/deployments/webapp-v2

tar -xzvf webapp-v2.tar.gz -C ~/deployments/webapp-v2

“`

5. Ekstrak Tanpa Output Verbose

Dalam skrip otomatis, cron job, atau pipeline CI/CD, output verbose menciptakan kebisingan dalam log. Hapus flag `-v`:

“`bash

tar -xzf archive-name.tar.gz -C /opt/myapp

“`

Ini adalah bentuk yang disukai dalam otomasi produksi. Mode verbose berguna secara interaktif ketika Anda perlu mengonfirmasi file mana yang sedang ditulis.

Menampilkan Isi Arsip Tanpa Mengekstrak

Sebelum mengekstrak arsip yang tidak dikenal — terutama yang diunduh dari sumber eksternal — selalu periksa isinya terlebih dahulu. Beberapa arsip berisi file dengan path absolut atau tanpa direktori tingkat atas, yang dapat menyebarkan file ke seluruh filesystem Anda secara tak terduga.

“`bash

tar -tzvf archive-name.tar.gz

“`

Jika output menampilkan path yang dimulai dengan `/` atau `..`, ekstrak dengan hati-hati atau gunakan `–strip-components` untuk membersihkan path.

Untuk memeriksa wrapper direktori tingkat atas:

“`bash

tar -tzf archive-name.tar.gz | head -20

“`

Jika semua path berbagi awalan yang sama (misalnya, `myapp-1.0/`), ekstraksi bersih. Jika tidak, buat direktori khusus dan ekstrak ke dalamnya dengan `-C`.

Menangani Strip Components

Skenario dunia nyata yang umum: Anda mengunduh tarball sumber GitHub yang membungkus semuanya di dalam `project-main/`, tetapi Anda ingin kontennya langsung di `/opt/project/` tanpa lapisan nesting ekstra tersebut.

“`bash

tar -xzvf project-main.tar.gz -C /opt/project –strip-components=1

“`

`–strip-components=1` menghapus segmen path pertama dari setiap file yang diekstrak, secara efektif "membuka bungkus" direktori tingkat atas. Ini banyak digunakan dalam skrip deployment dan Dockerfile.

Mengekstrak Satu File atau Direktori dari Arsip

Anda tidak selalu perlu mengekstrak semuanya. Untuk mengambil file tertentu:

“`bash

tar -xzvf archive-name.tar.gz path/to/specific-file.conf

“`

Untuk mengekstrak direktori tertentu beserta seluruh isinya:

“`bash

tar -xzvf archive-name.tar.gz path/to/specific-directory/

“`

Path harus cocok persis dengan apa yang dilaporkan `tar -tzf`. Teknik ini sangat berharga saat memulihkan satu file konfigurasi dari arsip backup besar tanpa membongkar gigabyte data.

Mengekstrak File .tar Tanpa Kompresi gzip

File `.tar` biasa tidak memiliki lapisan kompresi. Hapus flag `-z` sepenuhnya:

“`bash

tar -xvf archive-name.tar

“`

Perbandingan: .tar.gz vs. Format Arsip Umum Lainnya

FormatEkstensiAlgoritma KompresiRasio KompresiKecepatanTar Diperlukan
——–———–———————–——————-——-————–
Gzip tarball`.tar.gz` / `.tgz`DEFLATE (gzip)SedangCepatYa
Bzip2 tarball`.tar.bz2`Burrows-Wheeler (bzip2)TinggiLambatYa
XZ tarball`.tar.xz`LZMA2 (xz)Sangat TinggiSangat LambatYa
Zstandard tarball`.tar.zst`ZstandardTinggiSangat CepatYa
Arsip ZIP`.zip`DEFLATESedangCepatTidak
Tar biasa`.tar`Tidak adaTidak adaTercepatYa

Wawasan utama: `.tar.xz` kini menjadi format yang disukai untuk paket distribusi Linux (sumber kernel, tarball sumber RPM/DEB) karena rasio kompresinya yang superior. Namun, `.tar.gz` tetap dominan untuk distribusi tujuan umum karena dukungan toolchain universal dan kecepatan ekstraksinya. `.tar.zst` (Zstandard) semakin populer di distribusi modern seperti Arch Linux karena keseimbangan luar biasa antara rasio kompresi dan kecepatan.

Untuk mengekstrak format alternatif ini, ganti `-z` dengan flag yang sesuai:

“`bash

tar -xjvf archive.tar.bz2 # bzip2

tar -xJvf archive.tar.xz # xz/lzma

tar -x –zstd -vf archive.tar.zst # zstandard (GNU tar 1.31+)

“`

Mempertahankan Izin File dan Kepemilikan

Saat mengekstrak arsip yang berisi file sistem, skrip, atau biner aplikasi, pelestarian izin sangat penting:

“`bash

tar -xzvpf archive-name.tar.gz

“`

Flag `-p` menginstruksikan tar untuk memulihkan izin asli. Tanpanya, umask pengguna saat ini diterapkan, yang dapat secara diam-diam merusak skrip yang dapat dieksekusi atau biner setuid.

Untuk mempertahankan kepemilikan (memerlukan root):

“`bash

sudo tar -xzvpf archive-name.tar.gz –same-owner

“`

Ini sangat penting saat memulihkan backup sistem atau men-deploy paket aplikasi yang bergantung pada kepemilikan pengguna/grup tertentu untuk batas keamanan.

Kesalahan Umum dan Cara Memperbaikinya

`tar: Error is not recoverable: exiting now`

Arsip rusak atau unduhan tidak lengkap. Verifikasi integritas file dengan `md5sum` atau `sha256sum` terhadap checksum yang dipublikasikan, lalu unduh ulang.

`tar: Skipping to next header` / `tar: Archive contains obsolescent base-64 headers`

Kerusakan parsial dalam arsip. Anda dapat mencoba ekstraksi parsial dengan `–ignore-zeros`, tetapi perlakukan output sebagai berpotensi tidak lengkap.

`gzip: stdin: not in gzip format`

File memiliki ekstensi `.tar.gz` tetapi sebenarnya tidak terkompresi gzip. Jalankan `file archive-name.tar.gz` untuk mengidentifikasi format sebenarnya. Mungkin berupa `.tar` biasa, `.zip`, atau file `.bz2` dengan ekstensi yang salah.

`Cannot open: No such file or directory`

Path salah atau nama file memiliki spasi. Beri tanda kutip pada nama file: `tar -xzvf "my archive.tar.gz"`.

Izin ditolak saat ekstraksi

Anda tidak memiliki akses tulis ke direktori target. Gunakan `sudo` atau ubah target dengan `-C` ke direktori yang Anda miliki.

Kasus Penggunaan Praktis pada VPS atau Server Dedicated

Pada lingkungan VPS Hosting, arsip `.tar.gz` sering muncul: men-deploy rilis aplikasi, memulihkan dump database, mentransfer bundel konfigurasi antar server, dan membongkar perangkat lunak yang dikompilasi dari sumber.

Alur kerja deployment tipikal pada server Linux:

“`bash

Download release archive

wget https://example.com/releases/myapp-2.1.0.tar.gz

Verify integrity

sha256sum myapp-2.1.0.tar.gz

Inspect contents before extracting

tar -tzf myapp-2.1.0.tar.gz | head -30

Extract to deployment directory

sudo mkdir -p /var/www/myapp

sudo tar -xzvpf myapp-2.1.0.tar.gz -C /var/www/myapp –strip-components=1

Set correct ownership

sudo chown -R www-data:www-data /var/www/myapp

“`

Pada Server Dedicated yang menangani backup skala besar, menggabungkan `tar` dengan pipe menghindari penulisan file perantara ke disk sepenuhnya:

“`bash

Create and stream a compressed archive directly over SSH to a remote server

tar -czvf – /var/www/html | ssh user@backup-server "cat > /backups/html-$(date +%F).tar.gz"

“`

Pola ini sangat efisien ketika ruang disk terbatas atau ketika kecepatan backup sangat penting.

Jika Anda mengelola lingkungan web hosting melalui control panel, alat seperti VPS dengan cPanel mengekspos operasi `.tar.gz` melalui antarmuka File Manager, tetapi perintah `tar` yang mendasarinya selalu tersedia di terminal untuk alur kerja berbasis skrip.

Saat menghosting aplikasi yang menyajikan file melalui HTTPS, memasangkan pipeline deployment Anda dengan SSL Certificates yang dikonfigurasi dengan benar memastikan bahwa aset aplikasi yang Anda ekstrak dan deploy disajikan dengan aman sejak permintaan pertama.

Untuk tim yang mengelola beberapa lingkungan, VPS Control Panels dapat menyederhanakan operasi backup dan restore terjadwal yang sangat bergantung pada arsip `.tar.gz`.

Referensi Cepat: Perintah tar yang Paling Sering Digunakan

“`bash

Extract .tar.gz to current directory

tar -xzvf archive.tar.gz

Extract to specific directory

tar -xzvf archive.tar.gz -C /target/dir

Extract silently (no verbose output)

tar -xzf archive.tar.gz -C /target/dir

List contents without extracting

tar -tzvf archive.tar.gz

Extract single file

tar -xzvf archive.tar.gz path/inside/archive/file.conf

Extract and strip top-level directory

tar -xzvf archive.tar.gz -C /target/dir –strip-components=1

Extract preserving permissions and ownership (as root)

sudo tar -xzvpf archive.tar.gz –same-owner

Extract .tar.bz2

tar -xjvf archive.tar.bz2

Extract .tar.xz

tar -xJvf archive.tar.xz

“`

Matriks Keputusan Teknis

SkenarioPerintah yang Direkomendasikan
———-———————
Ekstraksi interaktif, perlu melihat progres`tar -xzvf archive.tar.gz`
Skrip otomatis atau cron job`tar -xzf archive.tar.gz -C /target`
Struktur arsip tidak dikenal, periksa terlebih dahulu`tar -tzf archive.tar.gzhead -20`
Deploy ke direktori tanpa wrapper tingkat atas`tar -xzf archive.tar.gz -C /target –strip-components=1`
Pulihkan backup sistem dengan izin tepat`sudo tar -xzvpf archive.tar.gz –same-owner`
Pulihkan satu file dari arsip besar`tar -xzf archive.tar.gz path/to/file`
Verifikasi integritas arsip sebelum mengekstrak`tar -tzf archive.tar.gz > /dev/null && echo "OK"`

FAQ

Apa perbedaan antara .tar.gz dan .tgz?

Keduanya adalah format yang identik. `.tgz` hanyalah alias ekstensi tunggal yang dipersingkat untuk `.tar.gz`, digunakan ketika filesystem atau alat memiliki keterbatasan panjang ekstensi. Keduanya diekstrak dengan perintah `tar -xzvf` yang sama.

Mengapa `tar -xzvf` terkadang mengekstrak file ke direktori saat ini alih-alih subdirektori?

Ini terjadi ketika arsip dibuat tanpa wrapper direktori tingkat atas. Selalu jalankan `tar -tzf archive.tar.gz | head -20` sebelum mengekstrak. Jika path tidak berbagi awalan yang sama, buat direktori khusus dan gunakan `-C` untuk mengekstrak ke dalamnya, mencegah penyebaran file.

Bisakah saya mengekstrak file .tar.gz tanpa perintah tar?

Ya. Anda dapat mendekompresi lapisan gzip terlebih dahulu dengan `gunzip archive.tar.gz`, yang menghasilkan `archive.tar`, lalu ekstrak dengan `tar -xvf archive.tar`. Beberapa sistem juga mendukung `zcat archive.tar.gz | tar -xvf -` untuk menyalurkan dekompresi langsung ke tar. Namun, `tar -xzvf` dalam satu perintah selalu merupakan pendekatan yang paling efisien.

Apakah flag `-v` memperlambat ekstraksi pada arsip besar?

Sedikit, ya. Pada arsip yang berisi ratusan ribu file kecil, overhead pencetakan setiap nama file ke stdout dapat menambah waktu yang terukur. Dalam konteks yang sensitif terhadap performa atau otomatis, selalu hilangkan `-v`.

Bagaimana cara mengekstrak file .tar.gz sebagai pengguna berbeda tanpa berpindah akun?

Gunakan `sudo -u targetuser tar -xzvf archive.tar.gz -C /target/dir`. Ini menjalankan proses ekstraksi di bawah identitas pengguna target, memastikan file yang diekstrak dimiliki dengan benar tanpa memerlukan pergantian pengguna penuh melalui `su`.

15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai