วิธีใช้ rsync เพื่อสำรองข้อมูลของคุณบน Linux
rsync เป็นโปรโตคอลที่สร้างขึ้นสำหรับระบบ Unix ที่มอบความหลากหลายที่ไม่น่าเชื่อสำหรับการสำรองและซิงโครไนซ์ข้อมูล สามารถใช้ภายในเครื่องเพื่อสำรองไฟล์ไปยังไดเรกทอรีต่าง ๆ หรือสามารถกำหนดค่าให้ซิงค์ผ่านอินเทอร์เน็ตไปยังโฮสต์อื่น ๆ.
มันสามารถใช้กับระบบ Windows แต่ใช้ได้เฉพาะผ่านพอร์ตต่าง ๆ (เช่น Cygwin) ดังนั้นในวิธีการนี้เราจะพูดถึงการตั้งค่าบน Linux ก่อนอื่นเราต้องติดตั้ง / อัพเดทไคลเอนต์ rsync สำหรับ Red Hat distributions คำสั่งคือ“ yum install rsync” และบน Debian คือ“ sudo apt-get install rsync”
คำสั่งบน Red Hat / CentOS หลังจากเข้าสู่ระบบในฐานะ root (โปรดทราบว่าการกระจายของ Red Hat ล่าสุดสนับสนุนเมธอด sudo).
คำสั่งบน Debian / Ubuntu.
การใช้ rsync สำหรับการสำรองข้อมูลในเครื่อง
ในส่วนแรกของบทช่วยสอนนี้เราจะสำรองไฟล์จาก Directory1 ไปยัง Directory2 ไดเรกทอรีทั้งสองนี้อยู่ในฮาร์ดไดรฟ์เดียวกัน แต่จะทำงานเหมือนกันทุกประการหากมีไดเรกทอรีอยู่ในสองไดรฟ์ที่ต่างกัน มีหลายวิธีที่เราสามารถเข้าถึงสิ่งนี้ขึ้นอยู่กับชนิดของการสำรองข้อมูลที่คุณต้องการกำหนดค่า เพื่อจุดประสงค์ส่วนใหญ่บรรทัดของรหัสต่อไปนี้จะพอเพียง:
$ rsync -av - ลบ / ไดเรกทอรี 1 / / ไดเรกทอรี 2 /
รหัสด้านบนจะซิงโครไนซ์เนื้อหาของ Directory1 กับ Directory2 และไม่แตกต่างกันระหว่างสอง หาก rsync พบว่า Directory2 มีไฟล์ที่ Directory1 ไม่มีอยู่ก็จะลบออก หาก rsync พบไฟล์ที่มีการเปลี่ยนแปลงสร้างหรือลบใน Directory1 มันจะแสดงการเปลี่ยนแปลงเดียวกันกับ Directory2.
มีสวิตช์ที่แตกต่างกันมากมายที่คุณสามารถใช้สำหรับ rsync เพื่อปรับให้เหมาะกับความต้องการเฉพาะของคุณ นี่คือสิ่งที่รหัสดังกล่าวบอก rsync จะทำอย่างไรกับการสำรองข้อมูล:
1. -a = เรียกซ้ำ (เรียกคืนไปยังไดเรกทอรี), ลิงก์ (คัดลอกลิงก์เป็น symlink), perms (สงวนสิทธิ์), ครั้ง (สงวนเวลาการแก้ไข), กลุ่ม (กลุ่มอนุรักษ์), เจ้าของ (รักษาเจ้าของ), เก็บไฟล์อุปกรณ์และ รักษาไฟล์พิเศษ.
2. -v = verbose เหตุผลที่ฉันคิดว่า verbose มีความสำคัญคือคุณสามารถดูได้ว่า rsync สำรองอะไร คิดเกี่ยวกับสิ่งนี้: จะเกิดอะไรขึ้นถ้าฮาร์ดไดรฟ์ของคุณเสียและเริ่มลบไฟล์โดยที่คุณไม่ทราบคุณก็รันสคริปต์ rsync ของคุณแล้วมันจะผลักดันการเปลี่ยนแปลงเหล่านั้นไปยังการสำรองข้อมูลของคุณ กำจัด?
3. -delete = เป็นการบอก rsync ให้ลบไฟล์ใด ๆ ที่อยู่ใน Directory2 ที่ไม่ได้อยู่ใน Directory1 หากคุณเลือกที่จะใช้ตัวเลือกนี้ฉันขอแนะนำให้ใช้ตัวเลือก verbose ด้วยเหตุผลที่กล่าวถึงข้างต้น.
ใช้สคริปต์ด้านบนนี่คือผลลัพธ์ที่สร้างขึ้นโดยใช้ rsync เพื่อสำรองข้อมูล Directory1 ไปยัง Directory2 โปรดทราบว่าหากไม่มีสวิตช์รายละเอียดคุณจะไม่ได้รับข้อมูลโดยละเอียดดังกล่าว.
ภาพหน้าจอด้านบนบอกเราว่าตรวจพบ File1.txt และ File2.jpg ไม่ว่าจะเป็นของใหม่หรือเปลี่ยนแปลงจากสำเนาที่มีอยู่ใน Directory2 ดังนั้นจึงได้รับการสำรองข้อมูล เคล็ดลับ Noob: สังเกตเครื่องหมายสแลชท้ายท้ายไดเรกทอรีในคำสั่ง rsync ของฉัน - สิ่งเหล่านี้จำเป็นต้องแน่ใจว่าจำได้.
เราจะใช้สวิตช์ที่มีประโยชน์มากกว่านี้ในตอนท้ายของบทช่วยสอนนี้ แต่โปรดจำไว้ว่าหากต้องการดูรายการทั้งหมดคุณสามารถพิมพ์“ man rsync” และดูรายการสวิตช์ทั้งหมดที่จะใช้.
ที่เกี่ยวกับครอบคลุมมันเท่าที่สำรองข้อมูลในท้องถิ่นมีความกังวล อย่างที่คุณบอกได้ rsync นั้นใช้งานง่ายมาก มันซับซ้อนขึ้นเล็กน้อยเมื่อใช้เพื่อซิงค์ข้อมูลกับโฮสต์ภายนอกผ่านอินเทอร์เน็ต แต่เราจะแสดงวิธีที่ง่ายรวดเร็วและปลอดภัยในการทำเช่นนั้น.
การใช้ rsync สำหรับการสำรองข้อมูลภายนอก
rsync สามารถกำหนดค่าได้หลายวิธีสำหรับการสำรองข้อมูลภายนอก แต่เราจะใช้วิธีการที่ใช้งานได้จริงและปลอดภัยที่สุดในการสร้างช่องสัญญาณ rsync ผ่าน SSH เซิร์ฟเวอร์ส่วนใหญ่และลูกค้าจำนวนมากมี SSH อยู่แล้วและสามารถใช้สำหรับการสำรองข้อมูล rsync ของคุณ เราจะแสดงขั้นตอนการรับเครื่อง Linux หนึ่งเครื่องเพื่อสำรองข้อมูลไปยังอีกเครื่องหนึ่งบนเครือข่ายท้องถิ่น กระบวนการนี้จะเหมือนกันถ้ามีโฮสต์ใดโฮสต์บนอินเทอร์เน็ตที่ใดที่หนึ่งเพียงแค่ทราบว่าพอร์ต 22 (หรือพอร์ตใดก็ตามที่คุณกำหนดค่า SSH ไว้) จะต้องมีการส่งต่อไปยังอุปกรณ์เครือข่ายใด ๆ.
บนเซิร์ฟเวอร์ (คอมพิวเตอร์ที่จะรับการสำรองข้อมูล) ตรวจสอบให้แน่ใจว่าได้ติดตั้ง SSH และ rsync แล้ว.
# yum -y ติดตั้ง ssh rsync
# sudo apt-get install ssh rsync
นอกเหนือจากการติดตั้ง SSH และ rsync บนเซิร์ฟเวอร์สิ่งที่ต้องทำจริง ๆ ก็คือการตั้งค่าที่เก็บบนเซิร์ฟเวอร์ที่คุณต้องการสำรองไฟล์และตรวจสอบให้แน่ใจว่า SSH ถูกล็อค ตรวจสอบให้แน่ใจว่าผู้ใช้ที่คุณวางแผนจะใช้มีรหัสผ่านที่ซับซ้อนและอาจเป็นความคิดที่ดีที่จะเปลี่ยนพอร์ตที่ SSH รอฟัง (ค่าเริ่มต้นคือ 22).
เราจะเรียกใช้คำสั่งเดียวกับที่เราทำเพื่อใช้ rsync บนเครื่องคอมพิวเตอร์ แต่รวมถึงการเพิ่มที่จำเป็นสำหรับ tunneling rsync ผ่าน SSH ไปยังเซิร์ฟเวอร์บนเครือข่ายท้องถิ่นของฉัน สำหรับผู้ใช้“ geek” ที่เชื่อมต่อกับ“ 192.168.235.137” และใช้สวิตช์เดียวกับข้างบน (-av -delete) เราจะเรียกใช้สิ่งต่อไปนี้:
$ rsync -av -delete -e ssh / Directory1 / [email protected]: / Directory2 /
หากคุณมี SSH กำลังฟังบนพอร์ตอื่นที่ไม่ใช่ 22 คุณจะต้องระบุหมายเลขพอร์ตเช่นในตัวอย่างนี้ที่ฉันใช้พอร์ต 12345:
$ rsync -av -delete -e 'ssh -p 12345' / Directory1 / [email protected]: / Directory2 /
ดังที่คุณเห็นจากภาพข้างบนผลลัพธ์ที่ให้เมื่อทำการสำรองข้อมูลผ่านเครือข่ายนั้นเหมือนกับเมื่อทำการสำรองข้อมูลในเครื่องสิ่งเดียวที่เปลี่ยนแปลงคือคำสั่งที่คุณใช้ โปรดสังเกตว่ามันได้รับพร้อมท์สำหรับรหัสผ่าน นี่คือการตรวจสอบกับ SSH คุณสามารถตั้งค่าคีย์ RSA เพื่อข้ามกระบวนการนี้ได้ซึ่งจะทำให้ rsync อัตโนมัติ.
ทำการสำรองข้อมูล rsync โดยอัตโนมัติ
Cron สามารถใช้บน Linux เพื่อทำการประมวลผลคำสั่งอัตโนมัติเช่น rsync ด้วย Cron เราสามารถให้ระบบ Linux ทำการสำรองข้อมูลทุกคืนหรือบ่อยครั้งที่คุณต้องการให้มันรัน.
หากต้องการแก้ไขไฟล์ตาราง cron สำหรับผู้ใช้ที่คุณเข้าสู่ระบบในฐานะรัน:
$ crontab -e
คุณจะต้องคุ้นเคยกับ vi เพื่อแก้ไขไฟล์นี้ พิมพ์“ I” เพื่อแทรกจากนั้นเริ่มแก้ไขไฟล์ตาราง cron.
Cron ใช้ไวยากรณ์ต่อไปนี้: นาทีของชั่วโมง, ชั่วโมงของวัน, วันที่ของเดือน, เดือนของปี, วันในสัปดาห์, คำสั่ง.
ในตอนแรกอาจจะสับสนเล็กน้อยดังนั้นขอยกตัวอย่างหน่อยสิ คำสั่งต่อไปนี้จะรันคำสั่ง rsync ทุกคืนเวลา 22.00 น.:
0 22 * * * rsync -av - ลบ / ไดเรกทอรี 1 / / ไดเรกทอรี 2 /
“ 0” ตัวแรกระบุนาทีของชั่วโมงและ“ 22” ระบุเวลา 22.00 น. เนื่องจากเราต้องการให้คำสั่งนี้รันทุกวันเราจะปล่อยให้ฟิลด์ที่เหลือเป็นเครื่องหมายดอกจันแล้ววางคำสั่ง rsync.
หลังจากคุณกำหนดค่า Cron เสร็จแล้วให้กด Escape แล้วพิมพ์“: wq” (โดยไม่ใส่เครื่องหมายอัญประกาศ) และกด Enter สิ่งนี้จะบันทึกการเปลี่ยนแปลงของคุณใน vi.
Cron สามารถรับข้อมูลเชิงลึกได้มากกว่านี้มาก แต่การที่จะดำเนินการต่อไปจะเกินขอบเขตของบทช่วยสอนนี้ คนส่วนใหญ่ต้องการเพียงแค่การสำรองข้อมูลรายสัปดาห์หรือรายวันอย่างง่าย ๆ และสิ่งที่เราแสดงให้คุณเห็นว่าสามารถทำได้อย่างง่ายดาย สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Cron โปรดดูหน้าคน.
คุณสมบัติที่มีประโยชน์อื่น ๆ
อีกสิ่งที่มีประโยชน์ที่คุณสามารถทำได้คือใส่ข้อมูลสำรองลงในไฟล์ zip คุณจะต้องระบุตำแหน่งที่คุณต้องการให้วางไฟล์ zip จากนั้นซิงค์ไดเรกทอรีนั้นไปยังไดเรกทอรีสำรองของคุณ ตัวอย่างเช่น:
$ zip /ZippedFiles/archive.zip / Directory1 / && rsync -av - ลบ / ZippedFiles / / Directory2 /
คำสั่งด้านบนใช้ไฟล์จาก Directory1 วางไว้ใน /ZippedFiles/archive.zip จากนั้น rsyncs ไดเรกทอรีนั้นไปยัง Directory2 เริ่มแรกคุณอาจคิดว่าวิธีนี้จะพิสูจน์ว่าไม่มีประสิทธิภาพสำหรับการสำรองข้อมูลขนาดใหญ่การพิจารณาไฟล์ zip จะเปลี่ยนแปลงทุกครั้งที่มีการเปลี่ยนแปลงเล็กน้อยกับไฟล์ อย่างไรก็ตาม rsync จะถ่ายโอนข้อมูลที่มีการเปลี่ยนแปลงเท่านั้นดังนั้นหากไฟล์ zip ของคุณคือ 10 GB จากนั้นคุณเพิ่มไฟล์ข้อความไปยัง Directory1 rsync จะรู้ว่าเป็นข้อมูลที่คุณเพิ่ม (แม้ว่าจะอยู่ในไฟล์ zip) และถ่ายโอนเพียงไม่กี่กิโลไบต์ ของข้อมูลที่เปลี่ยนแปลง.
มีวิธีการสองสามวิธีที่คุณสามารถเข้ารหัสการสำรองข้อมูล rsync ของคุณได้ วิธีที่ง่ายที่สุดคือการติดตั้งการเข้ารหัสบนฮาร์ดไดรฟ์เอง (วิธีที่ไฟล์ของคุณสำรองข้อมูลไว้) อีกวิธีหนึ่งคือการเข้ารหัสไฟล์ของคุณก่อนที่จะส่งไปยังเซิร์ฟเวอร์ระยะไกล (หรือฮาร์ดไดรฟ์อื่น ๆ ไม่ว่าคุณจะสำรองข้อมูลอะไรก็ตาม) เราจะกล่าวถึงวิธีการเหล่านี้ในบทความภายหลัง.
ไม่ว่าคุณจะเลือกตัวเลือกและคุณสมบัติใดก็ตาม rsync พิสูจน์ให้เห็นว่าเป็นหนึ่งในเครื่องมือสำรองข้อมูลที่มีประสิทธิภาพและหลากหลายที่สุดจนถึงปัจจุบันและแม้แต่สคริปต์ rsync แบบธรรมดาก็สามารถช่วยคุณไม่ให้สูญเสียข้อมูลของคุณได้.