Pages

Saturday, October 9, 2010

Tutorial utk auto backup guna rsync, bash dan cron



Aku buat satu tutorial hari ni. Sejak kehilangan data ketika Western Digital HDD 640 GB aku rosak, aku terus mencari satu cara utk backup data2 penting aku ke tempat lain. Akhirnya setelah mencuba beberapa cara, rsync dapat memenuhi apa yang aku inginkan. Aku ingin buat backup fail2 penting dari folder dalam Home (HDD1) aku ke HDD2. Begini caranya, untuk backup folder Documents (dalam partition Home, HDD1) aku ke folder Backup1 (dalam HDD2), ini arahan yang aku lakukan dalam terminal:

sudo rsync -av --progress --delete --log-file=/media/Home/auaa/Documents/Rsync_Logs/$(date +%Y%m%d)_rsync.log /media/Home/auaa/Documents /media/Backup1/Backup

di mana:
-av, 'a' bermaksud arkib (menyalin semua data termasuk keizinan, masa dll). 'v' bermaksud 'verbose' di mana kita boleh tahu apa yang dijalankan, baik di terminal atau pun di dalam fail log.
--delete, menyemak perubahan antara sumber dan destinasi (ia akan delete fail pd destinasi jika fail yang sama pd sumber sudah di delete)
--log-file=/media/Home/auaa/Documents/Rsync_Logs ialah folder di mana fail log akan disimpan.
$(date +%Y%m%d)_rsync.log ialah nama fail log itu nanti, siap dengan tarikh sekali.
/media/Home/auaa/Documents adalah sumber
/media/Backup1/Backup adalah destinasi

Kita masih boleh terus melakukan arahan yang sama di terminal berulang kali..., atau untuk menyenangkan lagi diri (hehe  :D ), mari buat satu bash skrip dengan cara bawah ni. Buka apa juga teks editor kegemaran korang (aku gunakan Gedit dalam Linux Mint), salin dan tampal arahan rsync tadi macam ni:

#!/bin/bash
sudo rsync -av --progress --delete --log-file=/media/Home/auaa/Documents/Rsync_Logs/$(date +%Y%m%d)_rsync.log /media/Home/auaa/Documents /media/Backup1/Backup

Simpan kat Desktop dengan menamakan fail tersebut sebagai Backup_Skrip.sh (contoh) dan jadikan ia executable dengan jalankan arahan berikut di terminal:

sudo chmod +x /home/your-username/Desktop/Backup_Skrip.sh
Gantikan 'your-username' dengan username korang, atau dengan klik kanan fail Backup_Skrip.sh itu, pilih Properties, Permissions dan kemudian tick pada kotak execute.

Kemudian, korang boleh klik dua kali fail Backup_Skrip.sh tersebut, dan arahan yang terkandung di dalamnya akan dijalankan di terminal (korang kena masukkan password) atau boleh juga gunakan cron utk lakukannya secara automatik. Begini caranya:

Salin fail Backup_Skrip.sh itu ke /root dengan menaip:
sudo cp /home/your-username/Desktop/Backup_Skrip.sh /root

kemudian taip: sudo crontab -e

korang akan nampak dalam terminal:
# m h  dom mon dow   command

di bawahnya, sila taip:
0 22 * * * /root/Backup_Skrip.sh


yang bermaksud (dari kiri ke kanan):
1. Jumlah minit selepas jam (0 hingga 59)
2. Satu jam dalam masa tentera (24 jam) format (0 hingga 23)
3. Hari bulan (1 hingga 31)
4. Bulan (1 hingga 12)
5. Hari dalam minggu (0 adalah Isnin, 7 adalah Ahad)
6. Perintah (command) yang perlu dijalankan

Jadi pada pukul 22:00 (10:00 malam) setiap hari, root akan menjalankan script tersebut, tanpa password sudo (kerana memang dijalankan sebagai root).

Sekarang tekan Control-X, kemudian "Y", kemudian tekan Enter.

Anda akan dapt lihat: 'crontab: installing new crontab'

Dan.... selesai!



Nota: boleh juga gantikan masa, tarikh, hari tersebut dengan:

@reboot     Run once, at startup
@yearly     Run once  a year     "0 0 1 1 *"
@annually   (same as  @yearly)
@monthly    Run once  a month    "0 0 1 * *"
@weekly     Run once  a week     "0 0 * * 0"
@daily      Run once  a day      "0 0 * * *"
@midnight   (same as  @daily)
@hourly     Run once  an hour    "0 * * * *

Aku guna camni (backup akan dijalankan setiap hari, jam 12.00 tengah malam):
@daily /root/Backup_Skrip.sh


Jadi sekarang korang dah tahu bagaimana nak backup fail2 penting korang secara automatik. Itu adalah contoh utk folder Documents dalam Home, boleh juga lakukan perkara yang sama pada folder2 lain. Aku buat camni:

#!/bin/bash
sudo rsync -av --progress --delete --log-file=/media/Home/auaa/Documents/Rsync_Logs/$(date +%Y%m%d)_rsync.log /media/Home/auaa/Documents /media/Backup1/Backup
sudo rsync -av --progress --delete --log-file=/media/Home/auaa/Documents/Rsync_Logs/$(date +%Y%m%d)_rsync.log /media/Home/auaa/Digicam /media/Backup1/Backup
sudo rsync -av --progress --delete --log-file=/media/Home/auaa/Documents/Rsync_Logs/$(date +%Y%m%d)_rsync.log /media/Home/auaa/Misc /media/Backup1/Backup
sudo rsync -av --progress --delete --log-file=/media/Home/auaa/Documents/Rsync_Logs/$(date +%Y%m%d)_rsync.log /media/Home/auaa/Music /media/Backup1/Backup
sudo rsync -av --progress --delete --log-file=/media/Home/auaa/Documents/Rsync_Logs/$(date +%Y%m%d)_rsync.log /media/Home/auaa/Pictures /media/Backup1/Backup
sudo rsync -av --progress --delete --log-file=/media/Home/auaa/Documents/Rsync_Logs/$(date +%Y%m%d)_rsync.log /media/Home/auaa/Videos /media/Backup1/Backup
sudo rsync -av --progress --delete --log-file=/media/Home/auaa/Documents/Rsync_Logs/$(date +%Y%m%d)_rsync.log /media/Home/auaa/Downloads /media/Backup1/Backup


Selamat mencuba !  ;)

No comments:

Post a Comment