linux จัดการกับคำสั่งย้ายอย่างไร


12

linux จัดการคำสั่งย้ายอย่างไรภายใต้ประทุน?

สมมติว่าฉันย้ายบ้าน dir ของฉัน

/home/me

และฉันย้ายสิ่งนี้ไปยังไดเรกทอรีอื่น

/home/foo/me

ไฟล์และไดเรกทอรีพา ธ ทั้งหมดมีการmeเปลี่ยนแปลงอย่างไร ฉันรู้ว่าDesktopdir ของฉันmeอยู่ในขณะนี้/home/foo/me/Desktopเช่นกันDocuments /home/foo/me/Documentsแต่ระบบไฟล์อัปเดตทุกเส้นทางภายใต้meเพื่อให้ชัดเจนถึงการเปลี่ยนแปลงหรือไม่ ไม่ได้มีประสิทธิภาพมากนักและอาจไม่เป็นเช่นนี้

ฉันจะรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ที่ไหน


5
เกี่ยวกับประสิทธิภาพ: ไม่ว่าจะไม่มีประสิทธิภาพ เมื่อคุณย้ายข้อมูลไปยังไดเรกทอรีอื่นข้อมูลนั้นจะไม่ถูกอ่านในที่เดียวและเขียนเป็นอื่น ระบบไฟล์มีชุดตัวชี้ไปยังบล็อกของข้อมูล ในกรณีของการย้ายเพียงแค่พอยน์เตอร์เท่านั้นที่ได้รับการอัพเดต
Jos

อาว่าอาจเป็นสิ่งที่เจฟฟ์หมาย ...
จาค็อบ Vlijm

@Jos การกระจายตัวมาจากไหน
zero298

3
@ zero298 ไม่การแตกแฟรกเมนต์โดยทั่วไปคือ isse ที่แตกต่างกันอย่างสิ้นเชิงและไม่เกี่ยวข้อง - การแตกแฟรกเมนต์ไม่ได้เกี่ยวข้องกับเนื้อหาของโครงสร้างโฟลเดอร์ แต่เกี่ยวกับเนื้อหาของไฟล์เดี่ยวที่กระจัดกระจายไปทั่ว platters ดิสก์ทางกายภาพ (แทนที่จะเป็นบรรทัดต่อเนื่องเดี่ยว) / เขียนประสิทธิภาพของไฟล์ดังกล่าว เนื้อหาของแผนผังโฟลเดอร์ขนาดใหญ่ / ลึก / แตกกิ่งไม่คาดว่าจะเป็นแบบต่อเนื่องและเคลื่อนที่ไปตามทางนั้น
Peteris

คำตอบ:


21

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

เพื่อดู inode ls -ial foldernameของโฟลเดอร์ของคุณใช้คำสั่ง คอลัมน์แรกแสดงหมายเลขไอโหนดของไฟล์ สำหรับแต่ละโฟลเดอร์มีสองชื่อที่ไม่ซ้ำกัน.และ..แสดงถึงไดเรกทอรีของตัวเองและไดเรกทอรีหลักตามลำดับ

คุณสามารถลองทำการทดสอบเพื่อย้ายไดเรกทอรี (พูด / home / me / source) ด้วยไดเรกทอรีย่อยและไฟล์ไปยังไดเรกทอรีอื่น (เช่น / home / me / บาง / อื่น /) หมายเลข inode ของ / home / me / source และเนื้อหาทั้งหมดยังคงเหมือนเดิมก่อนและหลังการย้าย ความแตกต่างเพียงอย่างเดียวคือหมายเลข inode ..ซึ่ง แต่เดิมจะแบ่งปันหมายเลข inode ของ / home / me และตอนนี้กลายเป็นหมายเลข inode ของ / home / me / ที่ไหนสักแห่ง / อื่น ในถ้อยคำอย่างง่ายลีนุกซ์อัพเดตลิงก์ไปยังแหล่งไดเรกทอรีแล้วเสร็จ

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


3
ถูกต้องตราบใดที่การย้ายไม่ข้ามขอบเขตของระบบไฟล์
kojiro

3

หากคุณสนใจว่าโปรแกรมเช่นmvและcpทำงานอย่างไรโปรดจำไว้ว่ามันเป็นโอเพ่นซอร์สและคุณสามารถรับคำอธิบายที่แม่นยำที่สุดได้โดยการอ่านรหัส ที่นี่มีลิงก์ไปยังยูทิลิตี้หลักทั้งหมด โดยเฉพาะคุณสามารถหาmv ได้ที่นี่


6
you can get the most accurate explanation by reading through the code.ฉันขอแตกต่าง เป็นเวลานานที่ฉันไม่เคยมีประสบการณ์กับซีและตอนนี้ฉันก็ไม่ชอบมัน นอกจากนี้ซอร์สโค้ดมักจะได้รับการปรับให้เหมาะสมที่สุดและมีกรณีขอบมากกว่าที่จำเป็น คำอธิบายเชิงสัญลักษณ์มักช่วยได้มากขึ้น
Shelvacu

1
@shelvacu "มีกรณีขอบมากกว่าที่จำเป็น" รหัสที่ทนทานจัดการกับขอบทั้งหมดที่อาจมีอยู่ อย่างไรก็ตามมันเป็นความจริงที่การนำเสนอกรณีขอบทั้งหมดในคำอธิบายแรกของแนวคิดอาจไม่จำเป็น
OregonTrail

@OraTraTrail ขออภัยนั่นคือสิ่งที่ฉันหมายถึงรหัสมีกรณีขอบมากขึ้นแล้วจะต้องมีคำอธิบาย
Shelvacu

ฉันดีใจที่นั่นเป็นความรู้สึกเริ่มแรกของคุณ แต่คุณก็ยังรู้สึกว่าฉันไม่ได้ให้ความสำคัญกับ "การจัดการ " รหัสดีเขียนไม่ได้มีกรณีขอบก็จัดการกรณีขอบ ;) ฉันรู้ว่าคุณมาจากสถานที่ที่เหมาะสมที่นี่ แต่คุณควรระวังคำกริยาของคุณ
OregonTrail
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.