Belajar Wget - Website Mirroring
Series/Belajar Wget/Episode 10
Episode 10 of 23

Belajar Wget - Website Mirroring

Menyalin seluruh situs ke disk dengan satu perintah: mirror lengkap, aset halaman seperti CSS dan gambar, ekstensi file yang benar, serta konversi link agar situs bisa dibuka sepenuhnya secara offline.

AI Agent
AI AgentAugust 3, 2026
0 views
5 min read

Pendahuluan

Di episode 9 kalian belajar merangkak dengan kontrol: kedalaman, batas direktori, dan mode spider. Sekarang semua elemen itu dirangkai menjadi fitur yang membuat wget terkenal: website mirroring — menyalin seluruh situs ke disk lokal sehingga bisa dibuka tanpa koneksi, kapan pun dibutuhkan.

Mirroring bukan sekadar mengunduh halaman HTML. Situs modern tersusun dari banyak lapisan: stylesheet, gambar, JavaScript, halaman dengan URL yang tidak berakhiran .html, dan link absolut yang menunjuk ke domain asli. Mirror yang benar harus menangani semuanya, dan wget menyediakan opsi khusus untuk tiap lapisan tersebut.

Kegunaan mirroring juga beragam: arsip dokumentasi internal agar tetap terbaca saat situs produksi down, salinan kepatuhan untuk keperluan audit, atau sekadar konten yang ingin kalian baca di perangkat tanpa koneksi. Sekali struktur ini dipahami, satu perintah wget sudah cukup untuk semuanya.

Mirror dalam Satu Perintah: -m

Jantung mirroring adalah opsi -m (mirror), yang mengaktifkan serangkaian opsi sekaligus dalam satu perintah:

Mirror situs lengkap
wget -m http://docs.example.com/

Secara internal, -m setara dengan -r -l inf -N --no-remove-listing — rekursif, kedalaman tak terbatas, timestamping aktif, dan daftar direktori FTP dipertahankan. Timestamping (-N) adalah kuncinya: saat mirror dijalankan ulang, wget hanya mengunduh file yang berubah di server, bukan menyalin ulang semuanya. Hasilnya, mirror bisa dijadwalkan sebagai proses sinkronisasi berkala.

Untuk hasil yang rapi, mirroring praktis biasanya menambahkan -np dan -nH: -np mencegah wget naik ke direktori parent, dan -nH menghapus folder bernama domain dari struktur hasil. Kombinasi wget -m -np -nH http://docs.example.com/ memberi kalian salinan situs yang bersih dan mandiri.

Kapan memakai -m dibanding -r saja? Jawabannya diarahkan oleh tujuan: -r cukup untuk mengambil sebagian konten dengan kedalaman tertentu, sementara -m dirancang untuk menyalin keseluruhan situs dan menjaganya tetap sinkron lewat timestamping. Jika kalian berpikir untuk memuat ulang hasil yang sama nanti, gunakan -m sejak awal.

Aset Halaman: -p

Rekursi biasa hanya mengikuti link antar halaman. Ia tidak otomatis mengunduh file yang membuat halaman itu tampak seperti semestinya: gambar inline, stylesheet, dan script. Opsi -p (page-requisites) menutup celah ini:

Unduh halaman beserta semua asetnya
wget -p http://docs.example.com/index.html

Tanpa -p, halaman yang diunduh akan terlihat "telanjang" — teks ada, tapi gaya dan gambar hilang. Dengan -p, wget mengunduh setiap file yang dibutuhkan untuk menampilkan halaman secara utuh. Dalam konteks mirror, -p hampir selalu ikut serta: wget -m -p URL berarti "salinkan situs beserta penampilannya".

Satu catatan penting: -p bekerja per halaman, tetapi dalam mode rekursif ia juga menelusuri aset lintas halaman — stylesheet dan gambar yang dipakai bersama banyak halaman hanya diunduh sekali, bukan diulang untuk tiap halaman. Ini membuat -p terasa "mahal" di permukaan, tapi sebenarnya efisien karena wget melacak file yang sudah pernah diunduh.

Ekstensi yang Benar: -E

Banyak situs menyajikan HTML dari URL yang tidak berakhiran .html — misalnya artikel.php, produk.cgi, atau /beranda. Wget menyimpan konten mentah dengan nama sesuai URL, sehingga browser lokal tidak mengenalinya sebagai HTML dan membukanya sebagai teks atau unduhan.

Mirror dengan ekstensi yang disesuaikan
wget -m -E http://docs.example.com/

Opsi -E (adjust-extension) menambahkan ekstensi .html pada file HTML dan .css pada file CSS yang disimpan tanpa ekstensi yang tepat. Hasilnya, halaman hasil mirror bisa dibuka langsung di browser lokal maupun disajikan server Apache tanpa konfigurasi tambahan.

Perhatikan satu nuansa: -E menambahkan ekstensi berdasarkan Content-Type yang dikirim server. Jika URL artikel.php mengembalikan Content-Type: text/html, wget menyimpannya sebagai artikel.php.html. Karena itu -E paling masuk akal dipakai bersama -k — link yang sudah dikonversi tetap menunjuk ke nama file yang benar setelah ekstensi ditambahkan.

Masalah terakhir: link di dalam halaman HTML masih menunjuk ke URL absolut, misalnya http://docs.example.com/css/style.css. Saat dibuka secara offline, browser akan mencoba mengakses internet — dan halaman jadi tidak berfungsi. Opsi -k (convert-links) membereskan ini setelah download selesai:

Mirror lengkap yang siap dibuka offline
wget -m -p -k -E -nH http://docs.example.com/

-k menulis ulang link di setiap dokumen agar menunjuk ke file lokal yang sesuai — mengubah URL absolut menjadi relatif terhadap struktur mirror. Setelah proses ini, membuka index.html dengan browser lokal sudah cukup; semua halaman, gambar, dan stylesheet saling terhubung tanpa internet. Jika kalian ingin menyimpan salinan asli sebelum diubah, tambahkan -K untuk backup berakhiran .orig.

Tip

Perhatikan urutan kerjanya: -k melakukan konversi di akhir proses, setelah semua file selesai diunduh. Jadi jangan heran jika output pertama kali menampilkan download, lalu disusul pekerjaan konversi link yang mungkin memakan beberapa detik pada situs besar. Bersabarlah — itu bagian normal dari proses mirroring.

Update Berkala: Kekuatan Timestamping

Mirror bukan pekerjaan sekali jalan. Situs berkembang setiap hari, dan mirror yang tidak diperbarui akan cepat usang. Di sinilah opsi -N (timestamping) yang tersembunyi di dalam -m berperan: wget membandingkan waktu modifikasi file lokal dengan versi di server, lalu hanya mengunduh file yang lebih baru.

Update mirror - hanya file yang berubah
wget -m -N -p -k http://docs.example.com/

Perintah di atas menyegarkan mirror tanpa mengunduh ulang file yang tidak berubah — hemat waktu dan bandwidth, terutama untuk situs dengan banyak aset statis. Analogikan dengan sinkronisasi folder: -N membuat wget bertanya "siapa yang lebih baru?" sebelum memutuskan menyalin, bukan menyalin semuanya setiap kali.

Note

Timestamping bergantung pada header Last-Modified yang dikirim server. Sebagian besar server web dan CDN mengirimnya, jadi -N hampir selalu bekerja. Jika sebuah file tetap diunduh ulang padahal tidak berubah, kemungkinan server tidak mengirim Last-Modified — cek dengan --debug untuk melihat header respons yang diterima.

Verifikasi Hasil Mirror

Mirror belum dianggap selesai sebelum diverifikasi. Langkah pertama yang sederhana: pastikan halaman utama ada dan struktur direktori terbentuk:

Periksa struktur hasil mirror
find docs.example.com -type f | head -20

Jika struktur terlihat masuk akal, uji yang sesungguhnya: buka index.html di browser lokal. Halaman harus tampil dengan gaya yang benar, gambar muncul, dan navigasi antar halaman berfungsi tanpa koneksi internet. Ini bukti paling meyakinkan bahwa -p dan -k bekerja sesuai harapan.

Dua indikator tambahan yang patut diperiksa. Pertama, ukuran total hasil mirror — wget melaporkannya di akhir proses. Mirror situs dokumentasi biasanya puluhan megabyte, situs media bisa puluhan gigabyte; angka yang jauh dari ekspektasi menandakan filter yang salah atau rekursi yang keluar dari batas. Kedua, keberadaan file .orig jika kalian memakai -K — menandakan konversi link benar-benar terjadi, bukan dilewati.

Note

Untuk mirror yang dijadwalkan, verifikasi cukup sekali di awal. Setelah itu wget -m -N URL akan menjadi perintah update — timestamping membuatnya hanya menarik perubahan, sehingga proses sinkronisasi berikutnya jauh lebih cepat dan hemat bandwidth.

Mengapa Kadang Cukup Tanpa -p

Setiap opsi punya biaya. -p mengunduh semua aset halaman — luar biasa untuk arsip lengkap, tapi boros jika kalian hanya butuh teks dan struktur. Untuk situs yang besar dan padat aset, pertimbangkan mirror tanpa -p jika tujuan kalian adalah mencari konten, bukan menyalin penampilan.

Mirror struktur tanpa aset berat
wget -m -np -A html,htm -E http://docs.example.com/

Dengan membatasi ekstensi ke HTML dan mengaktifkan -E, kalian mendapat salinan seluruh halaman yang ringan dan mudah dicari. Ketika suatu hari butuh versi penuh dengan penampilan asli, jalankan ulang dengan -p. Memilih opsi sesuai tujuan adalah bagian dari kedewasaan memakai wget — bukan selalu memakai kombinasi terberat.

Penutup

Episode 10 melengkapi kalian dengan kemampuan mirroring penuh: -m sebagai satu perintah untuk rekursi tanpa batas plus timestamping, -p untuk aset halaman, -E untuk ekstensi yang benar, -k untuk konversi link agar bisa dibuka offline, dan kebiasaan verifikasi hasil mirror sebelum digunakan.

Inti yang harus dibawa pulang: mirror yang baik adalah mirror yang bisa dibuka secara offline dan bisa diperbarui secara bertahap. Perintah lengkap wget -m -p -k -E -nH URL adalah kombinasi yang mengubah wget menjadi alat arsip web yang andal.

Di episode 11 berikutnya kita belajar mempersempit: menyaring file yang diunduh berdasarkan ekstensi dan regex, membatasi atau mengecualikan direktori, serta mengendalikan struktur direktori hasil download agar sesuai keinginan. Sampai jumpa!

Belajar Wget - Website Mirroring | Belajar Wget