
มันสุดยอดที่สุดในโลกเลย
rsync ช่วยให้การ backup data เป็นเรื่องง่าย
rsync จะทำงานโดยการ backup จาก เครื่องหลัก(Server) เครื่องbaclup(Client) โดยจะเลือกเฉพาะ file ที่มีการเปลี่ยนแปลงเท่านั้น รวมทั้งpermission ก็จะมาด้วย ทำให้เวลาในการ sync ข้อมูลเร็วเพราะไม่ต้อง copy ทั้งหมดใหม่ในคราวเดียว ตัว rsync จะ sync data ทั้ง 2 ฝั่งเพื่อให้ไฟล์ที่แตกต่างและทำการ copy
อ่านข้อดีของมันก็มาลองใช้งานกันเลย
ในบทความนี้จะแบ่ง 2 ส่วนนะครับ
1. จะเป็นการ backup จาก FreeBSD to FreeBSD ทั้งแบบ เครื่องนึงไปยังอีกเครื่อง กับแบบ เครื่องเดียวกันคนละ path
2. จะเป็นการ backup จาก Windows to FreeBSD
สำคัญมากสำหรับการ backup ข้ามเครื่อง ให้อ่านวิธีการใช้ ssh Key เพื่อ Login auto โดยไม่ถาม Password โดยอ่านที่
เข้า ssh ไม่ต้องใส่ password โดยใช้ key เมื่อเข้าใจการใช้ ssh key ก็มาเริ่มหัวข้อแรกนะครับ
การ backup จาก FreeBSD to FreeBSD ไม่ได้ยุ่งยากเลยครับ
ติดตั้ง rsync จาก ports
ในที่นี้จะใช้ rsync เวอร์ชั่น ล่าสุดนะครับ ก็ไปโหลดจาก ports ในเว็บ FreeBSD ครับ
#cd /usr/ports/net/
#rm -rf rsync
#wget http://www.freebsd.org/cgi/cvsweb.cgi/ports/net/rsync/rsync.tar.gz\?tarball=1
#tar fvxz rsync.tar.gz?tarball=1
#cd rsync
#make install clean
เข้าไปลบ ports rsync เดิมทิ้ง แล้วก็ download ports rsync ล่าสุดมาจาก FreeBSD แล้วก็มาขยายไฟล์
แล้วก็ทำการติดตั้ง rsync เมื่อ make จะมีหน้าต่างขึ้นมา มันจะ select ssh ไว้แล้วก็ผ่านได้เลย (ถ้าใครอยากทำไรเพิ่มเชิญตามสบาย)
เสร็จพร้อมใช้ละ
ขั้นตอนการใช้งาน
-แบบแรก คือ จากpath นึงไปอีก path นึง ในเครื่องเดียวกัน ง่ายๆเลยครับ
#/usr/local/bin/rsync -avz --delete /home /backup
ทำการ backup "home" ทั้งหมด ไปไว้ใน /backup
ผลที่ได้คือ จะมีการ copy "home" ไปไว้ใน /backup จะเป็น /backup/home
option --delete คือการลบไฟล์หากเมื่อ sync แล้วตัวหลักมีการลบไฟล์ไป ใน backup ก็จะลบด้วย- อีกแบบ คือ จาก เครื่องนึงไปอีกเครื่องนึง ขั้นตอนนี้จะต้องใช้ ssh key
เข้า ssh ไม่ต้องใส่ password โดยใช้ key C$ /usr/local/bin/rsync -avz --delete bobby@Server:/home /backup
C$ = command line บน เครื่อง Client
เครื่อง Server คือเครื่องที่เก็บ Data หลัก เครื่อง Client คือเครื่องที่จะไว้เก็บ Backupหากไม่ทำ ssh key ไว้พอสั่งอันนี้ระบบจะขึ้นมาถาม ssh password ของ bobby
จาก Windows to FreeBSDขั้นตอนนี้สามารถทำสลับกันได้ เหมือน ของ FreeBSD แค่สลับ source กับ dest แต่ผมยังไม่ได้ลองฮา
เอาที่ผมทำนี้คือ Data อยู่บน Windows อยากเอาไป backup ไว้บน FreeBSDแต่ผมจะสั่งงานบน Windows (Server) เพื่อส่งไฟล์ไป ยัง FreeBSD ผมกลัวว่าถ้าสั่งจากฝั่ง FreeBSD จะติดต่อ ssh เข้ามาบน windows ไม่ได้ (สำหรับ FreeBSD to FreeBSD ผมทำบนเครื่อง Client แล้วสั่งไปดึงไฟล์จาก Server มา)
เราจะใช้ Grsync เป็น GUI rsync สำหรับ Windows โหลดได้จาก
Grsync for windowsโหลดแล้วก็ติดตั้งลงไปปกติ
เริ่มใช้งาน เราก็จำเป็นต้องทำ ssh key เหมือนเดิม เราสามารถทำผ่าน Grsync
C:\Program Files\Grsync\bin>ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/cygdrive/c/Users/bobby/.ssh/id_dsa): [color=red]Enter ผ่านไปเลย[/color]
Enter passphrase (empty for no passphrase): [color=red]Enter ผ่านไปเลย[/color]
Enter same passphrase again: [color=red]Enter ผ่านไปเลย[/color]
Your identification has been saved in /cygdrive/c/Users/bobby/.ssh/id_dsa.
Your public key has been saved in /cygdrive/c/Users/bobby/.ssh/id_dsa.pub.
The key fingerprint is:
a3:c1:81:a7:60:70:50:30:3d:8d:3b:a2:dd:89:56:1c bobby@Server
The key's randomart image is:
+--[ DSA 1024]----+
|==oo |
|.oE.. |
|...=o |
|o.o+o. |
|.o.=o.. S |
|. + oo . |
| . . |
| |
| |
+-----------------+
เสร็จเราจะได้ key มาซึ่งอยู่ใน "C:\Users\bobby\.ssh"
เราก็เอา id_dsa.pub มาเปลี่ยนชื่อเป็น authorized_keys แล้ว upload ใส่ไว้ใน FreeBSD /home/bobby/.ssh/
ทดสอบโดย key โดย
C:\Program Files\Grsync\bin>ssh bobby@Server
มันจะต้องเข้าได้ทันทีเลย แต่ถ้าไม่ได้ตัวใครตัวมัน

