ฉันวางแผนที่จะสำรองข้อมูล HDD ขนาดใหญ่ของฉันrsync
และคาดว่าจะใช้เวลาสองสามวัน การใช้ HDD ดั้งเดิม (เพิ่มไฟล์) ปลอดภัยrsync
หรือไม่ในขณะที่ใช้งานอยู่ หรือจะเป็นการดีกว่าที่จะปล่อย HDD ทิ้งไว้จนกว่าrsync
จะเสร็จสิ้น
ฉันวางแผนที่จะสำรองข้อมูล HDD ขนาดใหญ่ของฉันrsync
และคาดว่าจะใช้เวลาสองสามวัน การใช้ HDD ดั้งเดิม (เพิ่มไฟล์) ปลอดภัยrsync
หรือไม่ในขณะที่ใช้งานอยู่ หรือจะเป็นการดีกว่าที่จะปล่อย HDD ทิ้งไว้จนกว่าrsync
จะเสร็จสิ้น
คำตอบ:
ตามที่คนอื่น ๆ ชี้ไปแล้วมันปลอดภัยที่จะอ่านจากดิสก์ต้นทางหรือใช้ดิสก์เป้าหมายนอกไดเรกทอรีเป้าหมายขณะที่ rsync กำลังทำงาน นอกจากนี้ยังปลอดภัยในการอ่านภายในไดเรกทอรีเป้าหมายโดยเฉพาะอย่างยิ่งถ้าไดเรกทอรีเป้าหมายจะถูกบรรจุเฉพาะโดยการเรียกใช้ rsync
สิ่งที่ไม่ปลอดภัยโดยทั่วไปคือการเขียนภายในไดเรกทอรีต้นทางขณะที่ rsync กำลังทำงาน "Writes" เป็นสิ่งที่แก้ไขเนื้อหาของไดเรกทอรีต้นทางหรือไดเรกทอรีย่อยใด ๆ ดังนั้นรวมถึงการปรับปรุงไฟล์ลบการสร้าง ฯลฯ
การทำเช่นนั้นจะไม่ทำลายอะไรเลย แต่การเปลี่ยนแปลงอาจหรือไม่ได้รับโดย rsync สำหรับการคัดลอกไปยังตำแหน่งเป้าหมาย ขึ้นอยู่กับประเภทของการเปลี่ยนแปลงไม่ว่าจะเป็น rsync สแกนไดเรกทอรีนั้นหรือไม่และ rsync ได้คัดลอกไฟล์หรือไดเรกทอรีที่เป็นปัญหาหรือไม่
อย่างไรก็ตามมีวิธีง่าย ๆ ดังนี้: เมื่อเสร็จแล้วให้เรียกใช้ rsync อีกครั้งโดยใช้พารามิเตอร์เดียวกัน (ยกเว้นว่าคุณมีพารามิเตอร์ลบขี้ขลาดบางอย่างถ้าคุณทำแล้วระวังให้มากขึ้น) การทำเช่นนั้นจะทำให้สแกนแหล่งที่มาอีกครั้ง
การรันครั้งที่สองควรโอนเฉพาะความแตกต่างที่เกิดขึ้นในระหว่างการรัน rsync ก่อนหน้าและจะเสร็จเร็วขึ้นมาก ดังนั้นคุณสามารถใช้คอมพิวเตอร์ได้ตามปกติในระหว่างการเรียกใช้ครั้งแรก แต่ควรหลีกเลี่ยงการเปลี่ยนแปลงแหล่งที่มาในระหว่างการเรียกใช้ครั้งที่สองให้มากที่สุด หากเป็นไปได้ให้พิจารณาการติดตั้งระบบไฟล์ต้นฉบับแบบอ่านอย่างเดียวอีกครั้งก่อนเริ่มการทำงานครั้งที่สองของ rsync (สิ่งที่mount -o ro,remount /media/source
ควรทำ)
@reboot root find / -print &>/dev/null
ใน crontab ระบบของฉันเพื่อเติมแคช (รายการที่เกิดขึ้นจริงมีความซับซ้อนมากขึ้นในการบัญชีสำหรับกรณีพิเศษบางอย่างในระบบของฉันโดยเฉพาะ) มันใช้ RAM บางส่วนและเวลา wallclock บางต้นหลังจากเริ่มต้นเพื่อปรับปรุงการสแกนต้นไม้ไดเรกทอรีไดเรกทอรีค่อนข้าง IME เล็กน้อย
updatedb
(การสร้างฐานข้อมูลค้นหา) หรือslocate -u
(เหมือนกันถ้าคุณมี slocate) แทน? ด้วยวิธีนี้คุณยังคงแคชลำดับชั้น แต่คุณยังสร้างฐานข้อมูลการค้นหาหรือจัดสรรเพื่อให้คุณสามารถใช้คำสั่งเหล่านั้นเพื่อค้นหาไฟล์จำนวนมากได้อย่างรวดเร็ว?
ขึ้นอยู่กับระบบสำรองข้อมูลที่คุณใช้ แต่โดยทั่วไปคุณควรแก้ไขเนื้อหาของอุปกรณ์ในขณะที่ทำการสำรองข้อมูล อย่างไรก็ตามคุณสามารถอ่านเนื้อหาได้ นั่นเป็นการดำเนินการที่ปลอดภัยแม้ว่ามันจะทำให้กระบวนการช้าลงก็ตาม
ในกรณีของคุณrsync
จะสร้างรายการไฟล์จากนั้นเริ่มการสำรองข้อมูล ดังนั้นไฟล์ใด ๆ ที่คุณเพิ่มลงใน HDD ต้นทางหลังจากการสำรองข้อมูลเริ่มขึ้นจะไม่ถูกคัดลอก
สิ่งที่ฉันทำคือไม่ใช้อุปกรณ์ทั้งหมดในระหว่างการสำรองข้อมูล นี่เป็นวิธีที่ปลอดภัยกว่าในการรับการสำรองข้อมูลที่รวดเร็วและสม่ำเสมอ
rsync
ซึ่งจะเสร็จสิ้นในไม่กี่วินาทีเพราะไฟล์ที่ฉันเปลี่ยนระหว่างการรันจะถูกคัดลอก ทุกอย่างจะอยู่ในแคชดังนั้นจึงเป็นวิธีที่ง่ายกว่าที่จะละเว้นจากการแก้ไขในช่วงเวลานั้น
มีความปลอดภัยในการอ่านข้อมูลจากแหล่งที่มาในขณะที่rsync
ใช้งานอยู่ แต่ถ้าคุณอัปเดตสิ่งใดก็ตามสำเนาที่rsync
สร้าง / อัปเดตน่าจะไม่สอดคล้องกัน:
หากคุณอัปเดตไฟล์ที่ rsync ได้สแกนไปแล้วจะไม่เห็นการอัปเดตจนกว่าจะมีการเรียกใช้ในอนาคต หากคุณอัปเดตไฟล์มันยังไม่ได้สแกนการเปลี่ยนแปลงจะได้รับการเคารพในปลายทาง หากคุณอัปเดตไฟล์ที่ทั้งสองมีและไม่ได้รับการสแกนคุณจะพบกับเวอร์ชั่นเก่าและใหม่ในปลายทาง
หากคุณเพิ่มไฟล์ไปยังไดเรกทอรีที่ถูกสแกนไปแล้วมันจะหายไปจากการคัดลอกปลายทางในครั้งนี้ หากคุณลบไฟล์ออกจากไดเรกทอรีที่ถูกสแกนไปแล้วมันจะถูกทิ้งไว้ในการคัดลอกปลายทางในครั้งนี้ ขึ้นอยู่กับวิธีที่คุณเรียกใช้rsync
ทรีทั้งต้นอาจถูกสแกนเมื่อเริ่มต้นหรืออาจถูกสแกนแบบเพิ่มหน่วยเมื่อกระบวนการซิงค์เกิดขึ้น
ในบางสถานการณ์rsync
จะเห็นความไม่สอดคล้องกันและเตือนคุณ หากคุณลบไฟล์หรือไดเรกทอรีย่อยออกจากไดเรกทอรีที่สแกนไปแล้ว แต่ไม่ได้สแกนเนื้อหาคุณจะได้รับข้อความแสดงข้อผิดพลาดเกี่ยวกับวัตถุที่หายไป ในสถานการณ์ที่คล้ายกันบางครั้งมันสามารถ (ถ้าขนาดและ / หรือการเปลี่ยนแปลงเวลา) นอกจากนี้ยังเตือนเกี่ยวกับไฟล์ที่เปลี่ยนการสแกนกลาง
สำหรับการสำรองข้อมูลบางอย่างความไม่สอดคล้องกันนี้อาจไม่ใช่ปัญหาใหญ่ แต่โดยส่วนใหญ่จะเป็นเช่นนั้นขอแนะนำให้คุณไม่ลองซิงค์แหล่งที่เปลี่ยนแปลงอย่างแข็งขัน
หากคุณใช้ LVM เพื่อแบ่งส่วนระบบจัดเก็บข้อมูลของคุณคุณสามารถใช้สแน็ปช็อตชั่วคราวเพื่อทำการสำรองข้อมูลแบบจุดต่อเวลา สิ่งนี้ต้องการให้คุณมีพื้นที่ว่างเพียงพอในกลุ่มวอลุ่มเพื่อสร้างวอลุ่มสแน็ปช็อตที่ใหญ่พอที่จะเก็บการเปลี่ยนแปลงทั้งหมดที่จะเกิดขึ้นในช่วงเวลาที่จำเป็นต้องใช้สแนปชอต ตรวจสอบเอกสาร LVM (หรือหนึ่งในตัวอย่างออนไลน์มากมาย: ค้นหา "การสำรองข้อมูลสแนปชอตของ LVM" หรือคล้ายกัน) เพื่อดูรายละเอียดเพิ่มเติม
แม้ไม่มี LVM ระบบไฟล์บางตัวก็ยังรองรับสแนปชอตด้วยตนเอง - ดังนั้นคุณอาจต้องการดูตัวเลือกนั้นด้วย
หากคุณต้องการสำรองข้อมูลไดรฟ์ข้อมูลขนาดใหญ่ที่ใช้งานอยู่โดยไม่ต้องหยุดทำงานนานและไม่สามารถใช้สแน็ปช็อตได้อาจเป็นการเพียงพอที่จะเรียกใช้การสแกน "สด" เพื่อเสร็จสิ้นจากนั้นหยุดการเข้าถึงโวลุ่มและเริ่มกระบวนการ rsync อื่น มีการเปลี่ยนแปลงน้อยมากมันจะสแกนแผนผังไดเรกทอรีจากนั้นอัปเดตไฟล์บางไฟล์) วิธีนี้ระยะเวลาที่คุณควรหลีกเลี่ยงการเปลี่ยนแปลงอาจสั้นกว่านี้มาก
Source HDD สามารถอ่านอะไรก็ได้ในขณะที่ rsync
Source HDD สามารถเขียนเนื้อหาใด ๆ ที่ไม่เกี่ยวข้องกับเนื้อหา rsync
ปลายทาง HDD สามารถอ่านอะไรก็ได้ในขณะที่ rsync
ปลายทาง HDD สามารถเขียนอะไรก็ได้ในขณะที่ rsync พร้อมกับเงื่อนไขเพื่อให้มีพื้นที่ว่างเพียงพอสำหรับเนื้อหาซิงค์
แน่นอนในกรณีใด ๆ จะมีการลดประสิทธิภาพ
คำตอบปัจจุบันทั้งหมดกำลังพูดถึงความปลอดภัยของข้อมูลในแง่ของความสอดคล้องและสมมติว่าเป็นฮาร์ดแวร์ที่สมบูรณ์แบบ
สิ่งที่ต้องพิจารณาก็คือความปลอดภัยของฮาร์ดแวร์เอง หากคุณมีฮาร์ดไดรฟ์ที่ไม่ได้สำรองข้อมูลซึ่งอาจจะล้มเหลว (คุณอาจยังไม่รู้) และคุณกำลังทำการสำรองข้อมูลเริ่มต้นอย่างสมบูรณ์อย่าใช้งาน อย่าติดตั้งแม้กระทั่งหากข้อมูลมีความสำคัญ คุณสามารถใช้เครื่องมือเช่นdd
การโคลนดิสก์เป็นอุปกรณ์บล็อก สิ่งที่คุณไม่ต้องการให้หัวดิสก์ค้นหาและอาจจะเขียนในขณะที่คุณพยายามสำรองข้อมูล บวกdd
ควรจะเร็วกว่าสำหรับการสำรองข้อมูลครั้งแรกเพราะมันเพียงแค่คัดลอกบิตตามลำดับ (ถ้าไดรฟ์ไม่เต็มส่วนใหญ่ฉันคิดว่า rsync จะชนะในกรณีเริ่มต้นเช่นกัน)
สำหรับการสำรองข้อมูลที่เพิ่มขึ้นในภายหลัง rsync เป็นตัวเลือกที่ดีและฉันเห็นด้วยกับคำตอบอื่น ๆ 100%
dd
ไม่ใช่ตัวเลือกที่ดีที่สุด ใช้ddrescue
แทน มันจัดการกับความล้มเหลวบางส่วนได้ดีกว่ามาก แต่นั่นไม่ใช่ข้อพิจารณาในคำถามต้นฉบับ