ฮาร์ดไดรฟ์ทั่วไปใช้ประโยชน์อะไรบ้าง?


9

ทุกคนที่เคยชินกับ Windows สามารถจินตนาการว่า symlink คืออะไรและใช้อย่างไร ในทางกลับกันแนวคิดฮาร์ดลิงก์นั้นต่างกับ Windows (ฉันแก้ไขใช่ไหม)

ฉันต้องการทราบว่าอะไรคือการใช้งานทั่วไปในการเชื่อมโยงอย่างหนักใน Linux ฉันเคยเห็นโพสต์ต่างๆอธิบายถึงความแตกต่างในวิธีการทำงานของมัน สิ่งที่ฉันถามคือสถานการณ์ทั่วไปเมื่อผู้ใช้ควรใช้ฮาร์ดลิงก์แทนการเชื่อมโยงหลายมิติดีกว่า


3
คำถามนี้ถูกถามใน Unix & Linux stackexchange: ทำไมฮาร์ดลิงก์มีอยู่?
Flimm

คำตอบ:


9

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

ชี้แจง:

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


7

ฮาร์ดลิงก์อนุญาต ...

  • ปฏิบัติการเดี่ยวที่มีมากกว่าหนึ่งชื่อ

    ตัวอย่าง:

    ls -l /bin | grep -v ' 1 ' | sortจะแสดงรายชื่อคนใน/binสำหรับคุณ ผลลัพธ์ ...

    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 gunzip
    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 uncompress
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bunzip2
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzcat
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzip2
    

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

  • ไฟล์เดียวที่จะเข้าถึงได้หลายเส้นทาง

    ใช้ตัวอย่างผู้จัดการแพ็กเกจที่สร้างไดเร็กทอรี / usr / share / doc / $ packagename สำหรับแต่ละแพ็กเกจที่ติดตั้งและภายในไฟล์นั้นชื่อ LICENSE พร้อมกับข้อมูลลิขสิทธิ์ของแพ็คเกจ แพ็คเกจจำนวนมากในระบบ Linux ทั่วไปได้รับลิขสิทธิ์ GPL ดังนั้นแทนที่จะมีสำเนา 200 สำเนาของ GPL ในระบบไฟล์อาจมีเพียงหนึ่งสำเนาและ 199 ลิงก์ ptman @ Serverfault

สาเหตุที่ฮาร์ดลิงก์ทำงานที่นี่ (และซอฟต์ลิงก์ไม่): การลบเพียงหนึ่งในฮาร์ดลิงก์ไม่ได้เป็นการลบไฟล์เอง


2
"ตัวอย่าง: การย้าย ( mv) เป็นสำเนา ( cp) + a remove ( rm)" สิ่งนี้เป็นจริงเฉพาะเมื่อแหล่งที่มาและปลายทางอยู่บนการเมานต์ที่ต่างกัน มิฉะนั้นmvจะย้ายเฉพาะชื่อไม่ใช่ไฟล์
Paddy Landau

1
ถ้าคุณต้องการไปทางเทคนิค: mv เปลี่ยน inode ไม่ใช่ชื่อ แต่คุณถูกต้อง: ดูเหมือนว่าตัวอย่างจะเก่าไปหน่อยในปัจจุบันและฉันควรใช้ gzip เป็นตัวอย่าง;)
Rinzwind

3
เรากำลังจะปิดหัวข้อเล็กน้อย แต่ฉันเพิ่งทดสอบสิ่งนี้ ตราบใดที่ไฟล์ยังคงอยู่บนเมาท์เดียวกันให้mvเปลี่ยนชื่อเท่านั้น ไอโหนดยังคงเหมือนเดิม
Paddy Landau

สิ่งนี้ไม่ได้อธิบายว่าทำไมคุณไม่สามารถใช้ symlink ซึ่งคุณสามารถบันทึกข้อมูลพิเศษบางส่วนได้ นี้เป็น addressed อย่างถูกต้องในคำตอบนี้
Ken Sharp
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.