ทำไมจำนวนไฟล์ถึงแตกต่างกัน
เห็นได้ชัดว่าคุณกำลังมุ่งเน้นเพียงด้าน "คัดลอกข้อมูล" ของ "คัดลอกไฟล์" ไฟล์เป็นมากกว่าข้อมูล มันเป็นนิติบุคคลในระบบแฟ้ม ไฟล์มีชื่อและคุณสมบัติและการอนุญาต ข้อมูลเพิ่มเติมทั้งหมดเกี่ยวกับไฟล์จะต้องทำซ้ำพร้อมกับข้อมูลเมื่อ "คัดลอกไฟล์" มีจำนวนดิสก์ I / O จำนวนมากเพื่อดำเนินการโอเวอร์เฮดของระบบไฟล์นี้
ขั้นตอนการคัดลอกหนึ่ง (1) ไฟล์ในระบบไฟล์ทั่วไปจะเป็นดังนี้:
- ค้นหาไฟล์ต้นฉบับในระบบไฟล์ (ก)
- อ่านจากดิสก์รายการไดเรกทอรีสำหรับไฟล์ต้นฉบับ
- ตรวจสอบสิทธิ์การอ่าน
- ค้นหาไฟล์ปลายทางในระบบไฟล์ (ข)
- ตรวจสอบสิทธิ์การเขียนในไดเรกทอรีปลายทาง
- ขยายไดเร็กทอรีหากจำเป็นเพื่อรองรับไฟล์ใหม่ (ค)
- อัพเดตไดเร็กทอรีบนดิสก์ (C1)
- ค้นหาบล็อกฟรีจัดสรรบล็อกและอัปเดตตารางอีกครั้ง (ง)
- อ่านข้อมูลไฟล์และคัดลอกไปยังไฟล์ปลายทาง (เช่นคัดลอก "ไฟล์")
- อัพเดตรายการไดเร็กทอรีสำหรับไฟล์ใหม่ด้วย (ขนาดและเวลา) (จ)
- อัพเดตเวลาเข้าถึงของรายการไดเร็กทอรีต้นทาง (ฉ)
(a)อย่างน้อยที่สุดสิ่งนี้หมายถึงการค้นหาไดเรกทอรีปัจจุบัน หรือพา ธ อาจเริ่มต้นที่รูทของระบบไฟล์และต้องมีการสำรวจไดเรกทอรีหลายระดับ
(b)อย่างน้อยที่สุดนี้หมายถึงการค้นหาไดเรกทอรีปัจจุบัน หรือพา ธ อาจเริ่มต้นที่รูทของระบบไฟล์และต้องมีการสำรวจไดเรกทอรีหลายระดับ หากไฟล์ปลายทางมีอยู่แล้วให้กำหนดวิธีการคัดลอกที่จะดำเนินการหรือยกเลิก หากไฟล์ปลายทางไม่มีอยู่ต้องสร้างรายการไดเรกทอรีใหม่และอาจเกี่ยวข้องกับการขยายไดเรกทอรี (เช่นไฟล์บล็อก (คลัสเตอร์) ค่าใช้จ่าย )
(c)หากต้องขยายไดเรกทอรีให้จัดสรรบล็อกใหม่โดยค้นหาบล็อกว่างปรับเปลี่ยนตารางการจัดสรรด้วยการจัดสรรใหม่แล้วเขียนบล็อกออกไปยังดิสก์ เนื่องจากระบบไฟล์ส่วนใหญ่เก็บรักษาตารางการจัดสรรไว้หลายชุดดังนั้นจึงหมายถึงการเขียนลงดิสก์หลายครั้ง
(c1)เมื่อไดเรกทอรีปลายทางตั้งอยู่ให้อ่านบล็อกไดเรกทอรีจากดิสก์แก้ไขด้วยรายการไดเรกทอรีใหม่สำหรับไฟล์ที่คัดลอกแล้วเขียนบล็อกออกไปยังดิสก์
(d)ในการคัดลอกไฟล์จัดสรรบล็อกด้วยการค้นหาบล็อกว่างปรับเปลี่ยนตารางการจัดสรรด้วยการจัดสรรใหม่แล้วเขียนบล็อกลงในดิสก์ เนื่องจากระบบไฟล์ส่วนใหญ่เก็บรักษาตารางการจัดสรรไว้หลายชุดดังนั้นจึงหมายถึงการเขียนลงดิสก์หลายครั้ง เพื่อรักษาความถูกต้องของข้อมูลระบบไฟล์อาจไม่พยายามรวมการดำเนินการเขียนดิสก์ (ล่าช้าและผสาน) สำหรับไดเรกทอรีและตารางการจัดสรร แต่ควรดำเนินการเขียนทันทีเมื่อสร้างไฟล์ใหม่และบล็อกการจัดสรร
(e)เมื่อคัดลอกข้อมูลเรียบร้อยแล้วให้อัปเดตรายการไดเรกทอรีใหม่สำหรับไฟล์ที่คัดลอกด้วยความยาวไฟล์และเวลาที่เหมาะสมจากนั้นเขียนบล็อกไดเรกทอรีออกไปยังดิสก์
(f) อัปเดตรายการไดเรกทอรีต้นทางด้วยการประทับเวลา "เข้าถึง" ใหม่แล้วเขียนบล็อกไดเรกทอรีออกไปยังดิสก์
ดังนั้นแทนที่จะมีเพียงไฟล์เดียวคำถามของคุณจะถามว่าทำสิ่งนี้ทั้งหมดสำหรับไฟล์หนึ่งพันไฟล์อาจเพิ่มเวลาที่ใช้ในการคัดลอกส่วนข้อมูลของไฟล์หรือไม่ หากคุณคัดลอกไฟล์เพียง 24MB คุณจะมีสิ่งที่จะเปรียบเทียบกับเวลาในการคัดลอกของคุณหนึ่งพันไฟล์
เมื่อทำการสำรองข้อมูลระบบไฟล์การคัดลอกแต่ละไฟล์ไปยังระบบไฟล์อื่นบนดิสก์หรือพาร์ติชั่นนั้นไม่ค่อยได้รับการว่าจ้างเพราะเป็นกระบวนการที่ค่อนข้างช้าตามที่คุณค้นพบ วิธีที่เร็วกว่าคือการสร้างและเขียนไฟล์เก็บถาวรเดียวที่เก็บรายการไดเรกทอรีต้นทางและเนื้อหาไฟล์ในรูปแบบไฟล์พิเศษ โปรแกรมสำรองข้อมูลและคำสั่ง * nix 'tar' สามารถส่งออกไฟล์เก็บถาวรได้ (โปรดทราบว่า 'tar' เพียงจัดการไฟล์เก็บถาวรและไม่ใช้การบีบอัดเช่นโปรแกรมอรรถประโยชน์การบีบอัดข้อมูล + การบีบอัด) วิธีการสำรองข้อมูลที่เร็วที่สุดคือการเขียนไปยังอุปกรณ์บล็อก (แทนที่จะเป็นระบบไฟล์บนอุปกรณ์) เพื่อให้ระบบไฟล์ต้นทาง ละเว้น (ถือว่าเป็นข้อมูลเพิ่มเติม) และสามารถคัดลอกรูปภาพแบบบล็อกต่อบล็อกของอุปกรณ์ต้นทางได้