Chapter sebelumnya memberi kita radar gejala; chapter ini menyiapkan jaring pengaman. RAID menjaga ketersediaan dan SMART memberi peringatan dini, tetapi tidak satu pun menyimpan riwayat data — dan tanpa riwayat, satu rm -rf yang salah target atau satu ransomware cukup untuk melupakan semuanya. Backup adalah salinan yang dipisahkan dari sumbernya, baik secara ruang maupun waktu, dan merancangnya adalah keputusan arsitektur sebelum keputusan alat. Chapter ini menyusun strateginya — aturan 3-2-1, pilihan full versus incremental versus differential, angka RPO/RTO, rotasi retensi, dan enkripsi — lalu membuktikannya dengan latihan rsync, tar, dan openssl yang benar-benar bisa dijalankan hari ini.
Aturan 3-2-1 #
Strategi backup paling terkenal sekaligus paling awet dirangkum tiga angka: 3-2-1. Angka 3 berarti tiga salinan data — satu salinan kerja ditambah dua backup; salinan tunggal berarti kita punya data, bukan backup. Angka 2 berarti salinan tersebar di dua media berbeda — disk internal dan harddisk eksternal, misalnya — supaya kegagalan satu media tidak memakan semuanya. Angka 1 berarti satu salinan disimpan di luar lokasi (offsite): rumah yang kebakaran membakar disk beserta backup-nya sekaligus, dan ransomware tidak menjangkau arsip di lokasi lain. Offsite bisa berarti kantor cabang, rumah kedua, atau penyimpanan cloud — dan yang terakhir sebaiknya berisi arsip terenkripsi, sesuai latihan di penghujung chapter.
Full, Incremental, Differential #
Tiga cara menyusun salinan menentukan dua hal: seberapa cepat backup berjalan, dan seberapa ribet restore-nya.
| Metode | Apa yang disalin | Ukuran transfer | Kebutuhan restore | Ruang |
|---|---|---|---|---|
| Full | seluruh set data | paling besar | satu arsip, paling sederhana | paling boros |
| Incremental | perubahan sejak backup terakhir apa pun jenisnya | paling kecil | full plus seluruh rantai incremental | paling hemat |
| Differential | perubahan sejak full terakhir | menengah, makin hari makin besar | full plus differential terbaru saja | menengah |
Skema klasiknya adalah full mingguan plus incremental harian: backup tiap malam ringan, dan restore tinggal merangkai rantainya. Kelemahan rantai incremental adalah kerapuhannya — satu arsip korup di tengah rantai merusak semua incremental setelahnya. Differential lebih tahan gangguan karena hanya bergantung pada full terakhir, tetapi ukurannya membesar seiring berjalannya minggu. Pilihan mengikuti dua pertanyaan: seberapa cepat restore harus selesai, dan seberapa besar jendela waktu backup tiap malam.
RPO dan RTO: Dua Angka Penentu Jadwal #
Dua singkatan mengubah diskusi backup dari selera menjadi rekayasa. RPO (Recovery Point Objective) menjawab: berapa banyak data yang boleh hilang? Jarak antar backup menentukan angka itu — backup harian berarti bersiap kehilangan pekerjaan hingga 24 jam. RTO (Recovery Time Objective) menjawab: berapa lama layanan boleh mati? RTO juga menentukan media restore — arsip tar di rumah karyawan tidak akan memenuhi RTO satu jam.
| Beban kerja | RPO wajar | RTO wajar | Konsekuensi desain |
|---|---|---|---|
| Dokumen pribadi | 24 jam | beberapa hari | backup harian manual cukup |
| File server kantor | 1 jam | beberapa jam | backup otomatis terjadwal |
| Database transaksi | menit | menit | replikasi dan failover, di luar cakupan chapter ini |
Angka ini juga menentukan apa yang tidak perlu dibackup: mengarsipkan /proc atau cache browser untuk RPO 24 jam hanya membakar ruang. Definisikan RPO dan RTO dulu, baru pilih alatnya.
Demo Mini: Backup Harian dengan rsync #
Teori cukup — sekarang kita buktikan bahwa backup yang hanya memindahkan delta itu nyata. Perintah rsync membandingkan sumber dan tujuan, lalu hanya menyalin bedanya; opsi --itemize-changes memperlihatkan keputusan itu baris per baris:
mkdir -p dokumen/laporan dokumen/foto
printf 'laporan penjualan kuartal pertama\n' > dokumen/laporan/penjualan.txt
printf 'catatan rapat mingguan\n' > dokumen/catatan.txt
echo "== sinkronisasi pertama =="
rsync -a --itemize-changes dokumen/ backup-dokumen/
echo "== ubah satu file, lalu sinkron ulang =="
printf 'catatan rapat mingguan (revisi)\n' > dokumen/catatan.txt
rsync -a --itemize-changes dokumen/ backup-dokumen/Output yang Dihasilkan:
== sinkronisasi pertama ==
created directory backup-dokumen
cd+++++++++ ./
>f+++++++++ catatan.txt
cd+++++++++ foto/
cd+++++++++ laporan/
>f+++++++++ laporan/penjualan.txt
== ubah satu file, lalu sinkron ulang ==
>f.s....... catatan.txtBedah baris per barisnya:
- Baris 1-3 (
mkdirdanprintf): menyiapkan folderdokumensebagai data sumber — dua subfolder berisi satu file laporan dan satu catatan. - Baris 5 (
rsync -a ...): mode-a(archive) menyalin secara rekursif sambil mempertahankan izin, waktu modifikasi, dan symlink. Garis miring di ujungdokumen/berarti “salin isinya” — tanpa garis miring, rsync menyalin foldernya sendiri ke dalambackup-dokumen/. - Baris 7-8: satu file diubah isinya (revisi catatan), lalu rsync dijalankan ulang.
Pada sinkronisasi pertama, semua item ditandai cd+++++++++ (direktori baru) dan >f+++++++++ (file baru). Pada sinkronisasi kedua, satu-satunya baris adalah >f.s....... catatan.txt: s berarti ukuran berubah dan t berarti waktu modifikasi berubah — hanya file itu yang ditransfer ulang, sedangkan foto/ dan laporan/ tidak tersentuh. Perilaku “hanya bedanya” inilah mesin di balik backup harian yang ringan: menjalankan rsync tiap malam hanya memindahkan perubahan sejak kemarin. Daftar lengkap kode itemize dan mode penyalinannya terdokumentasi di rsync(1)
.
Arsip, Verifikasi, dan Uji Restore #
rsync bersifat sinkronisasi — isi salinan mengikuti sumber terkini. Untuk menyimpan keadaan pada satu titik waktu, arsip tar adalah format klasiknya, dan backup yang baik selalu ditutup dengan uji restore:
mkdir -p dokumen/laporan dokumen/foto
printf 'laporan penjualan kuartal pertama\n' > dokumen/laporan/penjualan.txt
printf 'catatan rapat mingguan (revisi)\n' > dokumen/catatan.txt
tar --sort=name -czf backup-dokumen-2026-01-15.tgz dokumen
tar -tzf backup-dokumen-2026-01-15.tgz
mkdir -p uji-restore
tar -xzf backup-dokumen-2026-01-15.tgz -C uji-restore
sha256sum dokumen/catatan.txt uji-restore/dokumen/catatan.txt
diff -r dokumen uji-restore/dokumen && echo "restore identik dengan sumber"Output yang Dihasilkan:
dokumen/
dokumen/catatan.txt
dokumen/foto/
dokumen/laporan/
dokumen/laporan/penjualan.txt
3c28568c7547515c870556b8cb297105d9c36ddeab283be2688ceccc78fca5a0 dokumen/catatan.txt
3c28568c7547515c870556b8cb297105d9c36ddeab283be2688ceccc78fca5a0 uji-restore/dokumen/catatan.txt
restore identik dengan sumberBedah baris per barisnya:
- Baris 4 (
tar --sort=name -czf ...): membungkus folderdokumenke arsip terkompresi gzip;--sort=namemengurutkan isi arsip menurut nama sehingga arsip dari data sama bersifat dapat diperbandingkan antar pembuatan. - Baris 5 (
tar -tzf ...): mendaftar isi arsip tanpa mengekstraknya — pemeriksaan pertama bahwa arsip terbaca dan lengkap. - Baris 6-7 (
tar -xzf ... -C uji-restore): mengekstrak arsip ke folder karantina, bukan menimpa sumbernya. - Baris 8-9 (
sha256sumdandiff -r): membandingkan sidik jari satu file dan seluruh pohon direktori;diff -ryang diam plus pesan sukses berarti restore identik dengan sumber.
Dua baris sha256sum berhash sama dan pesan restore identik dengan sumber adalah bukti yang kita cari: salinan bisa dipulihkan dan isinya teruji. Pada arsip sungguhan, simpan juga daftar sha256sum di samping arsipnya agar integritas bisa diperiksa bertahun-tahun kemudian; opsi-opsi pengemasan arsipnya dirinci di tar(1)
.
Rotasi dan Retensi #
Ruang penyimpanan terbatas, jadi salinan lama harus pensiun menurut jadwal. Skema populer grandfather-father-son membagi tiga generasi: harian disimpan tujuh hari, mingguan empat-lima minggu, bulanan dua belas bulan. Retensinya sederhana: temukan arsip yang lebih tua dari ambang, lalu hapus. Berikut simulasi pencariannya pada folder arsip harian:
mkdir -p backup-harian
for tgl in 2025-05-28 2025-05-29 2025-05-30 2025-06-02 2025-06-03; do
printf 'arsip' > backup-harian/backup-$tgl.tgz
touch -d $tgl backup-harian/backup-$tgl.tgz
done
find backup-harian -name '*.tgz' ! -newermt 2025-06-01 | sortOutput yang Dihasilkan:
backup-harian/backup-2025-05-28.tgz
backup-harian/backup-2025-05-29.tgz
backup-harian/backup-2025-05-30.tgzBedah baris per barisnya:
- Baris 1-5 (
for tgl in ...): membuat lima “arsip” harian;touch -d $tglmengunci waktu modifikasinya ke tanggal masing-masing, meniru arsip yang dibuat pada hari itu. - Baris 6 (
find ... ! -newermt 2025-06-01): mencari arsip yang tidak lebih baru dari 1 Juni 2025 — kandidat untuk dipensiunkan.
Hasilnya tiga arsip tertua — persis yang akan dihapus oleh kebijakan retensi tujuh hari. Di produksi, find yang sama ditambah opsi -delete akan membuangnya otomatis; jalankan dulu tanpa -delete untuk memastikan daftarnya benar, karena arsip yang terhapus keliru tidak bisa di-restore.
Enkripsi untuk Salinan Offsite #
Salinan offsite meninggalkan kendali fisik kita, jadi isinya sebaiknya tak terbaca tanpa kunci. openssl sudah ada di hampir semua sistem Linux dan mampu mengenkripsi file dengan AES:
printf 'data rahasia: daftar gaji karyawan\n' > rahasia.txt
openssl enc -aes-256-cbc -pbkdf2 -in rahasia.txt -out rahasia.txt.enc -pass pass:CONTOH_PASSWORD_KUAT
stat -c '%n %s byte' rahasia.txt rahasia.txt.enc
openssl enc -d -aes-256-cbc -pbkdf2 -in rahasia.txt.enc -out pulih.txt -pass pass:CONTOH_PASSWORD_KUAT
cmp rahasia.txt pulih.txt && echo "dekripsi menghasilkan data identik"
head -c 8 rahasia.txt.enc; echoOutput yang Dihasilkan:
rahasia.txt 35 byte
rahasia.txt.enc 64 byte
dekripsi menghasilkan data identik
Salted__Bedah baris per barisnya:
- Baris 2 (
openssl enc -aes-256-cbc -pbkdf2 ...): mengenkripsi file dengan cipher AES-256-CBC;-pbkdf2menurunkan password menjadi kunci lewat fungsi derivasi yang lambat — perlindungan dari percobaan password massal. - Baris 3 (
stat -c ...): membandingkan ukuran — 35 byte data menjadi 64 byte arsip, karena enkripsi menambah header. - Baris 4-5: mendekripsi kembali lalu membandingkan
cmp; hasil identik membuktikan siklus utuh. - Baris 6 (
head -c 8): membaca delapan byte pertama arsip — teksSalted__menandakan arsip memakai salt acak.
Salt acak berarti data dan password yang sama tetap menghasilkan ciphertext berbeda di setiap eksekusi — penyerang tidak bisa mencocokkan arsip kita dengan tabel ciphertext yang sudah dipecahkan sebelumnya. Untuk arsip dalam jumlah besar, alat seperti borg dan restic menggabungkan enkripsi, deduplikasi, dan verifikasi dalam satu paket; perbandingannya ada di daftar alat sinkronisasi dan backup
wiki Arch.
Kedua alat utama hari ini — rsync sebagai mesin delta dan tar sebagai pembungkus arsip — masih menyimpan banyak trik: dry-run, filter, hard-link, hingga deduplikasi level blok. Chapter berikutnya membedah rsync sampai ke opsi-opsinya.