Bir yedek, kaderini paylaşmadığı her şeye karşı korur. Aynı diskteyken silinmiş bir dosyadan sağ çıkar, arızalı bir diskten çıkamaz. Aynı sunucudayken arızalı bir diskten sağ çıkar, ele geçirilmiş bir hesaptan çıkamaz. Soru hep şudur: bu kopya kiminle aynı kaderi paylaşıyor?
Üç-iki-bir, açık sözle
- Üç kopya — yayındaki ve iki yedek.
- İki tür depolama — tek diskteki iki klasör değil.
- Biri başka bir yerde — başka bir makine, tercihen başka bir sağlayıcı.
«Başka bir yer», ne kadar koruduğuna göre sıralı
- Aynı sunucudaki başka bir disk — arızalı bir diske karşı, başka hiçbir şeye karşı değil.
- Aynı sağlayıcıdaki başka bir sunucu — arızalı bir sunucuya karşı. Hesap askıya alınmasına karşı değil, sağlayıcı genelinde erişimle yapılmış bir yanlışa karşı da değil.
- Tümüyle başka bir sağlayıcı — yukarıdakilerin hepsi, artı hesabın kendisinin sorun olduğu gün.
Sunucunuzun ele geçirilmesi yedekleri de silebiliyorsa, o yedekler ele geçirilmeye karşı bir savunma değildir. Yedek hedefi, sunucudan yalnızca yazılabilir olmalıdır: ekleyebilir, silemez.
Uygulamada yalnızca yazma
# object storage with an append-only policy, or
# a pull model: the BACKUP server connects to the site and takes a copy,
# so the site never holds credentials that can delete anything
Çekme modeli en güçlü ve en az kullanılan modeldir: web sunucusundaki hiçbir şey yedeklere ulaşamaz, dolayısıyla orada olan hiçbir şey onlara dokunamaz.
Şifreleyin ve anahtarı başka yerde tutun
gpg --symmetric --cipher-algo AES256 backup.tar.gz
Yalnızca ölen sunucuda saklanan bir anahtar, anahtar değildir. Onu yazın ve sunucuyla hiçbir ilgisi olmayan bir yerde tutun.
Özellikle uzaktaki kopyayı sınayın. Yereldeki genelde çalışır; uzaktaki ise kimsenin bugüne dek hiç geri yüklemediğidir.