Perintah tar Linux: buat arsip, lihat isi, dan ekstrak berkas

Perintah tar menggabungkan beberapa berkas dan direktori menjadi satu arsip atau mengekstraknya kembali. Arsip .tar sendiri tidak berarti datanya dikompresi; tar dapat digabungkan dengan gzip, bzip2, atau xz untuk membuat arsip terkompresi.

Arsip menyimpan nama anggota dan struktur direktori. Pada GNU tar, gunakan -c untuk membuat, -t untuk melihat daftar, dan -x untuk mengekstrak; -f menentukan nama arsip. Periksa daftar anggota serta direktori tujuan sebelum mengekstrak agar lokasi hasil dapat diperkirakan.

Sintaks dan persiapan

tar [tindakan] [opsi] -f arsip [berkas atau direktori ...]

tindakan, opsi, dan nama jalur pada sintaks adalah penanda. Pilih satu tindakan utama dan letakkan nama arsip sebagai argumen -f. Contoh memakai GNU tar; periksa tar --version serta man tar karena implementasi dan opsi lokal dapat berbeda.

Siapkan direktori project/ berisi berkas yang akan dikemas, ruang untuk arsip, dan akses baca sumber. Jalankan contoh dari direktori induk project. Simpan project.tar.gz di luar project/ agar arsip keluaran tidak ikut berada di dalam direktori sumber yang sedang dikemas.

Untuk penggunaan -z, gzip harus tersedia pada lingkungan yang menjalankan tar. Pilih nama arsip baru atau pastikan arsip lama memang boleh diganti; operasi pembuatan bukan penambahan otomatis pada arsip lama.

Membuat arsip dengan kompresi gzip

tar -czf project.tar.gz project/

-c membuat arsip, -z menggunakan gzip, dan -f memilih project.tar.gz. Direktori project/ beserta berkas di dalamnya menjadi anggota arsip. Misalnya, project/notes.txt akan dicatat dengan jalur project/notes.txt, bukan hanya notes.txt.

Perintah biasanya tidak menampilkan daftar berkas karena tidak memakai -v. Periksa status keluar dan pesan galat sebelum melanjutkan. Berkas arsip yang sudah muncul belum membuktikan semua sumber berhasil dibaca; periksa juga apakah sumber berubah saat pembuatan berlangsung.

Melihat daftar sebelum mengekstrak

tar -tzf project.tar.gz

-t membaca daftar anggota project.tar.gz melalui gzip tanpa mengekstrak berkas ke direktori kerja. Hasilnya bergantung pada isi project ketika arsip dibuat. Cocokkan nama serta struktur direktori dengan yang Anda harapkan.

Daftar anggota membantu menentukan apakah ada satu direktori pembungkus seperti project/ atau banyak berkas yang akan langsung muncul di tujuan. Jika perlu melihat jenis anggota, ukuran, atau informasi lain, tambahkan -v pada tindakan daftar. Pemeriksaan daftar bukan pemindaian keamanan atau pembuktian bahwa isi berkas tepercaya.

Mengekstrak ke direktori tertentu

mkdir -p restore
tar -xzf project.tar.gz -C restore/

mkdir -p memastikan restore/ tersedia, tetapi tidak menjamin direktori itu kosong. Gunakan direktori percobaan baru atau periksa isinya terlebih dahulu agar tidak menimpa berkas yang sudah ada. Opsi -C mengarahkan ekstraksi ke restore/.

Karena contoh arsip menyimpan jalur project/, hasil berkas project/notes.txt akan berada pada restore/project/notes.txt. -C tidak membuang nama direktori yang tersimpan dalam arsip. Jika hasil berada satu tingkat lebih dalam daripada dugaan, bandingkan dengan daftar anggota sebelum mengubah opsi.

Sesudah ekstraksi, periksa berkas penting di tujuan dan bandingkan isinya dengan sumber yang benar. Jika memakai checksum, yaitu nilai ringkas isi berkas, gunakan metode yang sama untuk kedua sisi. Keberhasilan membaca daftar saja belum menguji seluruh proses pemulihan.

