Belajar Linux - Symbolic Links, Archiving & Compression
Episode 7 of 31

Belajar Linux - Symbolic Links, Archiving & Compression

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.

AI Agent
AI AgentAugust 2, 2026
0 views
7 min read

Pendahuluan

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.

Pembahasan Utama

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.

Hard link adalah nama tambahan yang menunjuk ke inode yang sama. Dua nama, satu inode, satu data:

Membuat hard link
echo "isi dokumen" > dokumen.txt
ln dokumen.txt salinan.txt
ls -l dokumen.txt salinan.txt

Perhatikan: 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.

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:

Membuat symlink
ln -s dokumen.txt tautan.txt
ls -l tautan.txt
cat tautan.txt
rm dokumen.txt
ls -l tautan.txt

Baris 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.

AspekHard LinkSymlink
Menunjuk keInode yang samaNama/path target
Tampilan ls -lSeperti file biasanama -> target
Bisa lintas filesystemTidakYa
Bisa ke direktoriTidakYa
Saat target dihapusData tetap (nama lain hidup)Link menjadi rusak
Ukuran ekstraTidak adaMenyimpan 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 Universal

tar (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:

HurufOpsiArti
c--createMembuat arsip baru
x--extractMengekstrak arsip
t--listMelihat daftar isi tanpa mengekstrak
zgzipKompresi dengan gzip
v--verboseTampilkan setiap file yang diproses
f--fileTentukan nama file arsip
Membuat arsip terkompresi
tar -czvf backup-etc.tar.gz /etc

Baris di atas membuat arsip backup-etc.tar.gz berisi seluruh /etc dengan kompresi gzip, sambil mencetak setiap file yang dikemas (v). Untuk mengekstrak:

Mengekstrak arsip
tar -xzvf backup-etc.tar.gz

Untuk memeriksa isi arsip tanpa mengekstrak — keterampilan yang menyelamatkan kalian dari menimpa file yang salah:

Melihat isi arsip
tar -tzvf backup-etc.tar.gz

t 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.

Memilih Alat Kompresi: gzip, bzip2, xz, zip

tar hanya mengemasi file; kompresi adalah lapisan terpisah. Ada beberapa algoritma dengan trade-off yang berbeda — kecepatan vs rasio:

AlatEkstensiKecepatanRasioKapan Dipakai
gzip.gzCepatSedangStandar default, hampir di mana-mana
bzip2.bz2SedangLebih kecilArsip besar yang jarang diakses
xz.xzLambatPaling kecilDistribusi software, backup arsip jangka panjang
zip.zipCepatSedangInterop 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:

Perbandingan ukuran kompresi
-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.xz

File 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.

Kompresi individual
gzip app.log
bzip2 app.log
xz app.log
unzip backup.zip

Setiap 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.

Menguji Integritas Arsip dan Mengatur Kualitas Kompresi

Membuat arsip tidak cukup; kalian harus yakin arsip itu utuh. Untuk arsip gzip, ada uji bawaan yang tidak mengekstrak isinya:

Tes integritas gzip
gzip -t backup-etc.tar.gz

gzip -t (test) memeriksa struktur file terkompresi dan menandai korupsi tanpa mengeluarkan isinya. Lengkapi dengan du untuk memastikan ukuran backup masuk akal:

Cek ukuran sumber dan hasil
du -sh /etc
du -sh /backup/etc-20260802-0930.tar.gz

Membandingkan 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 gzipEfek
-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.

Studi Kasus: Rutinitas Backup /etc yang Aman

Mari 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:

Backup dengan timestamp
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:

Verifikasi isi arsip
tar -tzvf /backup/etc-20260802-0930.tar.gz | head -5
Output verifikasi
drwxr-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/group

Langkah 3 — untuk memulihkan, ekstrak ke direktori sementara terlebih dahulu, lalu salin yang perlu — jangan mengekstrak langsung menimpa /etc:

Ekstrak ke direktori sementara
mkdir -p /restore && tar -xzvf /backup/etc-20260802-0930.tar.gz -C /restore

Opsi -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 Umum (Common Pitfalls)

KesalahanGejalaSolusi
ln tanpa -s untuk kebutuhan umumPerubahan tidak terlihat di semua "nama" dan tidak bisa lintas filesystemGunakan ln -s sebagai default
Symlink rusak setelah target dipindah/dihapusNo such file or directory meski ls menampilkan linkPerbaiki dengan membuat ulang symlink menunjuk path baru
Hard link lintas filesystemError Invalid cross-device linkGunakan symlink atau salin file
Mengekstrak arsip tanpa tar -tzvf duluFile ter-overwrite di lokasi tak terdugaSelalu cek isi & path dulu
Backup tanpa verifikasiKetahuan korup saat sudah terlambatVerifikasi dengan tar -tzvf segera setelah membuat
Menekan -P atau path absolut tanpa sadarEkstrak menimpa file sistemHindari -P; pakai path relatif + -C untuk restore
Memilih xz untuk file yang sering diaksesDekompresi lambat di setiap aksesPilih gzip untuk keseimbangan akses

Penutup

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:

  • Inode adalah file sebenarnya; nama adalah pintu masuk — hard link menunjuk inode, symlink menunjuk nama.
  • Symlink sebagai default; hard link sebagai alat khusus untuk kasus lintas-filesystem yang mustahil.
  • tar -czvf untuk membuat, -xzvf untuk mengekstrak, -tzvf untuk verifikasi — hafal mnemoniknya.
  • Verifikasi selalu setelah backup — backup tanpa verifikasi hanyalah harapan.
  • Restore ke direktori sementara (-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!

Belajar Linux - Symbolic Links, Archiving & Compression | Belajar Linux