เสร็จส่วนของ ssh เราก็รัน GUI ของ Grsync ได้เลย
ใช้งานง่ายๆครับเลือก source เลือก dest (อันนี้ก็จะต้องเป็นบนเครื่อง FreeBSD)

จากภาพเราจะกำหนด dest เป็น bobby@Server:/home/bobby/rsync เพื่อให้รู้ว่าปลายทางเป็นเครื่อง FreeBSD
และตรง tab "Advanced options" ให้ใส่ตรง Additional options ว่า
-e ssh
เพื่อบอกให้ระบบรู้ว่าจะเป็นการติดต่อไปยัง FreeBSD แบบ ssh
แค่นี้ก็ทำงานได้แล้วครับผม
เพิ่มเติม ตัว Grsync ตัวปัจจุบัน 0.63 ไม่มี schedule ให้ใช้งานทำให้เวลา จะ Backup ต้องกดเอง ยุ่งยากครับ เราเลยมาลองแบบ command line จะได้เอาไว้ไปสร้างใน Service ของ Windows ได้ครับ
C:\Program Files\Grsync\bin>rsync -avrz -e ssh /cygdrive/d/rsync/ bobby@Server:/home/bobby/rsync/
sending incremental file list
sent 188 bytes received 12 bytes 133.33 bytes/sec
total size is 3762069 speedup is 18810.35
C:\Program Files\Grsync\bin>
เป็นตัวอย่างคำสั่ง โดยระบบจะ backup จาก d:\rsync ไปยัง /home/bobby/rsync ผ่าน ssh ครับ
เมื่อลองแล้วใช้งานได้เรียบร้อย ก็เอา command line ไปสร้าง Service