Rsync - A great upload tool
วันนี้ผมอยากจะโฆษณา 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