blog how to, blog trick, blog tips, tutorial blog, blog hack

Semua Produk ada di sini

Amazon Product

Minggu, 07 Februari 2010

Backup Webserver ke FTP Server dengan script


Setelah kemarin berhasil membuat script untuk membuat subdomain dalam managemen webserver Apache, maka di perlukan aktifitas harian yang dapat menyingkat pekerjaan, yaitu backup otomatis.

Fitur yang diinginkan yaitu :

1. Backup semua home directori “/home/”
2. File backup dilakukan kompresi
3. Backup dilakukan setiap hari, yang otomatis berputar selama 1 minggu, jadi ada 7 file backup harian saja
4. File backup disimpan di FTP server menggunakan FTP klien yang klasik
5. Backup file di lokal di simpan di /home/backup

Maka bash script ang dibuat yaitu :

#!/bin/sh
# Backup data seluruh server /home
# By Prayitna Kuswidianta

#—————————————–
SOURCE_DIR=”/home”
SOURCE_EXCLUDE=”backup”
DEST_DIR=”/home/backup”
NOW=$(date +”%y-%m-%d”)
LASTWEEK=$(date –date=’7 days ago’ +”%y-%m-%d”)
DAY=$(date +”%a”)
TGL=$(date +”%d”)

FTPD=”kusbackup”
FTPU=”prayitna”
FTPP=”prayitna”
FTPS=”192.168.30.32″

#—————————————–
# OPSI
#—————————————-
LocalBackup=No

#——————————————
# Fungsi
#——————————————
DoBackup()
{
echo Compress source data $SOURCE_DIR/$1/
tar -czf $DEST_DIR/$1$DAY$NOW.tar.gz $SOURCE_DIR/$1/
return 0
}
DoDelete()
{
echo Delete file backup $DEST_DIR/$1$DAY*.tar.gz
rm $DEST_DIR/$1$DAY*.tar.gz -f
return 0
}

DoFTPdaily()
{
echo Transfer file to FTP Server $1 , daily backup

#perintah FTP berikut harus ditulis mepet kiri
ftp -u $FTPS < user $FTPU $FTPP
mkdir $FTPD
cd $FTPD
mkdir $1
cd $1
mkdir daily
cd daily
lcd $DEST_DIR
del $1$DAT$LASTWEEK.tar.gz
put $1$DAY$NOW.tar.gz
bye
EOF

return 0
}

DoFTPmonthly()
{
echo Transfer file to FTP Server $1 , monthly backup

#perintah FTP berikut harus ditulis mepet kiri
ftp -u $FTPS < user $FTPU $FTPP
mkdir $FTPD
cd $FTPD
mkdir $1
cd $1
mkdir monthly
cd monthly
lcd $DEST_DIR
put $1$DAY$NOW.tar.gz
bye
EOF

return 0
}

#——————————————-
# Daily backup
#——————————————-
# 1. Hapus backup minggu sebelumnya, yang harinya sama
# 2. Backup
# 3. Simpan ke FTP Server juga

# lakukan iterasi semua folder
X=${#SOURCE_DIR}+1
for d in $SOURCE_DIR/*
do
if [ -d "$d" ]; then
folder=${d:$X}
if [ $folder != $SOURCE_EXCLUDE ]; then
echo Backup $folder start
DoDelete “$folder”
DoBackup “$folder”
DoFTPdaily “$folder”
if [ $TGL=="01" ]; then
DoFTPmonthly “$folder”
fi
if [ $LocalBackup==No ]; then
DoDelete “$folder”
fi
echo Backup $folder finish
fi
fi
done

Penjelasan dari script diatas yaitu :

1. SOURCE_DIR= folder home yang akan di backup
SOURCE_EXCLUDE= folder yang tidak ikut dibackup
DEST_DIR= tujuan lokal folder untuk backup
NOW=$(date +”%y-%m-%d”) –> tanggal hari ini misal : 2009-12-22
LASTWEEK=$(date –date=’7 days ago’ +”%y-%m-%d”) –> tanggal minggu lalu misal :2009-12-15
DAY=$(date +”%a”) –> hari ini misal :Tue
TGL=$(date +”%d”) –> tanggal hari ini, misal : 15

FTPD=”kusbackup” –> directori tempat backup di FTP server
FTPU=”prayitna” –> user ke FTP server
FTPP=”prayitna” –> password ke FTP server
FTPS=”192.168.30.32″ –> alamat Ip FTP server
2. Fungsi yang dibuat yaitu :
DoBackup() –> untuk membackup file dalam folder dibawah home
DoDelete() –> untuk menghapus file backup di lokal
DoFTPDaily() –> upload file hasil backupke FTPserver di folder daily
DoFTPMonthly() –> upload file hasil backup di FTP server di folder monthly
3. Dalam penghapusan file di lokal ada perbedaan cara dengan penghapusan file di FTP server, sebab misal nama file yaitu “NamaFileTue2009-12-22.tar.gz” maka cara penghapusan di lokal cukup dengan “rm NamaFileTue*.tar.gz” (yaitu menghapus backup file hari selasa) akan tetapi fi FTP server harus disebutkan nama filenya secara lengkap.
4. Dalam menuliskan perintah di script, ketika eksekusi perintah / aplikasi , harus dituliskan mepet kiri seperti halnya perintah di fungsi DoFTPDaily().

0 komentar:

Posting Komentar

 

Klik disini

Site Link


Search Engine Optimization

© Black Newspaper Copyright by id Windows Business Center | Template by Blogger Templates | Blog Trick at Blog-HowToTricks