กลับไปหน้าบทความ

อ่าน 5 นาที

ฮาร์ดลิงก์

ใน ด้านคอมพิวเตอร์ ฮาร์ด ลิงก์ คือ รายการในไดเร็กทอรี (ใน ระบบไฟล์ แบบ ไดเร็กทอรี ) ที่เชื่อมโยงชื่อกับ ไฟล์ ดังนั้นแต่ละไฟล์จะต้องมีฮาร์ดลิงก์อย่างน้อยหนึ่งรายการ...

ฮาร์ดลิงก์

ในด้านคอมพิวเตอร์ฮาร์ดลิงก์คือรายการในไดเร็กทอรี (ในระบบไฟล์แบบไดเร็กทอรี ) ที่เชื่อมโยงชื่อกับไฟล์ดังนั้นแต่ละไฟล์จะต้องมีฮาร์ดลิงก์อย่างน้อยหนึ่งรายการ การสร้างฮาร์ดลิงก์เพิ่มเติมสำหรับไฟล์จะทำให้สามารถเข้าถึงเนื้อหาของไฟล์นั้นได้ผ่านเส้นทาง เพิ่มเติม (เช่น ผ่านชื่อที่แตกต่างกันหรือในไดเร็กทอรีที่แตกต่างกัน) [ 1 ]ซึ่งทำให้เกิดเอฟเฟกต์นามแฝง : กระบวนการสามารถเปิดไฟล์ได้โดยใช้เส้นทางใดเส้นทางหนึ่งและเปลี่ยนแปลงเนื้อหาได้ ในทางตรงกันข้ามซอฟต์ลิงก์หรือ"ทางลัด"ไปยังไฟล์ไม่ใช่ลิงก์โดยตรงไปยังข้อมูล แต่เป็นการอ้างอิงถึงฮาร์ดลิงก์หรือซอฟต์ลิงก์อื่น

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

ระบบปฏิบัติการที่สอดคล้องกับPOSIXเช่นLinux , Android , macOS และ ตระกูลWindows NTที่ไม่สอดคล้องกับ POSIX [ 2 ]รองรับฮาร์ดลิงก์หลายรายการไปยังไฟล์เดียวกัน ขึ้นอยู่กับระบบไฟล์ ตัวอย่างเช่นNTFSและReFSรองรับฮาร์ดลิงก์[ 3 ]ในขณะที่FATไม่รองรับ

การดำเนินการ

ภาพประกอบแสดงแนวคิดของการเชื่อมโยงแบบฮาร์ดลิงก์

สมมติว่ามีฮาร์ดลิงก์สองลิงก์ ชื่อ "LINK A.TXT" และ "LINK B.TXT" ที่ชี้ไปยังข้อมูลเดียวกันโปรแกรมแก้ไขข้อความเปิด "LINK A.TXT" แก้ไข และบันทึก เมื่อโปรแกรมแก้ไขข้อความ (หรือแอปพลิเคชันอื่นใด) เปิด "LINK B.TXT" ก็จะเห็นการเปลี่ยนแปลงที่เกิดขึ้นกับ "LINK A.TXT" เนื่องจากชื่อไฟล์ทั้งสองชี้ไปยังข้อมูลเดียวกัน ดังนั้นจากมุมมองของผู้ใช้ นี่คือไฟล์เดียวที่มีชื่อไฟล์หลายชื่อ การแก้ไขชื่อไฟล์ใดๆ จะแก้ไข "ไฟล์ทั้งหมด" อย่างไรก็ตาม การลบชื่อไฟล์ "ใดๆ" ยกเว้นชื่อไฟล์สุดท้าย จะทำให้ไฟล์นั้นยังคงอยู่

อย่างไรก็ตาม โปรแกรมแก้ไขข้อความบางโปรแกรม เช่นGNU Emacsจะทำลายแนวคิดของฮาร์ดลิงก์ เมื่อเปิดไฟล์เพื่อแก้ไข เช่น "LINK B.TXT" Emacs จะเปลี่ยนชื่อ "LINK B.TXT" เป็น "LINK B.TXT~" โหลด "LINK B.TXT~" เข้าสู่โปรแกรมแก้ไข และบันทึกเนื้อหาที่แก้ไขแล้วลงใน "LINK B.TXT" ที่สร้างขึ้นใหม่ ตอนนี้ "LINK A.TXT" และ "LINK B.TXT" จะไม่ได้ใช้ข้อมูลร่วมกันอีกต่อไป (พฤติกรรมนี้สามารถเปลี่ยนแปลงได้โดยใช้ตัวแปรของ Emacs backup-by-copying)

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

การนับอ้างอิง

ภาพประกอบอย่างง่ายของฮาร์ดลิงก์ในระบบไฟล์ Unix ทั่วไป โปรดสังเกตว่าไฟล์ "A" และ "D" ต่างชี้ไปยังรายการดัชนีเดียวกันใน ตาราง inode ของระบบไฟล์ ทำให้จำนวนการอ้างอิงเท่ากับ 2

ระบบไฟล์ส่วนใหญ่ที่รองรับฮาร์ดลิงก์จะใช้การนับการอ้างอิงระบบไฟล์จะเก็บ ค่า จำนวนเต็มไว้กับแต่ละ ส่วน ข้อมูล เชิงตรรกะ ซึ่งแสดงถึงจำนวนรวมของฮาร์ดลิงก์ที่สร้างขึ้นเพื่อชี้ไปยังข้อมูลนั้น เมื่อมีการสร้างลิงก์ใหม่ ค่านี้จะเพิ่มขึ้นหนึ่ง เมื่อมีการลบลิงก์ ค่านี้จะลดลงหนึ่ง เมื่อตัวนับเป็นศูนย์ ระบบปฏิบัติการจะปล่อยส่วนข้อมูลเชิงตรรกะ (ระบบปฏิบัติการอาจไม่ทำเช่นนั้นทันที เช่น เมื่อมีไฟล์ที่เปิดค้างอยู่จำนวนมาก ด้วยเหตุผลด้านประสิทธิภาพ หรือเพื่อเปิดใช้งาน คำสั่ง กู้คืนไฟล์ )

นี่เป็นวิธีการง่ายๆ ที่ระบบไฟล์ใช้ในการติดตามการใช้งานพื้นที่จัดเก็บข้อมูลที่กำหนด โดยค่าศูนย์แสดงถึงพื้นที่ว่าง และค่าที่ไม่ใช่ศูนย์แสดงถึงพื้นที่ที่ใช้งานแล้ว การรักษาค่านี้ไว้จะรับประกันได้ว่าไม่มีฮาร์ดลิงก์ที่ชี้ไปยังที่ใดที่หนึ่งโดยไม่ได้ใช้งาน ส่วนข้อมูลและinode ที่เกี่ยวข้อง จะถูกเก็บรักษาไว้ตราบใดที่มีฮาร์ดลิงก์ (การอ้างอิงไดเร็กทอรี) เพียงลิงก์เดียวที่ชี้ไปยังส่วนนั้น หรือกระบวนการใดๆ ยังคงเปิดไฟล์ที่เกี่ยวข้องอยู่

ใน ระบบปฏิบัติการที่รองรับ POSIXจำนวนการอ้างอิงสำหรับไฟล์หรือไดเร็กทอรีจะถูกส่งคืนโดย การเรียกใช้ระบบ stat()หรือ fstat() ในst_nlinkฟิลด์ของstruct stat.

ข้อจำกัด

เพื่อป้องกันลูปในระบบไฟล์ และเพื่อให้การตีความ..ไฟล์ " " (ไดเร็กทอรีแม่) สอดคล้องกัน ระบบปฏิบัติการโดยทั่วไปจึงไม่อนุญาตให้สร้างฮาร์ดลิงก์ไปยังไดเร็กทอรีUNIX System Vอนุญาตให้สร้างได้ แต่มีเพียงผู้ใช้ระดับสูงสุด เท่านั้น ที่มีสิทธิ์สร้างลิงก์ดังกล่าว[ 4 ] Mac OS X v10.5 (Leopard)และเวอร์ชันใหม่กว่าใช้ฮาร์ดลิงก์บนไดเร็กทอรีสำหรับ กลไกการสำรองข้อมูล Time Machineเท่านั้น[ 5 ]

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

จำนวนสูงสุดของฮาร์ดลิงก์ไปยังไฟล์เดียวบนระบบไฟล์ประเภทใดประเภทหนึ่งนั้นถูกจำกัดด้วยขนาดของตัวนับการอ้างอิงของระบบไฟล์และขนาดของสำเนาของตัวนับการอ้างอิงในโครงสร้างข้อมูลต่อไฟล์ในหน่วยความจำของระบบปฏิบัติการ นอกจากนี้ยังอาจถูกจำกัดด้วยการเลือกนโยบายในโค้ดของระบบปฏิบัติการ การเกินจำนวนลิงก์ที่อนุญาตจะส่งผลให้เกิดข้อผิดพลาด ใน AT&T Unix System 6ซึ่งวางจำหน่ายในปี 1975 จำนวนฮาร์ดลิงก์ที่อนุญาตคือ 127 [ 6 ] [ 7 ]บนระบบที่คล้าย Unix ตัวนับในหน่วยความจำคือ 4,294,967,295 (บนเครื่อง 32 บิต) หรือ 18,446,744,073,709,551,615 (บนเครื่อง 64 บิต) ในระบบไฟล์บางระบบ จำนวนฮาร์ดลิงก์จะถูกจำกัดอย่างเข้มงวดมากขึ้นด้วยรูปแบบบนดิสก์ ตัวอย่างเช่น ในLinux 3.11 ระบบไฟล์ ext4จำกัดจำนวนฮาร์ดลิงก์บนไฟล์ไว้ที่ 65,000 [ 8 ] Windowsบังคับใช้ข้อจำกัดฮาร์ดลิงก์ 1024 รายการสำหรับไฟล์บนวอลุ่มNTFS [ 9 ]

ในLinux Weekly Newsนีล บราวน์วิจารณ์ฮาร์ดลิงก์ว่าต้องดูแลรักษามาก เนื่องจากทำให้การออกแบบโปรแกรมที่จัดการโครงสร้างไดเร็กทอรีซับซ้อนขึ้น รวมถึงโปรแกรมจัดเก็บไฟล์และเครื่องมือจัดการการใช้งานดิสก์ แอปเหล่านี้ต้องระมัดระวังในการลบไฟล์ที่ซ้ำกันซึ่งเชื่อมโยงหลายครั้งในลำดับชั้นบราวน์ตั้งข้อสังเกตว่าPlan 9 จาก Bell Labsซึ่งเป็นระบบปฏิบัติการที่ตั้งใจจะมาแทนที่ Unix ไม่ได้รวมแนวคิดของฮาร์ดลิงก์ไว้ด้วย[ 10 ]

การสนับสนุนแพลตฟอร์ม

Windows NT 3.1และเวอร์ชันที่ใหม่กว่ารองรับฮาร์ดลิงก์บนระบบไฟล์NTFS [ 11 ] Windows 2000 มีCreateHardLink()ฟังก์ชันสำหรับสร้างฮาร์ดลิงก์ แต่ใช้ได้เฉพาะกับไฟล์เท่านั้น ไม่ใช่กับไดเร็กทอรี[ 12 ] ฟังก์ชัน นี้DeleteFile()สามารถลบฮาร์ดลิงก์ได้

ในการสร้างฮาร์ดลิงก์บน Windows ผู้ใช้ปลายทางสามารถใช้คำสั่งต่อไปนี้:

ผู้ใช้สามารถตรวจสอบไฟล์เพื่อหาฮาร์ดลิงก์ได้โดยใช้คำสั่งต่อไปนี้:

  • ประโยชน์[ 13 ]fsutil
  • คำ สั่ง cmdlet Get-ItemและGet-ChildItemcmdlet ของ PowerShell คำสั่ง cmdlet เหล่านี้แทนไฟล์แต่ละไฟล์ด้วยออบเจ็กต์ PowerShell จะเพิ่มคุณสมบัติ LinkType แบบอ่านอย่างเดียวให้กับแต่ละออบเจ็กต์ คุณสมบัตินี้ประกอบด้วยHardLinkสตริง " " หากไฟล์ที่เกี่ยวข้องมีฮาร์ดลิงก์หลายรายการ[ 16 ]

Windows Component Storeใช้ฮาร์ดลิงก์เพื่อติดตามเวอร์ชันต่างๆ ของส่วนประกอบที่จัดเก็บไว้ในฮาร์ดดิสก์ไดรฟ์

ในระบบที่คล้าย Unix link()การเรียกใช้ระบบสามารถสร้างฮาร์ดลิงก์เพิ่มเติมไปยังไฟล์ที่มีอยู่ได้ ในการสร้างฮาร์ดลิงก์ ผู้ใช้ปลายทางสามารถใช้คำสั่งต่อไปนี้:

  • ยูทิลิตี้ln
  • ยูทิลิตี้ลิงก์
  • cmdlet New-Itemของ PowerShell [ 15 ]

ผู้ใช้สามารถตรวจสอบไฟล์เพื่อหาฮาร์ดลิงก์ได้โดยใช้คำสั่งต่อไปนี้:

  • คำstatสั่ง
  • คำls -lสั่ง
  • คำ สั่ง Get-ItemและGet-ChildItemcmdlet ของ PowerShell (ดูด้านบน) [ 16 ]

ซอฟต์แวร์จำลองหรือซอฟต์แวร์ความเข้ากันได้แบบ Unix ที่ทำงานบน Microsoft Windows เช่นCygwinและSubsystem for UNIX-based Applicationsช่วยให้สามารถใช้งานอินเทอร์เฟซ POSIX ได้

OpenVMSรองรับฮาร์ดลิงก์บนระบบไฟล์ODS-5 [ 17 ]ต่างจาก Unix VMS สามารถสร้างฮาร์ดลิงก์ไปยังไดเร็กทอรีได้

ดูเพิ่มเติม

  • ลิงก์เชิงสัญลักษณ์ : ชี้ไปยังลิงก์ถาวร ไม่ใช่ข้อมูลไฟล์โดยตรง ดังนั้นจึงใช้งานได้ข้ามไดรฟ์และระบบไฟล์ต่างๆ
  • ลิงก์ NTFS : อธิบายรายละเอียดเกี่ยวกับลิงก์สี่ประเภทที่ NTFS รองรับ ได้แก่ ฮาร์ดลิงก์ ลิงก์สัญลักษณ์ จุดเชื่อมต่อ และจุดเชื่อมต่อไดรฟ์
  • ทางลัด : ไฟล์ขนาดเล็กที่ชี้ไปยังไฟล์อื่นในตำแหน่งที่อยู่ภายในเครื่องหรือบนเซิร์ฟเวอร์
  • freedup : freedupคำสั่งนี้จะเพิ่มพื้นที่ว่างในดิสก์โดยการแทนที่ข้อมูลที่ซ้ำกันด้วยฮาร์ดลิงก์ที่สร้างขึ้นโดยอัตโนมัติ
  • rsync : รองรับ--link-dest=DIRเพื่อให้โฟลเดอร์สำรองข้อมูลใหม่ใช้ฮาร์ดลิงก์ของการสำรองข้อมูลก่อนหน้าหากไม่มีการเปลี่ยนแปลง[ 18 ]เป็นคุณสมบัติประหยัดพื้นที่และเวลา ( การสำรองข้อมูลแบบเพิ่มทีละน้อย ) [ 19 ] [ 20 ] [ 21 ]
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Hard_link&oldid=1341103058 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ฮาร์ดลิงก์

ใน ด้านคอมพิวเตอร์ ฮาร์ด ลิงก์ คือ รายการในไดเร็กทอรี (ใน ระบบไฟล์ แบบ ไดเร็กทอรี ) ที่เชื่อมโยงชื่อกับ ไฟล์ ดังนั้นแต่ละไฟล์จะต้องมีฮาร์ดลิงก์อย่างน้อยหนึ่งรายการ...

การดำเนินการ

สมมติว่ามีฮาร์ดลิงก์สองลิงก์ ชื่อ "LINK A.TXT" และ "LINK B.TXT" ที่ชี้ไปยังข้อมูลเดียวกัน โปรแกรมแก้ไขข้อความ เปิด "LINK A.TXT" แก้ไข และบันทึก เมื่อโปรแกรมแก้ไขข้อความ (หรือแอปพลิเคชันอื่นใด) เปิด "LINK B.TXT" ก็จะเห็นการเปลี่ยนแปลงที่เกิดขึ้นกับ "LINK A.

การนับอ้างอิง

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

ข้อจำกัด

เพื่อป้องกันลูปในระบบไฟล์ และเพื่อให้การตีความ .. ไฟล์ " " (ไดเร็กทอรีแม่) สอดคล้องกัน ระบบปฏิบัติการโดยทั่วไปจึงไม่อนุญาตให้สร้างฮาร์ดลิงก์ไปยังไดเร็กทอรี UNIX System V อนุญาตให้สร้างได้ แต่มีเพียง ผู้ใช้ระดับสูงสุด เท่านั้น ที่มีสิทธิ์สร้างลิงก์ดังกล่าว [ 4...