ads

วันศุกร์ที่ 16 สิงหาคม พ.ศ. 2556

Rsync Backup ข้ามเครื่อง

Rsync Backup ข้ามเครื่อง

เซิร์ฟเวอร์เป็น FreeBSD  ลง rsync ก่อนกครับ ( 192.168.201.101 )
# cd  /usr/ports/net/rsync
# make install clean
# rehash
แอด user ที่จะใช้ในการซิงค์ที่นี้ใช้  apache
# add apache
# passwd apache

เปลี่ยน user มาเป็น  apache
# su - apache
แล้วทำการ  gent key
# ssh-keygen -t rsa
  Generating public/private rsa key pair.
Enter file in which to save the key (/home/apache/.ssh/id_rsa):    <enter ผ่าน >
Created directory '/home/apache/.ssh'.
Enter passphrase (empty for no passphrase): <enter ผ่าน >
Enter same passphrase again: <enter ผ่าน >

# cd .ssh
ก๊อป key มาใช้
# cp id_rsa.pup local.key

ทำการส่งค่าไฟล์ local.key ไปยังเครื่องแบคอัพ ด้วยการ sftp
# sftp apache@192.168.201.103

# The authenticity of host '192.168.201.103 (192.168.201.103)' can't be established.
DSA key fingerprint is 27:bd:d3:a3:e3:63:ba:01:43:ad:f1:03:2a:07:41:75.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.201.103' (DSA) to the list of known hosts.
apache@192.168.201.103's password:   <ใส่พาสเวิร์ดไป >
sftp> put local.key
Uploading local.key to /home/apache/local.key
local.key                                                                                  100%  412     0.4KB/s   00:00  
sftp> bye


####  ที่เครื่อง  backup ### ( 192.168.201.103 )
อันนี้เป็น CentOS ใช้ yum
# yum install rsync   แล้วก็รอไป
adduser ที่จะใช้ให้เหมือนกัน
# adduser apache
# passwd apache  เปลี่ยนพาสดังที่เราเซ็ต

แล้วเปลียน user
# su - apache

แล้วทำการ ssh ไปยังเครืองอื่นที่ไม่ใช่เครื่องต้นแบบ  เพอให้มันสร้าง ไดเรคโทรี่ .ssh อัตโนมัติ
$ ssh apache@192.168.201.105
apache@192.168.201.105's password:  < ใส่พาสเวิร์ด >
$ exit   เสร็จแล้วออกมา
แล้วทำาการ ก๊อปคีย์ที่ได้เก็บไว้เป็นตัวออเท็น
$ cat local.key >> .ssh/authorized_keys
$ chmod 755 .ssh/authorized_keys

### ตัว server ต้นแบบ ###
กลับมาที่ฝั่ง server ต้นแบบ  ลอง ssh ไปยังตัวแบคอัพ  มันจะไม่ถามพาสเวิร์ด
$ ssh apache@192.168.201.103
[apache@streaming01 ~]$     เรียบร้อยเข้าได้เลย

เมื่อเข้าได้แล้วต่อไปก็ใส่คำสั่ง rsync เทสได้เลยว่าได้หรือเปล่า
# rsync [ออฟชั่น] [ ต้นแบบ] [ตัวแบคอัพ]
ลองเทสเป็น
# rsync -avz ssh /DATA/ apache@192.168.201.103:/home/BACKUP/
= ทำการซิงค์ที่เครื่องต้นแบบภายใต้พาร์ท /DATA  ไปยังเครื่องแบคอัพ ip 192.168.201.103 ในพาร์ท /home/BACKUP/
ลองรันดู   ถ้าทำงานได้จริงก็ผ่านแล้วครับเอาไปใส่ใน crontab เลย  ทำวันละครั้งก็ได้ครับ
# crontab -e
โค๊ด:
0 0 * * * rsync -avz --delete ssh /DATA/ apache@192.168.201.103:/home/BACKUP/

ในการใช้งานจริงจะใส่ --delete เป็นออฟชั่นเพิ่มไปอีกเพื่อให้เวลาซิงค์หากตัวต้นแบบมีการลบไฟล์ไหนไปแล้ว  ปลายทางที่แบคอัพก็ลบตามไปด้วย

อีกอย่างที่ควรระวังคือการใส่พาร์ทระหว่าง /DATA  หรือ /DATA/  ได้ผลต่างกันนะครับระวังให้ดี
ถ้าใส่เป็น  rsync -avz --delete ssh /DATA apache@192.168.201.103:/home/BACKUP/
      = เวลามันซิ้งค์ไปที่ปลายทางมันจะสร้างไดเรคโทรี่ /DATA  ภายใต้ /home/BACKUP/
แต่ถ้าใส่เป็น  rsync -avz --delete ssh /DATA/ apache@192.168.201.103:/home/BACKUP/
   = เวลาซิงค์มันจะเอาโฟลเดอร์ย่อย  ไปไว้ใน /home/BACKUP/ เลย    
ซึ่งหากไม่มีการเปลี่ยนรูปแบบคำสั่งอาจจะไม่มีผลอะไรเท่าไหร่  แต่ถ้าวันไหนเปลียนรูปแบบคำสั่งจาก มี / ไปเป็น ไม่มี /  แล้วเราใส่ออฟชั่น  --delete แล้ว
มันจะมองว่าปลายทางไม่เหมือนเดิมมันก็ลบทิ้งเกลี้ยงเลยแล้วทับด้วย data ใหม่หรือซับย่อยของโฟลเดอร์ใหม่เลย  อันนี้ต้องระวัง

ไม่มีความคิดเห็น:

แสดงความคิดเห็น