<ก่อนหน้านี้ | เนื้อหา | ถัดไป>
การซิงโครไนซ์ไฟล์และไดเร็กทอรี
กลยุทธ์ทั่วไปสำหรับการรักษาสำเนาสำรองของระบบเกี่ยวข้องกับการรักษาไดเรกทอรีอย่างน้อยหนึ่งรายการให้ซิงโครไนซ์กับไดเร็กทอรีอื่น (หรือไดเร็กทอรี) ที่อยู่บนระบบโลคัล (โดยปกติเป็นอุปกรณ์จัดเก็บข้อมูลแบบถอดได้บางชนิด) หรือระบบรีโมต ตัวอย่างเช่น เราอาจมีสำเนาของเว็บไซต์ที่อยู่ในระหว่างการพัฒนาและซิงโครไนซ์เป็นครั้งคราวกับสำเนา "สด" บนเว็บเซิร์ฟเวอร์ระยะไกล
ในโลกที่เหมือน Unix เครื่องมือที่ต้องการสำหรับงานนี้คือ rsync. โปรแกรมนี้สามารถซิงโครไนซ์ไดเร็กทอรีทั้งแบบโลคัลและรีโมตโดยใช้ปุ่ม rsync โปรโตคอลการอัปเดตระยะไกล, ซึ่งอนุญาต rsync เพื่อตรวจหาความแตกต่างระหว่างสองไดเร็กทอรีอย่างรวดเร็ว และดำเนินการคัดลอกขั้นต่ำที่จำเป็นในการซิงค์ สิ่งนี้ทำให้ rsync รวดเร็วและประหยัดมากเมื่อเทียบกับโปรแกรมคัดลอกประเภทอื่น
rsync ถูกเรียกใช้เช่นนี้:
rsync ตัวเลือก ต้นทาง ปลายทาง
ที่ไหน แหล่ง และ ปลายทาง เป็นหนึ่งในสิ่งต่อไปนี้:
● ไฟล์หรือไดเรกทอรีในเครื่อง
● ไฟล์หรือไดเรกทอรีระยะไกลในรูปแบบของ [user@]โฮสต์:เส้นทาง
● เซิร์ฟเวอร์ rsync ระยะไกลที่ระบุด้วย URI ของ rsync://[user@]host[:port]/path
โปรดทราบว่าต้นทางหรือปลายทางต้องเป็นไฟล์ในเครื่อง ไม่รองรับการทำสำเนาจากระยะไกลไปยังระยะไกล
มาลองกัน rsync ออกในไฟล์บางไฟล์ในเครื่อง อันดับแรก มาทำความสะอาด .ของเรากันก่อน foo ไดเรกทอรี:
[me@linuxbox ~]$ rm -rf ฟู/*
[me@linuxbox ~]$ rm -rf ฟู/*
ต่อไป เราจะซิงโครไนซ์ สนามเด็กเล่น ไดเรกทอรีที่มีสำเนาที่สอดคล้องกันใน foo:
[me@linuxbox ~]$ rsync -av สนามเด็กเล่น foo
[me@linuxbox ~]$ rsync -av สนามเด็กเล่น foo
เราได้รวมทั้ง -a ตัวเลือก (สำหรับการเก็บถาวร - ทำให้เกิดการเรียกซ้ำและการเก็บรักษาแอตทริบิวต์ของไฟล์) และ -v ตัวเลือก (เอาต์พุตแบบละเอียด) เพื่อสร้าง a กระจก ของ สนามเด็กเล่น ไดเรกทอรีภายใน foo. ขณะที่รันคำสั่ง เราจะเห็นรายการไฟล์และไดเร็กทอรีที่ถูกคัดลอก ในตอนท้ายเราจะเห็นข้อความสรุปดังนี้:
ส่ง 135759 ไบต์ รับ 57870 ไบต์ 387258.00 ไบต์/วินาที ขนาดรวม 3230 เร่งความเร็ว 0.02
ส่ง 135759 ไบต์ รับ 57870 ไบต์ 387258.00 ไบต์/วินาที ขนาดรวม 3230 เร่งความเร็ว 0.02
ระบุจำนวนการคัดลอกที่ทำ หากเรารันคำสั่งอีกครั้ง เราจะเห็นผลลัพธ์ที่แตกต่าง:
[me@linuxbox ~]$ rsync -av playgound foo
รายการไฟล์สร้าง ... เสร็จแล้ว
ส่ง 22635 ไบต์ รับ 20 ไบต์ 45310.00 ไบต์/วินาที ขนาดรวม 3230 เร่งความเร็ว 0.14
[me@linuxbox ~]$ rsync -av playgound foo
รายการไฟล์สร้าง ... เสร็จแล้ว
ส่ง 22635 ไบต์ รับ 20 ไบต์ 45310.00 ไบต์/วินาที ขนาดรวม 3230 เร่งความเร็ว 0.14
สังเกตว่าไม่มีรายการไฟล์ นี้เป็นเพราะ rsync พบว่าไม่มีความแตกต่างระหว่าง ~/สนามเด็กเล่น และ ~/foo/สนามเด็กเล่นดังนั้นจึงไม่จำเป็นต้องคัดลอกอะไรเลย หากเราแก้ไขไฟล์ใน สนามเด็กเล่น และวิ่ง rsync อีกครั้ง:
[me@linuxbox ~]$ สัมผัสสนามเด็กเล่น/dir-099/file-Z [me@linuxbox ~]$ rsync -av สนามเด็กเล่น foo รายการไฟล์สร้าง ... เสร็จแล้ว
สนามเด็กเล่น/dir-099/file-Z
ส่ง 22685 ไบต์ รับ 42 ไบต์ 45454.00 ไบต์/วินาที ขนาดรวม 3230 เร่งความเร็ว 0.14
[me@linuxbox ~]$ สัมผัสสนามเด็กเล่น/dir-099/file-Z [me@linuxbox ~]$ rsync -av สนามเด็กเล่น foo รายการไฟล์สร้าง ... เสร็จแล้ว
สนามเด็กเล่น/dir-099/file-Z
ส่ง 22685 ไบต์ รับ 42 ไบต์ 45454.00 ไบต์/วินาที ขนาดรวม 3230 เร่งความเร็ว 0.14
เราเห็นว่า rsync ตรวจพบการเปลี่ยนแปลงและคัดลอกเฉพาะไฟล์ที่อัปเดต
เป็นตัวอย่างในทางปฏิบัติ ลองพิจารณาฮาร์ดไดรฟ์ภายนอกจินตภาพที่เราเคยใช้ก่อนหน้านี้กับ น้ำมันดิน. หากเราแนบไดรฟ์เข้ากับระบบของเราและติดตั้งอีกครั้งที่ /me-dia/BigDiskเราสามารถทำการสำรองข้อมูลระบบที่มีประโยชน์โดยสร้างไดเร็กทอรีชื่อ .ก่อน /สำรอง บนไดรฟ์ภายนอก แล้วใช้ rsync เพื่อคัดลอกสิ่งที่สำคัญที่สุดจากระบบของเราไปยังไดรฟ์ภายนอก:
[me@linuxbox ~]$ mkdir /media/BigDisk/backup.mkdir
[me@linuxbox ~]$ sudo rsync -av --delete /etc /home /usr/local
/media/BigDisk/สำรอง
[me@linuxbox ~]$ mkdir /media/BigDisk/backup.mkdir
[me@linuxbox ~]$ sudo rsync -av --delete /etc /home /usr/local
/media/BigDisk/สำรอง
ในตัวอย่างนี้ เราคัดลอก / ฯลฯ, / หน้าแรกและ / usr / local ไดเร็กทอรีจากระบบของเราไปยังอุปกรณ์จัดเก็บข้อมูลในจินตนาการของเรา เรารวม --ลบ ตัวเลือกในการลบไฟล์ที่อาจมีอยู่ในอุปกรณ์สำรองข้อมูลที่ไม่มีอยู่ในอุปกรณ์ต้นทางแล้ว (สิ่งนี้ไม่เกี่ยวข้องในครั้งแรกที่เราสำรองข้อมูล แต่จะมีประโยชน์ในสำเนาที่ตามมา) ทำซ้ำขั้นตอนการต่อไดรฟ์ภายนอกและเรียกใช้สิ่งนี้ rsync คำสั่งจะเป็นวิธีที่มีประโยชน์ (แต่ไม่เหมาะ) ในการสำรองข้อมูลระบบขนาดเล็ก แน่นอนว่านามแฝงก็มีประโยชน์เช่นกัน เราสามารถสร้างนามแฝงและเพิ่มลงใน .ของเราได้
.bashrc ไฟล์เพื่อให้คุณลักษณะนี้:
นามแฝง backup='sudo rsync -av --delete /etc /home /usr/local
/media/BigDisk/สำรองข้อมูล'
นามแฝง backup='sudo rsync -av --delete /etc /home /usr/local
/media/BigDisk/สำรองข้อมูล'
ตอนนี้ สิ่งที่เราต้องทำคือแนบไดรฟ์ภายนอกและเรียกใช้ การสำรองข้อมูล สั่งให้ทำหน้าที่