กำลังใช้ rsync ในขณะที่แหล่งข้อมูลกำลังได้รับการอัปเดตอย่างปลอดภัยหรือไม่


19

มีความปลอดภัยในการใช้งานหรือไม่rsyncเมื่อระบบไฟล์ต้นทางถูกเมาต์และเขียนได้สมมติว่ามันอาจจะถูกแก้ไขได้อย่างดีในขณะที่ rsync กำลังทำงานอยู่? ฉันเข้าใจว่าภายใต้สภาพการแข่งขันฉันอาจไม่ได้รับการดัดแปลงล่าสุด แต่มีความเสี่ยงต่อการทุจริตหรือไม่?


1
คุณมีความกังวลเกี่ยวกับความสอดคล้องกัน (ระหว่างไฟล์เช่นไฟล์ข้อมูลและไฟล์ข้อมูลเมตาที่เกี่ยวข้องบางไฟล์บันทึกหรือบางส่วน) หรือความเสียหาย (ภายในไฟล์เดียว) ในกรณีที่มีการเปลี่ยนแปลงหรือไม่
CVn

จุดดีฉันไม่ได้พิจารณาความสอดคล้องกันระหว่างไฟล์ ฉันไม่คิดว่าrsyncจะสามารถทำอะไรเกี่ยวกับเรื่องนั้นได้เพียงแค่สแนปชอตเท่านั้น แต่ฉันกังวลเกี่ยวกับความเสียหายในไฟล์มากกว่า
brianmearns

คำตอบ:


20

การใช้rsyncค่อนข้างปลอดภัยในระบบไฟล์ที่อ่านแล้วเขียน เมื่อrsyncเริ่มต้นมันจะสร้างรายชื่อไฟล์ขึ้นมาและเริ่มทำการคัดลอกไฟล์เหล่านั้น รายชื่อไฟล์นี้ไม่ได้รับการอัพเดตระหว่างการรัน ข้อมูลจริงจะถูกคัดลอก

ซึ่งหมายความว่าเมื่อไฟล์มีการเปลี่ยนแปลงหลังจาก rsyncสร้างรายการไฟล์แล้วมันจะคัดลอกเนื้อหาใหม่ แต่เมื่อไฟล์ใหม่จะถูกเพิ่มเข้ามาหลังจากที่rsyncได้สร้างขึ้นรายชื่อไฟล์ของไฟล์ใหม่นี้จะไม่คัดลอก หากไฟล์ถูกลบหลังจากrsyncสร้างรายการไฟล์แล้ว rsync จะเตือนว่าไม่สามารถคัดลอกไฟล์นั้นได้ โปรดจำไว้ว่าrsyncไม่ใช่ภาพรวมหมายความว่าเป็นการยากที่จะบอกได้ว่าจุดใดในเวลาที่rsyncคัดลอกข้อมูล

ระบบไฟล์หรือสแน็ปช็อตตัวจัดการไดรฟ์ข้อมูล (เช่นการใช้ ZFS หรือ LVM) จะถูกสร้างขึ้นทันทีและเป็นสแน็ปช็อตที่สอดคล้องกันของระบบไฟล์ ณ จุดที่กำหนดไว้อย่างดีซึ่งสามารถคัดลอกไปยังโฮสต์อื่นได้ rsyncไม่เสนอความสอดคล้องแบบนี้

แก้ไข:ตามที่คนอื่น ๆ ชี้ให้เห็นในความคิดเห็นมีโอกาสที่rsyncจะทำให้ไฟล์ของคุณเสียหายจริง ๆ เมื่อ rsync เริ่มอ่านไฟล์และแอปพลิเคชันกำลังเขียนไฟล์นั้นในเวลาเดียวกันคุณอาจจบลงด้วยไฟล์ที่เสียหาย


2
เพิ่มบันทึกย่อในไฟล์ที่ถูกลบ อาจจะให้ upvote นี้อีกถ้าฉันได้สำหรับคำแนะนำ snapshot + rsync จัดการปริมาณ สิ่งเดียวที่ฉันรู้สึกว่าคำตอบนี้หายไปคือพฤติกรรมของ rsync เมื่อไฟล์ในแหล่งที่มามีการเปลี่ยนแปลงในช่วงกลางของการคัดลอก ฉันสงสัยว่ามันใช้งานได้ดี
CVn

ตกลง หากคุณต้องการให้ไฟล์บางไฟล์สอดคล้องกันคุณต้องการการสนับสนุนระบบปฏิบัติการหรือไม่
Thorbjørn Ravn Andersen

1
คำตอบนี้นำไปใช้โดยมีเงื่อนไขว่าแอปพลิเคชันด้านแหล่งแรกเขียนไปยังไฟล์ชั่วคราวจากนั้นย้ายไปไว้ที่ หากแอปพลิเคชันเปิดไฟล์ที่มีอยู่สำหรับการเขียนในขณะที่ rsync เกิดขึ้นเพื่ออ่านไฟล์นั้น rsync อาจคัดลอกการผสมผสานที่เก่าและเวอร์ชันที่เสียหาย
Gilles 'หยุดความชั่วร้าย'

@Gilles ขอบคุณสำหรับการชี้ให้เห็นว่า ฉันปรับปรุงคำตอบของฉัน สิ่งนี้เกี่ยวข้องกับ rsync หรือสิ่งนี้เกิดขึ้นกับแอปพลิเคชันใด ๆที่อ่านในขณะที่แอปพลิเคชันอื่นเขียนลงไฟล์เดียวกันหรือไม่
Marco

1
@Marco ที่จะเกิดขึ้นกับแอปพลิเคชันใด ๆ เว้นแต่ว่าทั้งสองจะใช้โปรโตคอลการล็อค (ยูนิกซ์ไม่มีการล็อคที่บังคับใช้เท่านั้นล็อคการให้คำแนะนำเช่นล็อคที่ใช้งานได้เฉพาะเมื่อทุกคนใช้พวกเขา) นั่นเป็นเหตุผลที่โปรโตคอลปกติสำหรับการแก้ไขไฟล์หากการแก้ไขพร้อมกันเป็นข้อกังวลคือการเขียนไฟล์ชั่วคราวจากนั้นย้ายมันเข้าที่
Gilles 'หยุดความชั่วร้าย'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.