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 !  ;)

My Linux Mint and Windows7 got problem



I'm not sure where the problem came from but recently I'm having problem in using both of my Mint and Windows7. I can't also access my 3rd Hard drive, 1 TB which contain my backup copies of all the important files.

In Mint, the processor seems busy handling something from the moment I logged on to Windows until now, it's been 10 minutes ! I suspected the problem is coming from my 3rd HDD.

I'm scheduling a backup using rsync everyday, my Mint will automatically backup the important folders set from Home to HDD2 and HDD3. Not sure what is wrong, the loading time now is more than the normal.

If I unplugged the HDD3, everything seems okay....