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 ใหม่หรือซับย่อยของโฟลเดอร์ใหม่เลย อันนี้ต้องระวัง
ไม่มีความคิดเห็น:
แสดงความคิดเห็น