Archive

Posts Tagged ‘backup’

Rsync Backup

January 5th, 2009

Saat anda mengembangkan project website yang lumayan banyak pengunjungnya, anda tidak mungkin langsung membuat code di halaman utamanya bukan, karena pasti langsung keliatan kalo ada error, dan itu sangat menganggu user. Anda mungkin mempunyai folder dengan nama anda sendiri. Saya mempergunakan nama *dev* untuk development dan *real* untuk yang bener2 diakses oleh user.

Biasa nya anda akan rutin mengcopy file dari dev ke real setiap kali anda yakin bahwa sudah tidak ada bug lagi di dev. Tetapi proses copy ini selalu berulang2 dan memakan waktu. Sehingga saya memutuskan untuk membuat suatu script untuk melakukan tugas itu. Saya hanya mencoba script ini di Linux, tapi saya rasa ada versi rsync untuk Windows.

#!/bin/sh
DAY=`date "+%Y%m%d"`
TIME=`date "+%H:%M:%S"`
echo Start backup $DAY $TIME
echo ---- Start backup $DAY $TIME >> backup.log
# First backup the old data
FOLDERTOBACKUP='real'
echo '-- Zip the old file --'
tar zcf $FOLDERTOBACKUP$DAY.tar.gz $FOLDERTOBACKUP
echo Done!
# Do the backup
SOURCE='dev/'
TARGET='real'
OPTS="-av
--delete
--exclude=application/config
--exclude=application/admin/config
--exclude=admin/controllers/login.php
--exclude=cron_*.php
"
echo "-- Copy file --"
echo Copy Options : $OPTS
rsync $OPTS $SOURCE $TARGET >> backup.log
echo Done!
# End Backup
TIME=`date "+%H:%M:%S"`
echo End backup $DAY $TIME
echo ---- End backup $DAY $TIME >> backup.log

Code di atas untuk pertama mengkompresi dulu semua file yang ada di *real* (jaga2 kalo ada masalah dengan pemindahan sistem, tinggal di extract ulang aja). Lalu lakukan sync (penyamaan data) dari dev ke real. Hebat nya rsync ini, anda engga perlu mengcopy semua file. Hanya file yang dibutuhkan aja yang dipindahin. Saya akan jelasin option2 simple nya.

  1. -a digunakan untuk *archive*, ini kumpulan dari banyak perintah, yang berarti “buatlah copy yang hampir sama persis dengan aslinya”
  2. -v adalah singkatan dari *verbose*. Yang artinya kasih keterangan lebih detail. Program akan memberikan informasi file mana aja yang di delete, dan yang di copy. Semua informasi tersebut akan dicopy ke log file
  3. -delete dipergunakan untuk menghapus file2 yang hilang dari dev.
  4. -exlcude dipergunakan untuk tidak memasukan file2 yang ada dengan pattern ini. Engga perlu tulis direktori lengkap nya. Hanya tulis pattern nya saja.

Satu lagi yang hebat dari rsync adalah dia Remote Sync. Jadi sebenernya diciptakan untuk bisa backup remote. Anda bisa akses computer laen dengan ganti source dan targetnya di bagian ini :

SOURCE='dev/'
TARGET='real'

contoh akses ke server laen:

TARGET='[email protected]:/path/to/directory'

dan itu juga bisa diterapkan kepada sourcenya.
Sekian tutorial dari saya, sampai ketemu di tutorial selanjutnya.

Referensi

Share

linux , ,

logrotate untuk backup mysql

August 11th, 2008

Saya sempet cari beberapa alternatif untuk backup server mysql harian, salah satu alternatif yang kepikiran sebenernya pake cron job. Tapi cron akan membuat log nya numpuk jadi banyak sekali, karena engga pernah di delete. Apalagi kalo database nya udah gede banget. Setelah browsing2 di internet, saya menemukan solusi untuk backup mysql pake logrotate.

logrotate adalah fungsi yang sebenernya digunakan untuk backup log yang udah lama, terus di rotasi. Log yang udah lama akan di compress. Log yang baru akan dimulai lagi dari file kosong. Log yang sudah lewat umurnya akan otomatis di delete. Biasanya digunakan hanya untuk file2 log seperti log apache, system dll.

Simple nya sih, log rotate akan mengganti backup.sql.gz terakhir jadi backup.sql.gz.1 yang 1 jadi 2, 2 jadi 3 dan seterusnya. Terus yang terakhir dibuang. Jadi jumlah backup nya selalu sama sesuai dengan setting nya. Misalnya 1 minggu atau 1 bulan jatah punya backup. Setelah logrotate melakukan tugas nya, setting log rotate agar menjalankan mysqldump sehingga keluar dump baru backup.sql.gz yang terbaru.

Bentuk file setting nya kurang lebih seperti ini :

/dumps/mybase.sql.gz {
rotate 60
daily
nocompress
nocopytruncate
postrotate
HOME=/root mysqldump –opt mybase | gzip > /dumps/mybase.sql.gz
endscript
}

Save file ini di bawah /etc/logrotate.d/ Semua file yang ada di bawah situ akan dijalankan waktu logrotate dijalankan.

Terus sebelum logrotate bisa dipake harus dilakukan backup pertama dengan menjalankan sendiri perintah ini

mysqldump –opt mybase | gzip > /dumps/mybase.sql.gz

Jangan lupa buat dulu folder /dumps nya ^^

Setelah itu kita coba jalanin logrotate untuk pertama kali nya. dengan cara paksa dengan perintah ini

logrotate -f /etc/logrotate.d/mysql-dumps

Kalo berhasil, akan keluar file dengan ext .1 selain dari pada file .gz aslinya. Kalo udah begitu proses sudah berjalan dengan baik, dan backup akan dijalankan otomatis secara harian.

Proses lengkap nya bisa dibaca di sini

Share

linux , ,

Switch to our mobile site