ฉันค้นหาไปรอบ ๆ และพยายามเข้าใจความแตกต่างระหว่างฮาร์ดลิงก์และลิงก์สัญลักษณ์ (ซอฟต์ลิงก์)
ฉันพบลิงค์นี้มีประโยชน์มาก แต่ฉันยังไม่ชัดเจนมาก ฉันเข้าใจว่าซอฟต์ลิงค์ไม่ใช่ไฟล์ต้นฉบับ แต่เป็นฮาร์ดลิงก์ที่คัดลอกหรือไม่?
ฉันค้นหาไปรอบ ๆ และพยายามเข้าใจความแตกต่างระหว่างฮาร์ดลิงก์และลิงก์สัญลักษณ์ (ซอฟต์ลิงก์)
ฉันพบลิงค์นี้มีประโยชน์มาก แต่ฉันยังไม่ชัดเจนมาก ฉันเข้าใจว่าซอฟต์ลิงค์ไม่ใช่ไฟล์ต้นฉบับ แต่เป็นฮาร์ดลิงก์ที่คัดลอกหรือไม่?
คำตอบ:
ในการใช้การเปรียบเทียบจากการส่งจดหมายลิงค์สัญลักษณ์คือสิ่งที่เหมือนกับที่อยู่ส่งต่อ ... เมื่อมีบางสิ่งพยายามเปิดลิงก์สัญลักษณ์มันจะเปิด "ไฟล์" (ไม่ใช่ไฟล์จริง) เก็บไว้ที่นั่นและเห็นว่ามัน ควรดูไฟล์ที่มีชื่อแตกต่างกันดังนั้นจึงเปิดไฟล์อื่นแทน
การเชื่อมโยงแบบฮาร์เหมือนการมีที่อยู่สองแห่งสำหรับสถานที่เดียวกัน (แน่นอนว่ามันเป็นไปไม่ได้ในโลกฝ่ายเนื้อหนัง) เมื่อมีบางสิ่งพยายามอ่านชื่อไฟล์ (ที่อยู่) พวกเขาจะได้รับไฟล์ฟิสิคัลเดียวกัน (ตำแหน่ง)
ดังนั้นฮาร์ดลิงก์ไม่ใช่สำเนาเพราะไฟล์จะถูกจัดเก็บเพียงครั้งเดียว (แต่มีหลายชื่อ) แต่มันทำตัวเหมือนสำเนามากเพราะคุณสามารถเข้าถึงข้อมูลเดียวกันจากชื่อไฟล์สองชื่อ
/foo
และ/bar
การเปลี่ยนแปลง/foo
จะเปลี่ยน/bar
หากพวกเขาเป็นฮาร์ดลิงก์(เพราะทั้งสองชื่อเป็นไฟล์เดียวกัน) แต่ไม่ใช่ถ้าพวกเขาเป็น สำเนา (เพราะเป็นไฟล์สองไฟล์ที่เป็นอิสระโดยสมบูรณ์)
ไม่ A (ลิงก์ลำดับที่สองและถัดไปทั้งหมด) ไปยังไฟล์เป็นตัวชี้ไปยัง inodes เดียวกันบนดิสก์
เมื่อคุณสร้างฮาร์ดลิงก์หมายความว่าไฟล์เดียวกันจะปรากฏในสองตำแหน่งที่แตกต่างกัน ไฟล์เป็นเพียงการอ้างอิงถึงชุดของบล็อกข้อมูลบนดิสก์ดังนั้นฮาร์ดลิงก์จะเพิ่มการอ้างอิงอื่น ไฟล์จะถูกลบอย่างแท้จริง การอ้างอิงจะถูกลบออกไปดังนั้นจึงเป็นไปไม่ได้ในการเข้าถึงข้อมูล นั่นเป็นสาเหตุที่เมื่อคุณลบไฟล์ที่คุณสร้างเป็นลิงก์ฮาร์ดไฟล์ต้นฉบับอื่นจะยังคงอยู่และกลับกัน
ในอีกทางหนึ่ง symlink เป็นทิศทางในการเข้าถึงไฟล์ด้วยชื่อที่แน่นอน มันบอกโปรแกรมใด ๆ "ถ้าคุณต้องการใช้ไฟล์นี้มันอยู่ที่นั่น" นี่คือสาเหตุที่ถ้าคุณลบเป้าหมายของ symlink ตัวแบ่ง symlink และหากคุณลบลิงก์เป้าหมายจะไม่ได้รับผลกระทบ
ไฟล์ในระบบ * nix มีสองส่วน ส่วนหนึ่งของข้อมูลและอื่น ๆ เป็น inode inode เก็บเมตาดาต้า (ข้อมูลที่เกี่ยวข้องกับข้อมูลเช่นตำแหน่งที่เก็บข้อมูล HDD) ฮาร์ดลิงก์ทำให้สร้างสำเนาที่แน่นอนของ inode นี้ ในขณะที่ลิงค์ sym สร้าง inode ซึ่งชี้ไปที่ inode ของ inode จริง ดังนั้นข้อมูลไอโหนดในฮาร์ดลิงก์จะเหมือนกับเป้าหมาย แต่ข้อมูลต่างกันใน sym ลิงค์ ดังนั้นเพื่อให้เรื่องสั้นสั้นลิงค์ sym และฮาร์ดลิงก์แตกต่างกันตามเนื้อหาของข้อมูล inode ไม่ใช่ข้อมูลไฟล์ นี่คือความเข้าใจของฉันแตกต่างระหว่าง sym ลิงค์และฮาร์ดลิงค์ ฉันมีช่วงเวลาที่ยากลำบากในตอนแรกที่เข้าใจสิ่งนี้เพราะนี่คือสิ่งที่นักพัฒนายิ่งกว่าและฉันไม่ใช่นักพัฒนา โอ้คนที่มีความรู้โปรดแก้ไขฉันถ้าฉันผิด