Gambaran keseluruhan
Walaupun Vultr memang mempunyai sistem sandaran untuk keseluruhan gambar sistem, ini berfungsi pada tahap blok, dan memerlukan sandaran dikembalikan ke VM sebelum data dapat dipulihkan. Selain itu, sandaran hanya disimpan dalam jangka masa yang singkat, dan tidak memberikan penyelesaian tambahan yang benar.
Enter Duplicity - Duplicity dibina berdasarkan rsync legendaris dan menyediakan kemampuan untuk menyimpan cadangan tambahan bersamaan dengan menyulitkan data semasa rehat melalui GPG. Ia mematuhi Posix, dan hanya memindahkan delta antara jalan sandaran, sehingga mengurangkan keseluruhan keperluan lebar jalur.
Menetapkan persekitaran
Terminologi
- Host sumber - Pelayan yang akan disandarkan datanya. Untuk tutorial ini, ia mempunyai alamat IP: 10.1.10.1
- Host sandaran - Pelayan destinasi untuk sandaran. Untuk tutorial ini, ia mempunyai alamat IP: 10.1.10.2
- / backupdir - Direktori sumber pada host sumber yang digunakan untuk sandaran dalam tutorial ini. Anda boleh mengubahnya agar sesuai dengan persekitaran anda.
- / destdir - Direktori tujuan pada host sandaran yang digunakan untuk sandaran dalam tutorial ini. Anda boleh mengubahnya agar sesuai dengan persekitaran anda.
- Sandaran penuh - Salinan keseluruhan dataset sumber.
- Cadangan tambahan - Salinan semua perubahan yang dibuat sejak sandaran terakhir.
Memasang Duplikat
Ubuntu 14.04:
sudo apt-get update
sudo apt-get install duplicity python-paramiko
CentOS (memerlukan EPEL):
sudo yum install duplicity python-paramiko
Ubuntu 12.04 / Debian 7:
sudo apt-get update
sudo apt-get install ncftp python-paramiko python-pycryptopp lftp python-boto python-dev librsync-dev
wget https://launchpad.net/duplicity/0.7-series/0.7.02/+download/duplicity-0.7.02.tar.gz
tar xzvf duplicity*
cd duplicity*
sudo python setup.py install
Kita harus memasang dari sumber kerana pakej Duplicity dalam Debian 7 dan Ubuntu 12.04 rosak kerana perubahan perpustakaan SSH backend.
Periksa semula bahawa Duplicity dipasang dengan menjalankan:
duplicity -v
Ia harus mengembalikan output berikut (versi mungkin berbeza):
duplicity 0.6.18
Menyiapkan pengesahan tanpa kunci untuk SSH
Langkah seterusnya adalah untuk menyediakan pengesahan berasaskan sijil untuk SSH antara host sandaran dan host sumber. Ini akan membolehkan pelayan sumber untuk SSH masuk ke hos sandaran tanpa menaip frasa laluan. Vultr mempunyai artikel hebat yang menerangkan cara melakukannya: Bagaimana Saya Menjana Kunci SSH .
Sandaran
Menjalankan sandaran pertama (penuh)
Mari jalankan sandaran penuh! Ini akan menghantar salinan lengkap data dari pelayan sumber ke destinasi.
duplicity full -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Anda boleh menambahkan folder tambahan dengan memasukkan beberapa --include="[dir]"
pernyataan.
Yang --no-encryption
menyatakan bahawa data tidak akan disulitkan di destinasi. Data akan dienkripsi semasa pengangkutan ketika melalui terowong SSH.
Yang --exclude="**" /
pilihan adalah helah dengan semua sandaran yang hanya dalam termasuk senarai (dan apa-apa lagi).
Menjalankan cadangan tambahan
Menjalankan cadangan tambahan sangat mudah - ubah full
bendera ke incremental
bendera.
duplicity incremental -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Automasi
Tulis skrip automatik
Harus menjalankan perintah ini setiap kali anda memerlukan sandaran adalah seretan - bagaimana jika kita mempunyai skrip untuk menanganinya?
Skrip sandaran penuh
Jalankan arahan.
nano /usr/local/bin/backup-full
Tambahkan kandungan berikut.
#!/bin/bash
duplicity full -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Skrip sandaran tambahan
nano /usr/local/bin/backup-incremental
Tambahkan kandungan berikut.
#!/bin/bash
duplicity incremental -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Menjadikan skrip boleh dilaksanakan
Untuk membuat skrip dapat dilaksanakan, jalankan perintah berikut.
chmod +x /usr/local/bin/backup-*
Sekarang anda boleh melakukan sandaran dengan menjalankan backup-full
dan backup-incremental
dari dalam cangkang. Cukup sejuk!
Persediaan cron
Mari buat sandaran automatik! Dengan menyiapkan cron untuk menjalankan skrip di atas pada waktu yang ditentukan, kita dapat memastikan bahawa sandaran dilakukan secara berkala.
Jalankan arahan berikut.
crontab -e
Tambahkan yang berikut ke bahagian bawah fail.
10 01 * * 1,2,3,4,5,6 backup-incremental
10 01 * * 7 backup-full
Ini akan menjalankan sandaran penuh setiap hari Ahad jam 1:10 pagi, dan akan menjalankan cadangan tambahan setiap hari pada jam 1:10 pagi juga.
Pemulihan
Godzilla telah memusnahkan Seattle dan kita mesti dapat mendapatkan kembali data dari VPS sandaran di New York!
duplicity --no-encryption --file-to-restore / ssh://user@backupserver:22/destdir/
Sekiranya kita perlu memulihkan data dari 3 hari yang lalu:
duplicity --no-encryption -t 3D --file-to-restore / ssh://user@backupserver:22/destdir/
The -t 3D
cara pilihan memulihkan sandaran dari tiga hari lepas. Pilihan serupa seperti -t 1M
(untuk sebulan yang lalu) atau -t 5H
(selama 5 jam yang lalu) juga berfungsi.