Network Backup menggunakan GNU tar

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 supaya tar 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 kepada tar agar melakukan incremental backup, yaitu backup hanya terhadap file-file yang berubah sejak terakhir kali dilakukan backup.
  • --no-check-device: option tar 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

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top