วันนี้ผมอยากจะโฆษณา rsync ไม่รู้ว่าหลายคนรู้จักกันอยู่แล้วหรือเปล่า แต่ผมเพิ่งรู้จักมันไม่นานนี่เอง

เจ้าตัว rsync เนี่ย ก็เป็นโปรแกรมที่ทำหน้าที่เรียบง่าย หลัก ๆ ก็คือ เราเลือก folder ต้นฉบับ แล้วก็ folder ปลายทาง แค่นี้ มันก็จะทำการก้อบข้อมูลในต้นฉบับไปยังปลายทางให้ ดูไม่ต่างจากคำสั่ง cp หรือ copy ธรรมดาเลยใช่ไหมล่ะ !!

ความเทพมันอยู่ตรงนี้ rsync เป็นโปรแกรมที่ทำการ copy แบบ progressive ก็คือมันจะไม่ copy เกินความจำเป็น มันจะหาความต่างระหว่าง 2 โฟลเดอร์นั้นแล้วก็จะทำการ copy เฉพาะส่วนที่จำเป็น หรือส่วนที่ต่างกันเท่านั้น ทำให้การเรียก rsync ครั้งแรก อาจจะนานนิดนึง แต่ว่าครั้งต่อ ๆ ไปจะเร็วมาก (ขึ้นอยู่กับว่าครั้งนี้กับครั้งที่แล้วมันต่างกันขนาดไหน)

ดังนั้นสำหรับคนที่ทำการ backup ข้อมูลแบบง่าย ๆ ก็สามารถใช้ rsync ทำงานได้ เลยเลือก folder ที่ต้องการ แล้วก็เลือกอีก folder ปลายทางที่เราต้องการ backup ไว้ แค่นั้นเอง คำสั่งจะหน้าตาประมาณนี้

rsync -av <ต้นทาง> <ปลายทาง>

เช่น

rsync -av /abc /backup/

มันก็จะทำการก้อบปี้ข้อมูลทั้ง folder abc ไปยัง folder backup เลย ซึ่งก็จะสร้าง folder abc ใน backup นั้นด้วย แต่ว่าถ้าเราต่อท้ายด้วย / เช่น rsync -av /abc/ /backup/ สิ่งที่จะเกิดขึ้นข้อมูลใน abc ทั้่งหมดจะถูกคัดลอกไปวางไว้ใน backup ทำให้ไม่มีชื่อ abc ใน backup นะมันจะวางไว้ตรงนั้นเลย

ความเทพมันยังไม่หมดเท่านี้ เพราะใครบอกว่ามันต้องเป็น folder บนเครื่องเดียวกันล่ะ ! ที่จริงคือมันสามารถเลือก folder ที่อยู่บน server ที่อยู่ต่างเครื่องกัน โดยใช้ ssh (secure shell) เป็นตัวเชื่อมต่อได้ด้วย !

เช่น สมมติผมมี sever ตัวนึงอยู่ที่ ip : 172.16.123.10 ซึ่งผมมี user คือ ta เพราะฉะนั้นปกติผมก็สามารถเข้าไปที่ server เครื่องนี้ผ่าน ssh [email protected] ได้ (ถ้าเครื่องนั้นลง ssh server ไว้อ่ะนะ)

หากผมต้องการ sync ข้อมูลโฟลเดอร์ abc เมื่อครู่นี้กับเครื่องนี้ด้วย ผมสามารถเขียนได้ดังนี้

rsync -avz /abc [email protected]:~/backup

ข้อมูลจะไปโผลที่ ~/backup/abc ของเครืื่อง 172.16.123.10 นั่นเอง จะเห็นว่าในครั้งนี้ผมใส่ flag -z เข้าไปด้วย เพื่อให้ rsync ทำการ gzip ข้อมูลก่อนส่ง ซึ่งจะช่วยให้ส่งข้อมูลได้เร็วขึ้น หาก cpu ของเราเร็ว และ connection เราไม่เร็วมากเท่าไหร่ (ปกติการใช้ -z ผ่าน internet ก็เป็นตัวเลือกที่ค่อนข้างใช้ได้)

แผนภาพเปรียบเทียบความคุ้มค่าในการบีบอัด The graph originates with the Compression Tools Compared 2005 article by http://www.linuxjournal.com/.

ส่วน -a คือ archive mode ซึ่งจะก้อบไปทุก folder แบบ recursive และพยายามรักษาหน้าตาของแต่ละไฟล์ไว้ให้เหมือนบนเครื่องต้นทางมากที่สุด ก็คือรักษาพวก modified date, created date เอาไว้ รวมทั้ง permissions ต่าง ๆ ด้วย categories: dev

เจ้าตัว rsync นี่มีมานานมากแล้วจริง ๆ (และแทบจะอยู่บนทุกคเรื่องที่ไม่ใช่ Windows) แล้วก็กลายเป็นโปรแกรมมาตรฐานในการ sync ข้อมูลไปแล้ว เพราะฉะนั้นสำหรับความน่าเชื่อถือนี่ก็สูงทีเดียว !

อย่างนี้ เราจะใช้ ftp กันทำไมล่ะครับ …​ใช้อันนี้ดีกว่าเร็วกว่าน่าเชื่อถือกว่าด้วย

๕๕๕๕ ไม่มีบน Windows นะ ลืมบอก :D