Ini adalah versi yang sedikit lebih "primitif" dari metode backup menggunakan Amanda yang dulu pernah saya tulis cara instalasinya.
Backup server menggunakan sistem operasi Ubuntu-10.04 Server Edition 64bit, dengan beberapa tools yang di-install dari paket Ubuntu di bawah ini:
- GNU tar versi 1.22. Digunakan sebagai backup tool utama, mem-backup data-data dari backup client ke dalam backup server.
- dd (coreutils) versi 7.4. Digunakan untuk menyalin backup file (yang dihasilkan oleh
tar
) dari harddisk ke dalam tape media. - mt-st versi 1.1. Tool penunjang untuk memanipulasi tape media.
- mtx versi 1.3.12. Tool penunjang untuk memanipulasi perangkat auto loader.
Backup client terdiri beberapa mesin Windows dan Linux, masing-masing bertindak sebagai file server dengan menyediakan shared-folder.
Tahapan proses backup:
- Menge-mount network shared-folder
- Mem-backup data di shared-folder menggunakan perintah tar
- Menyalin file hasil backup ke media tape
Menge-mount shared-folder
Parameter dan option yang digunakan sewaktu menge-mount shared-folder:ro,username=nama_user,password=password_user,iocharset=utf8
Dengan option seperti itu, mounting shared-folder dilakukan read-only, menggunakan username dan password sesuai dengan yang terdaftar di mesin client. Option iocharset
digunakan supaya file-file yang mempunyai karakter-karakter "aneh" di namanya atau nama file-nya cukup panjang, juga ikut ter-backup.
Jadi, isi script untuk melakukan mount yang saya gunakan adalah sebagai berikut:
#---script start---
!#/bin/bash
smbuser="bkpuser"
smbpassword="W1np@ssw0rd"
smbshare="//winsvr/shared-folder"
mountpoint="/mnt/winmount"
/bin/mount -t cifs -o ro,iocharset=utf8,username="$smbuser",password="$smbpassword" "$smbshare" "$mountpoint"
#---script end---
Mem-backup dengan tar
Parameter dan option yang digunakan sewaktu menjalankan perintah tar
:
--create:
operasi tar untuk membuat file backup. Operasi lain misalnya adalah--list
untuk melihat isi suatu archive, atau--extract
untuk meng-ekstrak kembali suatu archive.--ignore-failed-read:
option supayatar
tetap meneruskan prosesnya jika sewaktu mem-backup ada file yang gagal di-backup.--tape-length:
option untuk menentukan ukuran maksimum dari file hasil backup. Berguna terutama jika nantinya file hasil backup akan disalin ke media lain - misalnya tape backup, yang kapasitasnya terbatas.- --new-volume-script: option untuk memanggil script kecil yang berfungsi untuk menentukan penamaan file hasil backup, jika hasil backup di-split menjadi lebih dari satu file.
--exclude-from:
option untuk membuat perkecualian atas file-file tertentu supaya tidak diikutkan dalam proses backup.--listed-incremental:
untuk memberi perintah kepadatar
agar melakukan incremental backup, yaitu backup hanya terhadap file-file yang berubah sejak terakhir kali dilakukan backup.--no-check-device:
optiontar
agar mengabaikan device number dari media yang sedang dibackup. Berguna untuk metode backup incremental dan jika media yang dibackup adalah shared-drive (dari NFS, smbfs, cifs). Tanpa option ini, network backup kemungkinan besar akan gagal melakukan incremental, sehingga yang terjadi adalah selalu full backup.--label:
untuk memberi label pada file hasil backup. Ini berguna terutama jika hasil backup akan disimpan di dalam media tape, yaitu bisa memudahkan untuk mengetahui isi dari tape tersebut.--file:
untuk menentukan nama file hasil backup.
Sehingga isi script yang saya gunakan untuk menjalan tar dalam proses backup adalah sebagai berikut:
#---script start---
gnutar="/bin/tar"
scriptdir="/home/eharianto/scripts"
exclfile="/home/eharianto/exclude-backup"
dirtobackup="user"
bkpfile="user-daily"
bkpdir="/home/eharianto/backup"
$gnutar --create --tape-length 34603008 --no-check-device --ignore-failed-read --new-volume-script "$scriptdir"/multi-vol --label "$bkpfile" --exclude-from "$exclfile" --listed-incremental "$scriptdir"/user-list --file $bkpdir$bkpfile "$dirtobackup"
#---script end---
Menyalin file hasil backup kedalam tape media:
Isi script untuk menyalin file backup kedalam tape media:
#---script start---
mt="/bin/mt"
dd="/bin/dd"
cd $bkpdir
$mt -f /dev/st0 rewind
$mt -f /dev/st0 setblk 32768
$mt -f /dev/st0 compression off
dd if="$bkpfile" of="/dev/st0" bs=32768
#---script end---
Me-restore dari file backup
Me-restore file tar hasil backup langsung dari tape device:
# /bin/tar --extract --verbose --file /dev/st0
Me-restore dengan menyalin terlebih dulu file tar dari tape device ke harddrive:
# /bin/dd if=/dev/st0 of=/home/eharianto/bkpfile.tar bs=32768
# /bin/tar --extract --verbose --file /home/eharianto/bkpfile.tar
Melihat isi dari file tar hasil backup:
# /bin/tar --list --verbose --file /home/eharianto/bkpfile.tar
Isi file /home/eharianto/exclude-backup
:*.mp3
*.avi
*.mp4
*.wma
Isi file /home/eharianto/scripts/multi-vol
(saya menyalin dari manual GNU tar):
#! /bin/sh
echo Preparing volume $TAR_VOLUME of $TAR_ARCHIVE.
name=`expr $TAR_ARCHIVE : '\(.*\)-.*'`
case $TAR_SUBCOMMAND in
-c) ;;
-d|-x|-t) test -r ${name:-$TAR_ARCHIVE}-$TAR_VOLUME || exit 1
;;
*) exit 1
esac
echo ${name:-$TAR_ARCHIVE}-$TAR_VOLUME >&$TAR_FD