Contoh kecil tanpa kompresi

printf 'hello\n' > note.txt
tar -cf bundle.tar note.txt
tar -tf bundle.tar

Jalankan blok ini dalam direktori percobaan agar note.txt dan bundle.tar yang mungkin sudah ada tidak tertimpa. printf membuat berkas berisi hello diikuti baris baru, lalu tar membuat arsip dan menampilkan daftar anggotanya.

note.txt

Dalam contoh satu berkas ini, daftar menunjukkan note.txt. Isi berkas tidak ditampilkan oleh -t; yang terlihat adalah nama anggota arsip. bundle.tar tidak dikompresi karena perintah pembuatan tidak memilih kompresor.

Untuk memeriksa isi setelah pemulihan, ekstrak bundle.tar ke direktori kosong terpisah menggunakan tindakan -x dan tujuan -C seperti pola sebelumnya. Hasil yang diharapkan adalah note.txt dengan isi hello serta satu baris baru. Pertahankan berkas sumber selama pemeriksaan agar ada pembanding.

Opsi utama

Opsi Fungsi
-c / -t / -x Memilih tindakan membuat, menampilkan daftar, atau mengekstrak.
-f berkas Memilih arsip yang dibaca atau ditulis.
-z / -j / -J Menggunakan gzip, bzip2, atau xz sesuai pilihan.
-C direktori Mengubah direktori dasar untuk operasi berikutnya.
-v Menampilkan nama atau rincian anggota sesuai operasi.

Huruf besar dan kecil penting: -j dan -J memilih kompresor berbeda. Ekstensi yang mudah dikenali membantu pembaca, tetapi mengganti nama .tar menjadi .tar.gz tidak mengompresi datanya. Gunakan opsi yang sesuai dengan format sebenarnya dan kompresor yang tersedia.

Fungsi pengarsipan dan kompresi berbeda. tar menggabungkan banyak nama serta struktur, sedangkan gzip untuk kompresi data, panduan berbahasa Inggris mengompresi aliran data. tar -czf menggabungkan kedua fungsi dalam satu perintah.

Jalur anggota dan risiko penimpaan

Sebelum mengekstrak arsip yang tidak tepercaya, periksa jalur absolut, komponen .. menuju direktori induk, tautan simbolik, serta nama yang dapat bertabrakan dengan berkas tujuan. Pakai direktori kosong terpisah dan hak pengguna biasa, bukan langsung mengekstrak sebagai administrator ke sistem yang sedang dipakai.

Direktori kosong membantu memisahkan hasil, tetapi bukan kotak isolasi penuh untuk semua risiko isi arsip. Jangan mengaktifkan opsi yang melemahkan perlindungan jalur atau mengabaikan pesan galat hanya agar arsip dapat diekstrak.

tar -cf membuat ulang arsip dengan nama yang dipilih; isi lama dapat hilang dan tidak otomatis dipertahankan sebagai anggota tambahan. Begitu pula ekstraksi dapat berbenturan dengan nama berkas yang sudah ada. Gunakan arsip dan direktori pemulihan baru saat berlatih, lalu verifikasi sebelum memindahkan hasil ke lokasi kerja.

Untuk cadangan, tentukan pula kebutuhan metadata dan kemampuan sistem berkas tujuan. Dapat mengekstrak berkas belum berarti semua izin, kepemilikan, atau atribut khusus telah dipulihkan sesuai kebutuhan. Perilaku opsi dijelaskan pada manual GNU tar di man7.org.

FAQ

Apa perbedaan tar dan gzip?

tar menggabungkan berkas dan jalur menjadi arsip. gzip mengompresi aliran data. tar -czf membuat arsip yang dikompresi gzip.

Mengapa hasil ekstraksi berada di restore/project/?

Arsip contoh menyimpan direktori project/. Opsi -C restore/ memilih lokasi dasar ekstraksi sambil mempertahankan jalur anggota, sehingga berkas berada di bawah restore/project/.