Friday 6 August 2010

SFTP backup database อัตโนมัติ

ftp database อัตโนมัติ ทุก ๆ วัน โดยที่เราไม่ต้องมาสั่งงาน จะเป็นการ ftp ข้อมูลจาก freebsd ไปยัง freebsd อีกตัวหนึ่ง เพื่อเอาไว้ดึง Report
1. gen rsa key ขึ้นมา  เพื่อเอา  public key ไปไว้ในเครื่องที่เราต้องการจะ remote ไปนั่นเอง
mirror# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
1f:f8:e9:29:9f:a1:33:1b:be:5f:62:90:81:0d:28:6c root@mirror.bansang.ath.cx
The key's randomart image is:
+--[ RSA 2048]----+
| .   ..          |
|  E .  +         |
| . .  . o        |
|         +       |
|        S .      |
|         + o     |
|        . B .    |
|       .+= *     |
|        =O*      |
+-----------------+
2. เราจะได้ไฟล์ id_rsa และ  id_rsa.pub  อยู่ที่ /root/.ssh
mirror# cd .ssh/
mirror# ls
id_rsa          id_rsa.pub      known_hosts
3.copy id_rsa.pub ที่ได้ไปไว้ ใน server ปลายทาง ที่เราจะ remote ไปหา
mirror# scp id_rsa.pub root@192.168.254.4:~/.ssh/authorized_keys
Password:
id_rsa.pub                                    100%  408     0.4KB/s   00:00
mirror#
เรียบร้อย
4. สร้าง script
mirror# cd /home
mirror# pico sftpbackup.sh
#!/bin/sh
cd /home
HOST='192.168.254.4'
USER='kom'
PASSWD='ไม่บอก'
FILE='/usr/home/postgres_backup/Daily/*'
sftp  $HOST <
mget $FILE
quit
END_S
exit 0
mirror# chmod 777 sftpbackup.sh
mirror# ./sftpbackup.sh
Connecting to 192.168.254.4...
sftp>
sftp>
sftp> mget /usr/home/postgres_backup/Daily/*
Fetching /usr/home/postgres_backup/Daily/bansang39.sql to bansang39.sql
/usr/home/postgres_backup/Daily/bansang39.sql   3%   72MB  32.8MB/s   01:11 ETA
เรียบร้อย แค่นี้ก็จะได้ databse.sql มาไว้ที่เครื่อง
5. สร้าง script เพื่อ create database อัตโนมัติ
 mirror# pico restore.sh
#!/bin/sh
#su postgres
dropdb hos_v39
createdb -E UNICODE hos_v39
psql hos_v39< /home/bansang39.sql
rm /home/bansang39.sql
exit
 6.กำหนดให้ sftpbackup.sh และ restore.sh ทำงานเองโดยเพิ่มเข้าไปใน crontab ของ root และ postgres
# crontab -e
เพิ่มบรรทัดต่อไปนี้เข้าไป
@daily /home/sftpbackup.sh > /dev/null #daily backup
save และออกจาก crontab
ทีนี้ทุกๆ เที่ยงคืนเครื่องของเราก็จะทำการ backup ข้อมูลเองโดยอัตโนมัติครับ

No comments:

Post a Comment