
1. Di mana untuk memulai
Di mana pencadangan dimulai? Perencanaan Saat mencadangkan sistem apa pun, Anda perlu membuat rencana cadangan: apa sebenarnya, seberapa sering, berapa lama untuk menyimpan, akankah ada ruang kosong yang cukup? Dari jawaban atas pertanyaan-pertanyaan ini, jawaban untuk pertanyaan utama berikut - bagaimana cara membuat cadangan?
Jika ada banyak ruang kosong, Anda dapat menyimpan seluruh mesin virtual. Buat cadangan dengan Veeam yang sama sesuai jadwal, dan jangan pikirkan kesulitannya. Tetapi bagi saya, ini sia-sia, saya biasa melakukan segala sesingkat dan se ekonomis mungkin. Tentu saja, saya telah menggunakan Veeam, tetapi saya hanya membuat salinan cadangan dari sistem yang tidak mungkin atau bermasalah untuk digunakan dari cadangan untuk waktu yang sangat lama.
Tentang skrip alat manajemen lingkungan virtual, saya akan tetap diam dengan penuh makna.
Zimbra memiliki alat zmmailbox. Dan, setelah memeriksa lebih dekat fungsinya, saya menyadari bahwa itu akan lebih dari cukup bagi saya. Dia dapat membuat cadangan dan memulihkan kotak surat bahkan pada sistem live. Dan saya menyukai kemampuan untuk membackup kotak surat penting secara terpisah dari cadangan seluruh sistem. Dengan demikian, ruang yang ditempati oleh cadangan akan dibatasi oleh ukuran kotak surat yang diarsipkan dikalikan dengan jumlah hari "kedalaman cadangan", dan bukan oleh volume seluruh sistem dikalikan dengan jumlah hari yang sama. Selain itu, sangat sulit untuk memulihkan dari cadangan seluruh sistem, dalam kasus Zimbra. Jauh lebih mudah untuk menyalin mesin virtual menggunakan Veeam atau alat manajemen lingkungan virtual (Hyper-V, ESXI, masukkan yang diinginkan) segera setelah menyiapkan sistem, dan letakkan "di rak" sehingga pada saat kritis Anda dapat dengan cepat menggunakan VM tanpa berat dan mengunggah. di dalamnya cadangan kotak. Menurut pendapat saya, ini adalah skenario paling murah dalam semua hal.
2. Sumber data:
Server OS : CentOS 7
Tentang OSFaktanya, perbedaan antara CentOS7 dan sistem lainnya hanya akan terletak pada perintah ke server untuk menginstal paket, dan, mungkin, lokasi beberapa file. Pekerjaan dilakukan terutama dengan cmdlet Zimbra, sehingga perbedaan konfigurasi akan minimal.
Zimbra Domain : zimbramail.home.local
Nama pengguna dan kata sandi untuk akses ke folder bersama : ZimbraBackUp / 123123
Jalur ke folder bersama : \\ BackUpServer1 \ ZM \
Jalan untuk memasang bola pada host Zimbra : / mnt / ZM /
3. Pengaturan
Jadi mari kita mulai!
Kami akan menulis cadangan ke server yang menjalankan Windows di folder bersama. Jika mau, Anda dapat menggabungkan cadangan di mana saja, tetapi saya sudah mengatur semuanya agar sebagian besar cadangan ditulis ke BackUpServer1.home.local. Jadi itu:
1) Kami membuat di domain pengguna untuk mengakses folder bersama di server ini sehingga dapat dipasang di server Zimbramail.home.local. Nama pengguna ZimbraBackUp, kata sandi, kondisional, 123123.
2) Di server BackUpServer1, buat direktori \ ZM \ di repositori, dan bagikan, berikan hak perubahan untuk pengguna ZimbraBackUp. Jalan menuju bola adalah: \\ BackUpServer1 \ ZM \
3) Pasang bola ke server Zimbramail.home.local. Agar folder dapat dipasang secara otomatis, Anda perlu memperbaiki file / etc / fstab dengan menambahkan baris ke dalamnya:
//BackUpServer/ZM /mnt/ZM cifs user,uid=500,rw,suid,username=ZimbraBackUp,password=123123 0 0
Tetapi pertama-tama Anda perlu memeriksa apakah mount berfungsi:
$ mount -t cifs //BackUpServer/ZM /mnt/ZM -o user=ZimbraBackUp,password=123123
Seringkali kesalahan seperti ini muncul:
mount: wrong fs type, bad option, bad superblock on //BackUpServer1/ZM/, missing codepage or helper program, or other error (for several filesystems (eg nfs, cifs) you might need a /sbin/mount.<type> helper program) In some cases useful info is found in syslog - try dmesg | tail or so.
Anda dapat memperbaikinya dengan menginstal cifs-utils:
$ yum install cifs-utils
Setelah pengaturan, saya sarankan memulai kembali server.
4) Buat 3 file skrip: FullBackUp.sh HandBackUp.sh Restore.sh
File pertama akan digunakan untuk secara otomatis membuat cadangan terjadwal, yang kedua untuk kemampuan membuat cadangan kotak surat individual, atau secara manual memulai "bagaimana jika". Dan skrip ketiga adalah pemulihan satu atau semua kotak sekaligus. Saya mencoba sebisa mungkin untuk mengomentari karya skrip dan penebangan yang ditentukan.
Konten file HandBackUp.sh: Ada satu kehalusan. Jika Anda membuat dan mengedit file skrip untuk bash di Windows, maka ketika Anda mencoba menjalankan skrip, akan muncul kesalahan:
/ bin / sh ^ M: penerjemah buruk: Tidak ada file atau direktori seperti itu , yang ditambahkan oleh editor yang berjalan di bawah Windows ke akhir baris adalah karakter carriage return "CR \ LF", yang tidak ditampilkan oleh editor di Linux. Tapi simbol ini ada di sana, dan belum menghilang. Untuk menghilangkan kesalahan dan menghapus karakter tambahan kami melakukan hal berikut:
$ cat your-script.sh | tr -d '\r' > corrected-your-script.sh
Baik, atau Anda dapat menggunakan utilitas dos2unix, tetapi Anda masih harus menginstalnya:
$ yum install dos2unix $ dos2unix your-script.sh
5) Kami membuat skrip dapat dieksekusi:
$ chmod 0740 /opt/zimbra/BkUpRestScripts/FullBackUp.sh $ chmod 0740 /opt/zimbra/BkUpRestScripts/HandBackUp.sh $ chmod 0740 /opt/zimbra/BkUpRestScripts/Restore.sh
6) Saya sarankan Anda menjalankan skrip dengan tangan Anda dan memeriksa apakah mereka bekerja, dan bagaimana cara kerjanya.
7) Buat tugas dalam CRON untuk cadangan harian kotak surat:
10 0 * * * root /opt/zimbra/ BkUpRestScripts/FullBackUp.sh
8) Nikmati
4. Scripting
Seandainya komentar dalam skrip itu sendiri tidak membantu.
1) Script FullBaclUp.sh:Pada awalnya, variabel ditentukan, mana yang bertanggung jawab untuk apa - semuanya dikomentari.
Berikut ini adalah cek untuk tidak adanya direktori untuk cadangan, jika tidak ada, itu dibuat. Kesimpulan dibuat untuk file log dan ke layar (jika dimulai dengan tangan) tentang keberhasilan atau kegagalan membuat direktori.
Periksa katalog yang hilang dengan tanggal hari ini. Jika tidak ada, itu dibuat, output ke layar dan log dari hasil membuat direktori juga dihasilkan.
Menulis ke file semua kotak surat Zimbra yang ada. Diperlukan untuk reservasi berurutan dari setiap kotak. Menampilkan hasil dari perintah.
Membuat cadangan untuk setiap kotak surat dari daftar yang diterima. Dengan output dari eksekusi ke layar dan ke file log.
Menghapus file dengan daftar kotak. Karena ketiga skrip berfungsi dengan file ini, disarankan untuk membersihkannya setelah setiap kali dijalankan sehingga tidak ada kejutan. Anda dapat membersihkannya sebelum skrip dimulai, tetapi entah bagaimana lebih akrab bagi saya untuk tidak menyimpan data tambahan setelah pekerjaan selesai, tetapi untuk melakukan hal yang sama sebelum dan setelah skrip berjalan adalah skizofrenia ringan.
Berikutnya adalah blok untuk membuat arsip terkompresi.
Memeriksa ketiadaan direktori penyimpanan arsip, membuatnya dalam ketiadaan, dan menampilkan hasil pembuatan di layar dan log
Pengarsipan
Periksa "bukan hari pertama hari ini?" Saya lebih suka menyimpan cadangan untuk hari pertama semua bulan untuk waktu yang lama, ini sudah cukup bagi saya untuk bekerja. Dapat disimpan selama berminggu-minggu, tetapi sering kali ini berlebihan. Tetapi kondisi untuk menyimpan cadangan untuk seluruh periode operasi server surat diatur di atas, sehingga mereka selalu terbaring di sana. Jika nomor tersebut adalah yang pertama, maka arsip yang dihasilkan disalin ke direktori "Mounthly" yang terpisah. Dan untuk menyalinnya di sana, Anda perlu memeriksa apakah ada direktori seperti itu, dan jika tidak, buatlah, yang harus dilaporkan ke layar dan ke file log.
Selanjutnya, penyimpanan dibersihkan - semua cadangan yang lebih dari 2 minggu dihapus, serta arsip yang lebih tua dari 61 hari. Hasil penghapusan ditampilkan di layar dan dalam file log.
Setelah itu skrip menulis waktu penyelesaian ke file log dan ke layar, dan mengakhiri kerjanya.
2) Script HandBackUp.sh:Pada awalnya, variabel juga didefinisikan, juga mengomentari mengapa mereka diperlukan.
Selanjutnya, pengguna diminta untuk memasukkan nama kotak surat yang perlu dicadangkan, tanpa menentukan domain Zimbra. (ada tertulis di undangan untuk masuk), atau pilih cadangan dari semua kotak surat dengan menulis SEMUA atau semua.
Jika Anda memilih untuk mencadangkan semua kotak surat, skrip bekerja hampir sama dengan yang pertama di atas, kecuali bahwa setelah membuat cadangan untuk setiap kotak surat, ia akan bertanya - apakah saya perlu mengarsipkannya?
Jika kotak surat tertentu ditulis, maka keberadaannya diperiksa di Zimbra. Jika kotak dengan nama yang ditentukan ada, maka proses pencadangan kotak ini dimulai, dengan informasi yang sesuai ditampilkan di layar dan dalam file log. Jika kotak yang ditentukan tidak ada, pengguna akan diberitahu tentang ini, dan skrip akan menyelesaikan pekerjaannya.
Setelah cadangan kotak selesai, Anda akan diminta untuk mengarsipkan salinannya. Jika pengguna setuju - ada pemeriksaan untuk tidak adanya direktori untuk menyimpan arsip dan lebih jauh ke bawah daftar, seperti pada skrip pertama.
Setelah pengarsipan selesai, file dengan daftar kotak surat dihapus. Untuk jaga-jaga.
Pada akhirnya, informasi tentang waktu penyelesaian skrip ditampilkan di layar dan dalam file log.
3) Script Restore.sh:Seperti dalam file sebelumnya, pertama - definisi variabel dengan komentar.
Pengguna diminta untuk memilih tanggal cadangan yang akan dipulihkan. Jika tanggal yang ditentukan tidak ada dalam cadangan, skrip diakhiri dengan melaporkan ini.
Jika cadangan untuk tanggal yang ditentukan ada - minta pengguna untuk memasukkan nama kotak yang harus dipulihkan. Untuk mengembalikan semua kotak Anda perlu menulis SEMUA atau semua.
Jika opsi ALL dipilih, skrip membuat daftar file dalam folder cadangan dalam file, memberi tahu tentang hasil pembuatan.
Berikutnya adalah langkah demi langkah pemulihan setiap kotak. Pertama, periksa keberadaan kotak di sistem, jika tidak, itu dibuat, dan kemudian dipulihkan. Informasi tentang setiap operasi ditampilkan dalam file log dan di layar.
Jika kotak tertentu dipilih, itu hampir sama. Periksa keberadaan file dengan nama yang diminta. Output ke layar dan file log hasil.
Memeriksa keberadaan kotak di sistem. Output ke layar dan file log hasil.
Undangan kepada pengguna untuk menyetujui pembuatan kotak jika tidak ada dalam sistem. Output ke layar dan file log hasil.
Buat kotak jika disetujui. Output ke layar dan file log hasil.
Pemulihan kotak surat. Output ke layar dan file log hasil.
Menghapus file dengan daftar kotak pemulihan.
Pada akhirnya, informasi tentang waktu penyelesaian skrip ditampilkan di layar dan dalam file log.
5. Mengenai pemulihan
Jika Anda sedikit memodifikasi skrip ini, maka skrip tersebut cukup cocok untuk memindahkan surat dari server ke server, cukup dengan membuat kotak surat dengan semua konten di tempat baru. Anda juga dapat memulihkan sistem dari awal, karena alasan tertentu lebih mudah untuk menaikkan kembali server Zimbra daripada mencoba menghidupkan kembali yang lama. Seperti dijelaskan di atas, Anda dapat menyimpan gambar mesin virtual yang dikonfigurasi dengan memperluasnya jika perlu, dan mengisinya dengan semua data. Algoritma yang sama untuk berpindah dari satu server Zimbra ke yang lain.
Dan tidak ada utilitas berbayar seperti Zextras yang diperlukan.6. Kesimpulan
Secara umum, tidak ada yang rumit dalam skrip yang saya tulis. Ya, ada banyak syarat di dalamnya, karena saya mencoba memprediksi sebanyak mungkin masalah dan kesalahan dalam pekerjaan mereka, tetapi saya juga mencoba mengomentari naskah sejelas mungkin. Kemungkinan besar, di luar kotak, mereka tidak akan bekerja untuk semua orang. Mungkin seseorang tidak memiliki metode cadangan ini sama sekali. Tetapi saya berharap banyak yang akan merasakan manfaatnya.7. PS:
Ini adalah artikel kedua dalam seri βBagaimana Saya Menerapkan Zimbra.β Yang pertama adalah tentang implementasi, otorisasi LDAP dan pembuatan kotak surat otomatis untuk pengguna AD, di sini .Artikel ketiga tentang pembuatan otomatis dan pembaruan milis berbasis AD di Zimbra OSE ada di sini .Dan saya juga ingin mencatat bahwa ini adalah pengalaman pertama saya menulis skrip pada bash, karena ini, skrip ternyata sangat besar dan "untuk sangat pintar", seperti yang mereka katakan.