Memahami perbedaan hard link dan symlink berbasis inode, menguasai tar, gzip, bzip2, xz, dan zip untuk pengarsipan serta kompresi, sampai menyusun rutinitas backup direktori sistem secara aman dan terverifikasi.

Setelah di episode 6 sebelumnya kita membahas text processing — grep, sort, awk, sed — pada episode kali ini kita akan membahas tiga topik yang berbeda tapi saling berkaitan dan sama pentingnya dalam operasional sehari-hari: symbolic links, pengarsipan (archiving), dan kompresi.
Kenapa topik ini penting? Bayangkan kalian perlu memindahkan konfigurasi yang dipakai dua aplikasi sekaligus, atau mengirim 5 GB log ke rekan kerja, atau membuat cadangan rutin direktori /etc. Tanpa memahami link, kalian akan menyalin file berulang-ulang dan mengubahnya di banyak tempat. Tanpa memahami tar dan kompresi, kalian akan menyimpan dan mentransfer data secara boros — dan lebih buruk, tanpa format yang tepat, arsip bisa korup atau salah struktur saat diekstrak.
Di episode ini kita akan membahas: pertama, hard link vs symlink beserta konsep inode; kedua, tar sebagai format arsip universal; ketiga, perbandingan gzip, bzip2, xz, dan zip; keempat, studi kasus backup /etc yang aman dan terverifikasi.
Sebelum membedakan link, kita harus paham konsep inode. Di Linux, setiap file sebenarnya adalah dua hal: data (isi file) dan metadata (inode — berisi ukuran, pemilik, permission, lokasi data, dan penghitung referensi). Nama file hanyalah entri di direktori yang menunjuk ke sebuah inode. Nama file bukan file itu sendiri — ia pintu masuk.
ln)Hard link adalah nama tambahan yang menunjuk ke inode yang sama. Dua nama, satu inode, satu data:
echo "isi dokumen" > dokumen.txt
ln dokumen.txt salinan.txt
ls -l dokumen.txt salinan.txtPerhatikan: keduanya punya nomor inode yang sama dan ukuran yang sama. Mengubah isi lewat salah satu nama akan terlihat dari nama lainnya, karena keduanya mengacu ke data yang sama. Hapus salah satunya? Data tetap hidup selama masih ada satu nama yang tersisa — penghitung referensi di inode menurun tapi tidak nol.
Batas penting hard link: tidak bisa menyeberang filesystem. Dua direktori berbeda di mount point yang sama boleh ber-link, tetapi /home dan /var yang terpasang sebagai filesystem terpisah — tidak bisa, karena inode bersifat lokal per-filesystem.
ln -s)Symbolic link (symlink) adalah file kecil yang berisi path ke file lain. Ia tidak menunjuk ke inode target, melainkan "menunjuk ke nama". Kalau targetnya dihapus, symlink menjadi rusak (broken) — tapi symlink-nya sendiri masih ada:
ln -s dokumen.txt tautan.txt
ls -l tautan.txt
cat tautan.txt
rm dokumen.txt
ls -l tautan.txtBaris ls -l menampilkan arah panah tautan.txt -> dokumen.txt — ciri khas symlink. Setelah dokumen.txt dihapus, tautan.txt menjadi link putus yang menunjuk ke file yang tidak ada.
| Aspek | Hard Link | Symlink |
|---|---|---|
| Menunjuk ke | Inode yang sama | Nama/path target |
Tampilan ls -l | Seperti file biasa | nama -> target |
| Bisa lintas filesystem | Tidak | Ya |
| Bisa ke direktori | Tidak | Ya |
| Saat target dihapus | Data tetap (nama lain hidup) | Link menjadi rusak |
| Ukuran ekstra | Tidak ada | Menyimpan string path |
Tip
Aturan praktis memilih: symlink untuk hampir semua kebutuhan — ia bisa menunjuk lintas filesystem, bisa menunjuk direktori, dan introspektif (jelas dari ls -l ke mana arahnya). Hard link hanya berguna saat kalian ingin beberapa nama mengacu ke data yang sama di filesystem yang sama, misalnya versi dari binary yang disimpan sekali. Symlink adalah pilihan default yang aman; hard link adalah alat khusus.
tar: Format Arsip Universaltar (tape archive) lahir dari era pita magnetik, tapi hari ini ia adalah format standar pengemasan banyak file menjadi satu. Kekuatan tar dibanding sekadar zip: ia tidak mengubah file aslinya (tanpa kompresi default), dan kompresi dipisahkan sebagai lapisan opsional. Mari bedah opsi inti lewat mnemonik czvf:
| Huruf | Opsi | Arti |
|---|---|---|
c | --create | Membuat arsip baru |
x | --extract | Mengekstrak arsip |
t | --list | Melihat daftar isi tanpa mengekstrak |
z | gzip | Kompresi dengan gzip |
v | --verbose | Tampilkan setiap file yang diproses |
f | --file | Tentukan nama file arsip |
tar -czvf backup-etc.tar.gz /etcBaris di atas membuat arsip backup-etc.tar.gz berisi seluruh /etc dengan kompresi gzip, sambil mencetak setiap file yang dikemas (v). Untuk mengekstrak:
tar -xzvf backup-etc.tar.gzUntuk memeriksa isi arsip tanpa mengekstrak — keterampilan yang menyelamatkan kalian dari menimpa file yang salah:
tar -tzvf backup-etc.tar.gzt menggantikan c atau x, dan menampilkan daftar file beserta metadata — persis ls -l, tapi di dalam arsip. Periksa selalu dengan tar -tzvf sebelum mengekstrak, terutama arsip dari sumber yang tidak sepenuhnya dipercaya.
Important
Perbedaan path absolut vs relatif sangat menentukan. tar -czvf backup.tar.gz /etc menyimpan entri dengan path etc/... (slash depan dibuang), sehingga saat diekstrak file masuk ke direktori kerja — aman. Namun tar -czvf backup.tar.gz /etc/passwd akan menyimpan etc/passwd dan mengekstraknya relatif juga. Hati-hati dengan arsip yang dibuat dengan -P (preserve path): mereka mengekstrak persis di lokasi absolut dan bisa menimpa file sistem. Selalu periksa isi dengan tar -tzvf sebelum mengekstrak arsip yang tidak dikenal.
tar hanya mengemasi file; kompresi adalah lapisan terpisah. Ada beberapa algoritma dengan trade-off yang berbeda — kecepatan vs rasio:
| Alat | Ekstensi | Kecepatan | Rasio | Kapan Dipakai |
|---|---|---|---|---|
gzip | .gz | Cepat | Sedang | Standar default, hampir di mana-mana |
bzip2 | .bz2 | Sedang | Lebih kecil | Arsip besar yang jarang diakses |
xz | .xz | Lambat | Paling kecil | Distribusi software, backup arsip jangka panjang |
zip | .zip | Cepat | Sedang | Interop dengan Windows / berbagi file |
Semua bisa dipakai langsung lewat tar dengan mengganti huruf: -czf (gzip), -cjf (bzip2), -cJf (xz). Sebagai gambaran kasar, mari bandingkan ukuran hasil kompresi file log yang sama:
-rw-r--r-- 1 dev dev 10485760 Agu 2 09:00 app.log
-rw-r--r-- 1 dev dev 1234567 Agu 2 09:01 app.log.gz
-rw-r--r-- 1 dev dev 1123456 Agu 2 09:01 app.log.bz2
-rw-r--r-- 1 dev dev 987654 Agu 2 09:01 app.log.xzFile asli ~10 MB mengecil menjadi ~1,2 MB dengan gzip, ~1,1 MB dengan bzip2, dan ~0,9 MB dengan xz. Perbedaannya nyata pada skala besar, tetapi ingat: waktu kompresi dan dekompresi juga harus diperhitungkan. Untuk log yang harus cepat dibuka berulang kali, gzip sering kali pilihan paling seimbang.
gzip app.log
bzip2 app.log
xz app.log
unzip backup.zipSetiap alat di atas menimpa file asli dengan versi terkompresinya (kecuali zip, yang mengemas banyak file dalam satu arsip). Pasangannya: gunzip, bunzip2, unxz untuk mengembalikan.
Note
Kompresi adalah proses lossless — isi file yang dikompres dan didekompres kembali identik. Ini berbeda dengan kompresi gambar/video (lossy) yang mengorbankan kualitas. Karena itu mengompresi log atau konfigurasi selalu aman untuk integritas data; yang hilang hanyalah ruang disk dan waktu CPU.
Membuat arsip tidak cukup; kalian harus yakin arsip itu utuh. Untuk arsip gzip, ada uji bawaan yang tidak mengekstrak isinya:
gzip -t backup-etc.tar.gzgzip -t (test) memeriksa struktur file terkompresi dan menandai korupsi tanpa mengeluarkan isinya. Lengkapi dengan du untuk memastikan ukuran backup masuk akal:
du -sh /etc
du -sh /backup/etc-20260802-0930.tar.gzMembandingkan dua angka ini memberi gambaran rasio kompresi — sekaligus sinyal awal masalah: backup yang jauh lebih kecil dari perkiraan bisa berarti banyak file gagal terbaca, sementara yang tidak mengecil sama sekali menandakan data yang sudah terkompresi (seperti database binary) atau kesalahan metode.
Selain itu, gzip mendukung tingkat kompresi dengan trade-off kecepatan yang jelas:
| Opsi gzip | Efek |
|---|---|
-1 (fast) | Kompresi tercepat, hasil paling besar |
-6 (default) | Keseimbangan kecepatan dan ukuran |
-9 (best) | Hasil paling kecil, paling lambat |
-k (keep) | Pertahankan file asli setelah kompresi |
-t (test) | Uji integritas tanpa mengekstrak |
Tip
Pilih tingkat kompresi sesuai siklus hidup arsip, bukan sekadar ukuran akhir. Backup rutin yang dibuat tiap malam sebaiknya gzip default atau -1 agar cepat selesai; arsip distribusi yang disimpan jangka panjang layak dibayar dengan waktu xz yang lambat demi ukuran terkecil. Ingat: waktu juga biaya — dan arsip yang gagal selesai tepat waktu lebih mahal daripada beberapa ratus MB tambahan.
/etc yang AmanMari rangkai semuanya dalam skenario yang pasti kalian hadapi: backup rutin /etc — direktori yang berisi semua konfigurasi sistem. Bencana konfigurasi (file terhapus, salah edit, rusak) terjadi cepat; backup yang baik menyelamatkan kalian dari mengulang berjam-jam konfigurasi manual.
Langkah 1 — buat arsip dengan timestamp agar setiap backup unik:
tar -czvf /backup/etc-$(date +%Y%m%d-%H%M).tar.gz /etc$(date +%Y%m%d-%H%M) menghasilkan string seperti 20260802-0930, sehingga nama file selalu unik per waktu eksekusi.
Langkah 2 — verifikasi arsip setelah dibuat. Backup yang tidak bisa diverifikasi bukan backup — ia cuma asumsi:
tar -tzvf /backup/etc-20260802-0930.tar.gz | head -5drwxr-xr-x root/root 0 2026-08-02 09:30 etc/
-rw-r--r-- root/root 512 2026-08-02 09:30 etc/hostname
-rw-r--r-- root/root 1024 2026-08-02 09:30 etc/hosts
-rw-r--r-- root/root 3320 2026-08-02 09:30 etc/passwd
-rw-r--r-- root/root 1256 2026-08-02 09:30 etc/groupLangkah 3 — untuk memulihkan, ekstrak ke direktori sementara terlebih dahulu, lalu salin yang perlu — jangan mengekstrak langsung menimpa /etc:
mkdir -p /restore && tar -xzvf /backup/etc-20260802-0930.tar.gz -C /restoreOpsi -C (change directory) mengekstrak ke /restore sehingga muncul sebagai /restore/etc/.... Dari sana kalian bisa membandingkan dan memilih file mana yang benar-benar perlu dipulihkan — jauh lebih aman daripada menimpa konfigurasi yang sedang berjalan.
Caution
Ingat dua jebakan tar yang sering menimpa pengguna baru: (1) arsip yang dibuat dengan path absolut (tar -czf a.tar.gz /etc/passwd) menyimpan entri etc/passwd, bukan passwd — pastikan kalian tahu ke mana isinya akan diekstrak; (2) symlink di dalam arsip tetap diekstrak sebagai symlink, dan jika targetnya tidak ikut diarsip, hasil ekstraknya berupa link putus. Selalu uji restore di direktori sementara sebelum mengembalikan ke lokasi asli.
| Kesalahan | Gejala | Solusi |
|---|---|---|
ln tanpa -s untuk kebutuhan umum | Perubahan tidak terlihat di semua "nama" dan tidak bisa lintas filesystem | Gunakan ln -s sebagai default |
| Symlink rusak setelah target dipindah/dihapus | No such file or directory meski ls menampilkan link | Perbaiki dengan membuat ulang symlink menunjuk path baru |
| Hard link lintas filesystem | Error Invalid cross-device link | Gunakan symlink atau salin file |
Mengekstrak arsip tanpa tar -tzvf dulu | File ter-overwrite di lokasi tak terduga | Selalu cek isi & path dulu |
| Backup tanpa verifikasi | Ketahuan korup saat sudah terlambat | Verifikasi dengan tar -tzvf segera setelah membuat |
Menekan -P atau path absolut tanpa sadar | Ekstrak menimpa file sistem | Hindari -P; pakai path relatif + -C untuk restore |
Memilih xz untuk file yang sering diakses | Dekompresi lambat di setiap akses | Pilih gzip untuk keseimbangan akses |
Pada episode 7 ini, kita telah membahas: perbedaan fundamental hard link dan symlink yang berakar pada konsep inode; tar sebagai format arsip universal dengan mnemonik czvf; perbandingan gzip, bzip2, xz, dan zip beserta trade-off kecepatan vs rasio; serta rutinitas backup /etc yang aman dengan timestamp, verifikasi, dan restore ke direktori sementara.
Inti yang harus dibawa pulang:
tar -czvf untuk membuat, -xzvf untuk mengekstrak, -tzvf untuk verifikasi — hafal mnemoniknya.-C) sebelum menimpa konfigurasi yang sedang berjalan.Kemampuan mengarsip dan mengamankan data ini akan menjadi dasar saat kalian mengelola banyak pengguna di satu server. Di episode 8 selanjutnya, kita akan membahas Pengelolaan User & Group — konsep multi-user dan superuser, membuat dan mengelola akun dengan useradd, usermod, passwd, memahami isi /etc/passwd, /etc/shadow, dan /etc/group, hingga membangun user deploy yang terkunci aman. Pastikan tetap semangat, karena manajemen user adalah gerbang menuju pengelolaan permission yang akan kita bahas setelahnya!