cara encrypted remote backup menggunakan rsync

Dokumen ini menjelaskan metode yang saya gunakan untuk melaksanakan remote backup ke kantor file dan database. Hal ini menunjukkan bahwa rsync adalah alat yang sangat berguna untuk backup. Dokumen memiliki hanya ide kasar saya menyiapkan sistem cadangan menggunakan rsync.

Gambar : Pertama, Persiapkan Hal Yang Ingin Dibackup

Secure Copy dari remote host

Option atau opsi yang dipilih adalah :

  • Data dari remote server harus dalam archived mode
  • Rsync bekera dalam SSH sebagai secure channel, send/receive hanya menggunakan files dan remove files pada tujuan akhir jika file sumber akan dihapus untuk pengabungan.

Server yang digunakan untuk  backup berjalan di Openbsd, Sementara server sumber yang didukung berjalan pada Red Hat Linux. Server juga dapat berjalan pada sistem operasi lain seperti Freebsd.

Langkah-Langkah

1.Install Aplikasi rsync dengan Paket RPM atau OpenBSD. Install pada dua sisi server; pada server backup dan jug di server sumber yang berniat untuk digunakan sebagai backup.

2.Install chroot environment.

3.Buat akun user untuk rsync. Sebagai contoh user disini menggunakan nama rsyncUID. Di redhat:

adduser rsyncUID -g users

4.Jalankan skrip create_chroot_env.sh.
Saya telah memodifikasi bagian dari script karena aku tidak mampu untuk logon dari server cadangan saya. Anda dapat menemukan script dimodifikasi saya disini.

Anda dapat mengedit APPS variable di dalam skrip untuk menambah atau menghapus aplikasi.

./create_chroot_env.sh rsyncUID

5.Disable login untuk akun ( rsyncUID) , tambahkan simbol * pada kolom password di file. (use vipw). Ini untuk menghidari direct login.

6.tambahkan trailing /./ pada akhir direktori user home.

rsyncUID:*:510:100:rsync user:/home/rsyncUID/./:/bin/bash

Perhatian : Semua langkah di atas kecuali nomor 1 dieksekusi pada server yang ingin Anda backup.

7. Generate ssh key agent pada server backup. key akan tersedia di /home/rsyncUID/.ssh/ Berikut adalah langkah-langkah untuk membuat kunci, hal ini dilakukan hanya sekali:

su - rsyncUID ( logon to the newly created rsync user)
cd /home/rsyncUID/.ssh/
ssh-keygen -t dsa ( simply press enter for any passphrase)

8.Copy generated key dengan ekstensi *.pub ke server yang ingin dibackup.

scp id_dsa.pub root@IP_Server_to_backup:/tmp

9. Di server lainnya mana ada sumber data, lakukan hal berikut:

su - rsyncUID
 mkdir .ssh
 cd .ssh
 cat /tmp/id_dsa.pub >> authorized_keys2 (transfer keys from backup server)

10.Coba koneksi dari Server backup, untuk memastikan anad tidak pada top level di rangka root.

# ssh -l rsyncUID IP_Source_data_Server
# cd /
# ls -l

11. Sekarang, server backup dari network internal bisa logon langsung dengan rsyncUID pada server sumber tanpa password, dengan chroot enabled. Bagian ini sangat penting ketika kita inigin schedule backup melalui crontab.

12.Coba untuk rsync, command harus bekerja dan tidak mengeluarkan error  dan files di copy ke backup server:

Pada Server sumber:

su - rsyncUID
mkdir source
touch source/testfile.txt
Dari Backup server:

rsync -av --delete -e ssh chrootssh@wwwdev.asiaosc.org:~/source ~/

Anda akan melihat report seperti ini:

receiving file list ... done
source/
source/testfile.txt
wrote 32 bytes read 135 bytes 66.80 bytes/sec
total size is 0 speedup is 0.00

Ini adalah skrip sederhana untuk melakukan backup dokument pada webroot, databases dan CVS. Hanya menggunakan Rsync dari server cadangan.

$HOME/rsyncUID/script/backup.sh

# $Id: backup.sh,v 1.1.1.1 2003/01/24 12:04:48 pazli Exp $
 #
 #!/usr/local/bin/bash

echo === Begin Backup Databases on Live Machine `date`
 /usr/local/bin/rsync -avz --delete -e ssh rsyncUID@IP_OF_THE_SERVER:/home/rsyncUID/database/ /home/rsyncUID/database/

echo
 echo ==== Begin Backup CVSROOT `date`
 /usr/local/bin/rsync -avz --delete -e ssh rsyncUID@10.1.9.213:/data/cvsroot/ /home/rsyncUID/cvsbackup/cvsroot

/usr/local/bin/rsync -avz --delete -e ssh rsynUID@10.1.9.213:/data/cvsroot_msm/ /home/rsyncUID/cvsbackup/cvsroot_msm

echo
 echo ==== BEGIN Backup Webroot on Live Machine `date`

backuphistoryfolder=~/previous/webroot/old.`date +%Y%m%d-%H%M`
 backupfolder=~/webroot/
 sourcefolder=/var/www/html/

mkdir -p $backuphistoryfolder

rsync -avrtz --exclude "usage/" --delete --backup \
 --backup-dir $backuphistoryfolder -e ssh \
 rsynUID@IP_OF_THE_SERVER:$sourcefolder $backupfolder

# remove only empty folder
 rmdir $backuphistoryfolder

echo =======End Backup Live Databases, Live Webroot , CVSROOT ======== ; echo;

13.Enable crontab pada schedule backup.

su – rsyncUID
 crontab -e

Tambakan pada baris di crontab:

# Backup Live Databases, CVSROOT, Webroot on Live
 15 23 * * 1-5 ~/script/backup.sh >>/var/log/backup.sh.log 2>&1

14.Enable users untuk melihat backup data sebelumnya pada backup server melalui samba services. Jadi, nanti windows users bisa mengakses dengan Windows Network-Neigbourhood untuk menemukan file backed up sebelumnya.

Parts of my /etc/samba/smb.conf

[netfiles]
 comment = netfiles syncronized
 path = /home/rsyncUID/netfiles
 valid users = pazli user1 user2 user3
 public = no
 writable = no

[previous]
 comment = previous changed files
 path = /home/rsyncUID/previous
 valid users = pazli user1 user2 user3
 public = no
 writable = no

[webroot]
 comment = Live server webroot
 path = /home/rsyncUID/webroot
 valid users = pazli user1 user2 user3
 public = no
 writable = no

Kemudian, restart samba service.

Bagaimana dengan database backup?

Mysqldump akan membackup database secara lokal, dan rsync melalukan copy dengan transfer data dari backup server pada internal network.

Root crontab to backup database locally:

0 22 * * 1-5 /root/database/backup-database.sh

The script might look like this:

#!/bin/bash

d=`date +%Y-%m-%d_%H%M`

mysqldump -pxxxxxx wikidb > /home/rsyncUID/database/wikidb.sql
 mysqldump -pxxxxxx postnuke > /home/rsyncUID/database/postnuke.sql

cd /home/rsyncUID/database
 tar czf wikidb.${d}.tar.gz wikidb.sql
 tar czf postnuke.${d}.tar.gz postnuke.sql

# Optionally the script will email backup database.
 # /usr/bin/uuencode /home/rsyncUID/database/wikidb.${d}.tar.gz wikidb.${d}.tar.gz | /bin/mail -s 'mysqldump: Opensource wikidb' pazli@mimos.my

# /usr/bin/uuencode /root/database/postnuke.${d}.tar.gz postnuke.${d}.tar.gz | /bin/mail -s 'mysqldump: Opensource postnuke' pazli@mimos.my

Bagaimana restore database dari backup?

Contoh:

Restore database ke server baru:

mysqladmin -p create database_name
 tar xzvf database.tar.gz
 mysql -p database_name < database.sql mysql -p GRANT select, insert, update, create, alter, delete, drop ON database_name.* TO database_user@localhost IDENTIFIED BY 'xxxxxx'; flush privileges; Backing up Windows->Unix.

1.Share folder dari windows dengan password
eg. Windows Anda Hostname: //leywin
shared foldera anda adalah Data
2.Mount windows shared folder pada unix.
Linux untuk mount windows:

mkdir /mnt/pazliwin98
 smbmount //leywin/data /mnt/pazliwin98/

Openbsd untuk mount windows:
saya install shlight dari Openbsd Ports sebagai smbmount substitute:

cd /usr/ports/net/sharity-light/
 make install
 /usr/local/sbin/shlight //leywin/data/ /mnt/pazliwin98/

Tambahkan windows hostname pada /etc/hosts jika laporan error muncul.

3.Terakhir, schedule backup anda dengan skrip sederhana saya yaitu rsync script.

# $Id$
 #
 #!/usr/local/bin/bash

backuphistoryfolder=~/personalhistory/old.`date +%Y%m%d-%H%M`
 backupfolder=~/personal/
 sourcefolder=/mnt/pazliwin98/

mkdir -p $backuphistoryfolder

rsync -avz --delete --backup \
 --backup-dir $backuphistoryfolder $sourcefolder $backupfolder

# remove only empty folder
 rmdir $backuphistoryfolder

Pengetahuan Lebih Lanjut:

1.Untuk configure CHROOT
http://mail.incredimail.com/howto/openssh/
2.Untuk backup mysql database
http://www.theprojects.org/tutorials/mysqldump.php

Leave a Comment

Your email address will not be published.