Kami ingin mengambil cadangan semua yang ada di server Debian kami, yang berjalan jarak jauh di sisi lain dunia (di-host oleh Linode), tanpa mematikannya.
Sistem ini menjalankan shell, email, XMPP / prosody dan web, dengan beberapa pengaturan nginx sederhana.
Kami ingin membuat cadangan file yang terkait dengan hal-hal itu agar aman. Misalnya, file yang disimpan pengguna di direktori home mereka.
Kita tidak perlu secara tepat menyalin pengaturan setup yang ada setiap file / etc; alih-alih, alasan kami melakukan back up di tempat pertama adalah agar kami dapat memindahkan semuanya ke pengaturan baru (versi terbaru dari Debian masih menggunakan Linode).
Saya melihat bahwa Linode menawarkan layanan cadangan. Tetapi dalam jangka panjang kita juga membutuhkan cadangan kita sendiri, di sini, jika mereka jatuh atau sesuatu yang aneh terjadi.
Alasan pertanyaan ini ada adalah ketika saya mencoba membuat cadangan di masa lalu saya terus membuat salah satu dari dua kesalahan ini:
- Saya telah pergi "OK, saya hanya akan menyalin
/
dan semua yang ada di bawahnya" dan kemudian terjebak dalam beberapa loop aneh tak terbatas baik karena drive saya menyalin ke dipasang di / media / backup dan itu menyalin sendiri secara rekursif [obv masalah khusus itu tidak berlaku di sini karena kita akan melakukan backup melalui rsync atau yang serupa] atau macet ketika mencoba menyalin beberapa hal "hidup" di / proc atau / var atau apa pun, seperti mencoba mengikuti log yang selalu berubah, atau - Saya telah pergi "OK, saya hanya akan mengambil minimal apa yang kita butuhkan ... hmm, direktori home semua orang, dan direktori server web kami (semuanya di bawah
/var
) dan mari kita ambil salinan/etc
dan semua email lama di bawah / var / vmail "dan kemudian saya selalu mengacaukan izin file atau cap waktu (akan memastikan saya tidak mencadangkan file unix ke drive FAT kali ini) atau lupa sesuatu (" oh, tembak, saya punya beberapa skrip khusus di / usr / lokal / bin yang tidak pernah saya simpan di tempat lain, saya lupa mendapatkannya, kira sudah hilang ").
Jadi, menyalin semua drive secara langsung telah menyebabkan jebakan dan menyalin direktori secara selektif telah menyebabkan jebakan. Saya ingin tahu bagaimana melakukannya dengan benar.
Pertanyaan Kesalahan Server Apa yang dibutuhkan untuk sistem cadangan lengkap? mencakup filosofi dan praktik yang baik, tetapi saya mencari detail yang lebih spesifik dari:
- Direktori mana yang harus saya salin dan yang harus saya kecualikan (mengingat bahwa itu adalah sistem yang saat ini menjalankan & dan melayani wiki, obrolan XMPP, email - dengan pesan baru masuk saat pekerjaan salin sedang berjalan)
- Atribut file apa seperti stempel waktu & pemilik & grup yang perlu saya sajikan dan bagaimana saya melakukannya? ← Saya pikir saya bisa menjawab sendiri setengah dari pertanyaan ini dengan sesuatu seperti ... um ...
rsync -HXaz
saya pikir itu pilihan yang baik untuk kita? The-z
obv tidak benar-benar terkait dengan pertanyaan yang "apa yang harus saya melestarikan"
Banyak saran cadangan yang saya lihat, seperti menggunakan dd
, tampaknya mengandaikan bahwa drive tidak di-mount dan tidak digunakan. Tapi aku tidak seharusnya mengecualikan "hidup" direktori seperti / proc dan beberapa subdirektori di bawah / var (Namun, beberapa hal di bawah / var Aku tahu kita pasti lakukan perlu untuk menjaga) dan / mount? Apa lagi yang perlu saya pikirkan dalam situasi ini? Maka saya kira saya hanya bisa snarf dengan rsync dan menggunakan banyak --exclude
bendera.
Atau ada ide yang lebih baik, terutama yang ramah FOSS?
cp -r -a
akan mempertahankan atribut file sebanyak mungkin saat menyalin file (berdasarkan apa yang didukung oleh sistem file target). The-a
bendera menginstruksikancp
untuk melestarikan atribut. Untuk menyalin melalui jaringan atau melalui sistem file yang tidak mendukung atribut yang diperlukan,tar -c
selalu bekerja untuk saya walaupun saya percaya ada beberapa kasus tepi yang tidak tercakup dan khususnya saya percayatar
secara default tergantung pada nama pengguna yang cocok dengan kedua sistem. Yang mengatakan, saya telah menyalin seluruh sistem Linux (tidak terpasang) menggunakantar
tanpa masalah yang jelas.Jawaban:
Jadi Anda ingin mem-backup semua drive Anda tanpa semua kesalahan buruk itu dan juga memfilter semua / proc dan folder sementara lainnya?
Opsi adalah untuk memasang folder root ke folder lain dalam sistem file, seperti ini:
Ini akan memberi Anda semua file yang ada di drive Anda yang tidak dianggap sementara (seperti folder / proc atau / sys).
Sekarang setelah Anda memiliki tampilan yang bersih dari folder root Anda, Anda bisa menyalinnya ke drive cadangan menggunakan standar
cp
ataursync
. Sesuatu di sepanjang garis:Ini menyelesaikan kedua masalah yang Anda sebutkan:
Lihat juga: man mount (8)
sumber
Di Linux semuanya adalah file. Mungkin melalui rsync, tetapi ada hal-hal yang perlu diperhatikan, yang (paling-paling) sulit untuk dilakukan.
Anda harus memikirkan replikasi terlebih dahulu, terutama untuk database. Juga ini adalah ide yang baik untuk mengatur penyeimbang proxy / beban di depan server utama Anda, sehingga Anda dapat dengan mudah beralih bolak-balik dengan server primer dan server mirror selama transisi.
Pada tingkat perangkat keras, situasi terbaik adalah memiliki server seperti cermin di sisi lain, dengan jumlah port ethernet yang sama, tata letak hdd yang sama, dan sebagainya. Segala sesuatu yang berbeda menyiratkan perlunya perubahan konfigurasi sistem.
yaitu jika Anda memiliki dua port et, Anda ingin memastikan bahwa konfigurasi jaringan, firewall dan sebagainya cocok dengan nama antarmuka di kedua server, dan jika itu berbeda Anda perlu mengubah konfigurasi setelah rsync atau mengubah nama perangkat pada yang kedua server (tujuan).
Sama dengan tata letak partisi. Anda harus membuat partisi yang sama seperti pada server utama Anda, tetapi jika Anda membuatnya dari awal Anda akan berakhir dengan UUID yang berbeda, jadi Anda harus mengubah fstab, grub, mdadm (jika soft-raid terlibat), dan sebagainya .
Tapi, ada juga banyak hal yang salah, seperti database, yang bisa tidak konsisten jika tidak dihentikan sebelumnya (sebelum melakukan rsync).
Strategi terbaik adalah mempersiapkan perangkat keras dan sistem file (partisi) - untuk mencocokkan konfigurasi server primer. Kemudian pasang parititon kosong melalui sistem perantara (seperti live CD dengan ssh-server terinstal sementara). Anda membuat kosong / proc, / dev, / sys dan kemudian rsync sisanya, seperti:
Kemudian Anda perlu menginstal grub pada perangkat dan bekerja pada konfigurasi, untuk membuatnya bootable, ubah konfigurasi jaringan, fstab dan hal-hal lain yang disebutkan sebelumnya.
Anda juga dapat mencoba menginstal sistem baru (dengan versi yang sama yang Anda gunakan pada server utama Anda), kemudian matikan, pasang melalui sistem sementara lainnya (seperti live cd), lalu ganti apa pun selain / proc, / sys, / dev dan / boot dengan rsync.
Tapi itu hanya gagasan umum. Hal-hal mungkin menyulitkan tergantung pada apa yang sebenarnya Anda miliki di server ini, apa konfigurasi Anda, pengaturan jaringan dan perangkat keras. Dan pada akhirnya, ini mungkin sangat sulit atau tidak mungkin dilakukan tanpa downtime yang nyata.
sumber
kill -9
aman, atau mungkin gagal memulihkan. Database yang baik harus menangani situasi itu, tetapi sejumlah produk mengejutkan tidak (atau lebih buruk, mereka hampir selalu pulih, tetapi gagal sekali dalam bulan biru ketika Anda benar-benar membutuhkannya untuk bekerja). Jadi dalam praktiknya, replikasi mungkin lebih dapat diandalkan pula.Apa yang sebenarnya Anda inginkan adalah mengembalikan. Apa pun yang Anda lakukan, Anda harus mengembalikannya secara teratur.
Linode memiliki layanan cadangan. Snapshots dapat diambil pada jadwal yang ditentukan sebelumnya terbatas atau dengan API.
Keuntungan dari backup berbasis snapshot adalah mereka menawarkan titik waktu yang tajam, karena data tidak berubah ketika salinan dibuat. Snapshots juga dapat dengan mudah dikembalikan ke host yang berbeda, Linode baru dalam kasus ini.
sumber
Saya menggunakan BackupPC untuk server pribadi virtual kecil saya, ini bekerja dengan cukup baik. BackupPC dapat menggunakan rsync di bawah tenda dan mendukung pencadangan penuh dan tambahan. Lihatlah dan lihat apakah itu akan memenuhi kebutuhan Anda.
sumber
Jalankan sistem Anda di ZFS. Kemudian Anda dapat mengambil snapshot atom seketika menggunakan sesuatu yang mirip dengan:
di mana
tank
pun nama kolam ZFS Anda dinamai. Cuplikan ini dijamin sebagai snapshot sesaat dari sistem file dan semua sistem file anaknya.Setelah Anda membuat snapshot, Anda dapat mentransfernya ke host lain menggunakan
zfs send
danssh
.sumber
Saya pendapat saya Itu tergantung apa dan di mana Anda menjalankan server dengan perintah linux internal itu tidak mungkin, Anda harus meniru / pipa data lengkap dan perpustakaan. Jika Anda menjalankan vmware dan terkonfigurasi dengan baik itu menyediakan migrasi langsung. Atau Anda harus menggunakan alat pihak ketiga. Semoga ini bisa membantu Anda. Beberapa referensi lagi Bagaimana cara membuat cadangan server langsung?
Rsync adalah perintah yang baik untuk menyinkronkan data antar server.
sumber
Ada 2 solusi yang tersedia, di mana Anda tidak perlu bergantung (lagi) pada bit yang hilang serta kehilangan satu item dari daftar Anda karena daftar periksa yang tidak lengkap atau mungkin karena sesuatu yang panas diabaikan.
Pertama, jika Anda memindahkan ini ke platform dengan kontrol lebih besar atas platform perangkat keras yang mendasarinya, Anda dapat mengambil snapshot disk dari semua file saat server sedang berjalan. Misalnya pada AWS Anda dapat snapshot disk EBS dan bahkan hanya membayar untuk perbedaan ketika Anda membuat snapshot lain nanti.
Kedua, saya sarankan untuk skrip pengaturan server lengkap Anda dengan sistem manajemen konfigurasi, seperti Ansible. Ini akan
mendokumentasikan semua yang telah Anda konfigurasikan dalam kontrol sumber
memungkinkan Anda untuk menguji membuat ulang server dari cadangan atau bare metal untuk memastikan skrip Anda up to date
memungkinkan Anda untuk menjalankan kembali skrip pada sistem operasi yang lebih baru, biasanya dengan perubahan yang sangat kecil.
sumber