all-in-one 9 (backup cron)

สุดท้ายเป็นการเก็บกวาดเล็กน้อย
งานที่ทำคือ...

ย้าย cron ของ apt-proxy มารวมกับการสำรองฐานข้อมูล

จุดประสงค์คือการรวมศูนย์การใช้งาน cron แบบรายวัน ไว้ที่ไฟล์นี้ไฟล์เดียว

ยกเลิก cron ของ apt-proxy
# crontab -e

...
#5 0 * * * /etc/init.d/apt-proxy restart >&2
...

เปลี่ยนมาบรรจุคำสั่งใน d.cron-daily แทน
# vi /usr/local/sbin/d.cron-daily

#!/bin/bash
#-----RESTART APT-PROXY------------------------------------
/etc/init.d/apt-proxy restart

#-----BACKUP DB--------------------------------------------
ROOT="/sys1/sysb/backupdb"
...
สำรองข้อมูลทั้งหมด

แม้จะนอกรายการไปนิดนึง แต่ก็ขอบันทึกไว้เพื่อให้สมบูรณ์อย่างที่ตั้งใจครับ

จะสมมุติว่ามีเครื่องเซิร์ฟเวอร์สำรองอยู่ข้างหลังเซิร์ฟเวอร์เครื่องนี้อีกเครื่องนึง เพื่อที่จะทำ rsync มาคัดลอกข้อมูลในไดเรกทอรี่ /sys1/sysb ทั้งหมดไปเก็บไว้ ถ้าหากเกิดความเสียหายรุนแรงที่เครื่อง server1 นี้ จะได้มีข้อมูลมาสำรองกลับได้

สมมุติว่าชื่อ server2.example.com ไอพี 192.168.1.2
งานนี้จะทำที่เครื่อง server2 ทั้งหมด

ติดตั้ง rsync และ ssh
# aptitude install rsync ssh
สร้างกุญแจให้กับ ssh
# ssh-keygen -t dsa

Enter file in which to save the key (/root/.ssh/id_dsa): <<<--- [ENTER]
Enter passphrase (empty for no passphrase): <<<---  [ENTER]
Enter same passphrase again: <<<---  [ENTER]
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /home/user1/.ssh/id_dsa.pub.
The key fingerprint is:
cd:43:9b:3a:b1:60:01:ae:a2:0e:f8:00:21:8c:d8:f0 root@server2

คัดลอกกุญแจไปยัง server1
# ssh-copy-id -i /root/.ssh/id_dsa.pub root@server1

ต่อเข้า server1 เพื่อบันทึกรหัสผ่าน 1 ครั้ง
# ssh server1 -l root

The authenticity of host 'server1 (192.168.1.1)' can't be established.
RSA key fingerprint is 1a:d1:12:f4:bd:d4:4c:11:93:55:9c:75:a7:eb:7d:ae.
Are you sure you want to continue connecting (yes/no)? <<<--- yes
Warning: Permanently added 'server1,192.168.1.1' (RSA) to the list of known hosts.
root@server1's password: <<<--- ROOT@SERVER1-PASSWORD
Now try logging into the machine, with "ssh 'root@server1'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

#

ต่อเข้าจริงอีก 1 ครั้ง
# ssh root@server1

Last login: Mon Mar  3 21:02:28 2008 from work1.example.com
Linux server1 2.6.18 #1 Mon Mar 3 13:02:29 ICT 2008 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
No mail.
# exit

(***อย่าลืม exit ออกจาก server1 ด้วยนะครับ***)

เสร็จเรื่อง ssh

ต่อเรื่องทำ rsync
สร้างไดเรคทอรี่มารองรับไฟล์จาก server1 สมมุติว่าให้ชื่อ /sys2/server1-sysb
# mkdir -p /sys2/server1-sysb

สร้างไฟล์ d.cron-rsync-server1 ใน /usr/local/sbin
# vi /usr/local/sbin/d.cron-rsync-server1

#!/bin/bash
# IF sys2 IS SEPARATE, MOUNT /sys2 FIRST
#mount /sys2

# RSYNC FROM server1:/sys1/sysb TO /sys2/server1-sysb
rsync -aq --delete -e "ssh -i /root/.ssh/id_dsa" root@server1.example.com:/sys1/sysb/ /sys2/server1-sysb/

# IF sys2 IS SEPARATE, MOUNT /sys2 FIRST
#umount /sys2

ทำให้รันได้
# chmod 700 /usr/local/sbin/d.cron-rsync-server1

ตั้ง cron ให้รันตอนตี 1
# crontab -e

...
#BACKUP server1:/sys1/sysb TO /sys2/server1-sysb DAILY
20 1  * * *   /usr/local/sbin/d.cron-rsync-server1
...

เสร็จหมดแล้ว

Topic: