อะไรคือความแตกต่างระหว่างฮาร์ดไดรฟ์ NTFS และทางแยกไดเรกทอรี?


79

ชื่อกล่าวมันทั้งหมด ... ความแตกต่างคืออะไร? ฉันจะใช้อันใดเมื่อไหร่และฉันจะใช้อีกอันเมื่อใด

Added:โปรดทราบว่าจุดเชื่อมต่อ , การเชื่อมโยงอย่างหนักและสัญลักษณ์ (นิ่ม) การเชื่อมโยงสามสิ่งที่แยกจากกันบน NTFS


2
ตามเอกสารของ Microsoft มีสามประเภทที่แตกต่างกัน: ฮาร์ดลิงก์: msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx ; จุดเชื่อมต่อ (soft-link): msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx ; เชื่อมโยงสัญลักษณ์: msdn.microsoft.com/en-us/library/aa363878%28VS.85%29.aspx
Josip Medved

คำตอบ:


33

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

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

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

ฮาร์ดลิงก์ต้องอยู่บนฟิสิคัลและโลจิคัลวอลุ่มเดียวกัน

มันมีประโยชน์สำหรับ:

  • การลดความยาวพา ธ เนื่องจาก Windows รองรับเพียง 256 ตัวอักษร

  • การลดพื้นที่เก็บข้อมูลของไฟล์ข้อมูลที่ซ้ำกัน - เช่นคุณสามารถมีการสำรองข้อมูลหลายพาร์ติชันที่มีไดเรกทอรีต้นไม้ที่สมบูรณ์หลายแห่ง แต่ด้วยการเชื่อมโยงสำหรับไฟล์ที่ไม่ได้เปลี่ยนไปนับตั้งแต่การสำรองข้อมูลก่อนหน้า

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

มีประโยชน์สำหรับการลดความยาวพา ธ หรือลดความซับซ้อนของการทำงานกับหลาย ๆ โปรแกรมที่มีชื่อไดเรกทอรี hardcoded

คำเตือนเหมือนกันเช่นกัน! หลายโปรแกรมใช้ชื่อที่แตกต่างกัน = ไฟล์ต่างกัน

แล้วมีลิงก์สัญลักษณ์ (ซึ่งสามารถข้ามเครือข่าย) ทางลัดและ PIFs และ .....

นอกจากนี้ยังมีข้อมูลบางส่วนจาก Microsoft :

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


1
ลิงก์สัญลักษณ์ทำงานบนระดับฮาร์ดดิสก์ (NTFS) หรือเป็นแนวคิดระดับระบบปฏิบัติการ Windows หรือไม่
IsmailS

48

คำจำกัดความด่วน:

ลิงก์สัญลักษณ์:ลิงก์ไปยังไฟล์หรือไดเรกทอรีบนไดรฟ์ข้อมูลเดียวกันหรือต่างกัน (อักษรชื่อไดรฟ์) หรือแม้แต่ไปยังไฟล์หรือไดเรกทอรีระยะไกล (โดยใช้ UNC ในพา ธ )

ฮาร์ดลิงก์:ลิงก์ไปยังไฟล์บนไดรฟ์ข้อมูลเดียวกัน (ตัวอักษรชื่อไดรฟ์) เท่านั้น ทุกไฟล์ (ข้อมูลของไฟล์) มีฮาร์ดลิงก์อย่างน้อย 1 ลิงก์ (ชื่อไฟล์) การลบฮาร์ดลิงก์ทั้งหมดจะเป็นการลบไฟล์อย่างมีประสิทธิภาพ

จังค์ชัน:ลิงก์ไปยังไดเรกทอรีบนไดรฟ์ข้อมูลเดียวกันหรือต่างกัน (อักษรชื่อไดรฟ์) แต่ไม่ใช่ไปยังไดเรกทอรีระยะไกล


รายละเอียด:

สมมติว่าคุณกำลังทำงานกับวอลุ่ม NTFS ใน Windows Vista / 7 คุณสามารถใช้เครื่องมือบรรทัดคำสั่ง MKLINK เพื่อสร้างลิงค์ทั้งสามประเภท:

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      Creates a directory symbolic link.  Default is 
                a file symbolic link.

        /H      Creates a hard link instead of a symbolic link.

        /J      Creates a Directory Junction.

        Link    specifies the new symbolic link name.

        Target  specifies the path (relative or absolute) that 
                the new link refers to.

ลิงก์สัญลักษณ์ : ลิงก์สัญลักษณ์เป็นวัตถุระบบไฟล์ที่ชี้ไปยังวัตถุระบบไฟล์อื่น (เช่น: ไฟล์ / ไดเรกทอรี)

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

  • ลิงก์สัญลักษณ์อาจเป็นลิงก์แบบสัมบูรณ์หรือแบบสัมพัทธ์ ลิงก์แบบสัมบูรณ์คือลิงก์ที่ระบุแต่ละส่วนของชื่อพา ธ ขณะที่ลิงก์แบบสัมพันธ์จะถูกกำหนดโดยสัมพันธ์กับตำแหน่งที่ตัวระบุลิงก์แบบสัมพันธ์อยู่ในพา ธ ที่ระบุ

  • ลิงก์สัญลักษณ์แบบสัมบูรณ์สามารถชี้ไปที่ไฟล์ / ไดเรกทอรีบนไดรฟ์ข้อมูลเดียวกันหรือต่างกันรวมถึงไปยังไฟล์หรือไดเรกทอรีระยะไกลโดยใช้เส้นทาง UNC อย่างไรก็ตามลิงก์เชิงสัมพัทธ์จะถูก จำกัด ไว้ที่เล่มเดียว

  • ต้องใช้สิทธิ์ระดับสูงในการสร้างลิงก์สัญลักษณ์ แต่เมื่อสิทธิ์ระดับสูงที่สร้างขึ้นไม่จำเป็นต้องลบลิงก์

ฮาร์ดลิงก์ : ฮาร์ดลิงก์คือการแสดงระบบไฟล์ของไฟล์ซึ่งมากกว่าหนึ่งพา ธ อ้างอิงไฟล์เดียว

  • MKLINKอนุญาตให้สร้างฮาร์ดลิงก์ (ใช้/Hพารามิเตอร์) เฉพาะไฟล์ (ไม่ใช่ไดเรกทอรี) ฮาร์ดลิงก์สามารถสร้างไฟล์ได้ในโวลุ่มเดียวกันเท่านั้น

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

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

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

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

  • MKLINKอนุญาตให้สร้างทางแยก (ใช้/Jพารามิเตอร์) ของไดเรกทอรี (และแม้กระทั่งไฟล์แม้ว่านี่อาจจะถือว่าเป็นลิงค์ที่ไม่ถูกต้อง)

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


อ้างอิง:

[1] ฮาร์ดลิงก์และจุดเชื่อมต่อ: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365006%28v=vs.85%29.aspx

[2] การสร้างลิงก์สัญลักษณ์: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363878%28v=vs.85%29.aspx

[3] "ไดเรกทอรี junction" vs "ลิงก์สัญลักษณ์ไดเรกทอรี"?


9

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

ในทางกลับกันคุณมีลิงก์ที่เรียกว่าซอฟต์ลิงค์ (ทางแยกถ้าเป็นโฟลเดอร์หรือลิงก์สัญลักษณ์หากเป็นไฟล์) ในกรณีนี้เมื่อคุณลบ A.txt ไฟล์จะหายไปจริงๆ การลบ L.txt จะไม่มีผลกับไฟล์เลย

ฮาร์ดลิงก์สามารถใช้ได้กับพาร์ติชั่นเดียวกับไฟล์ต้นทางและซอฟต์ลิงค์สามารถใช้ข้ามพาร์ติชั่นได้

ไฟล์ PS และโฟลเดอร์ส่วนใหญ่สามารถใช้แทนกันได้จนถึง NTFS


3
ขออภัยจุดเชื่อมต่อและซอฟต์ลิงก์ไม่ใช่สิ่งเดียวกันสำหรับ NTFS :(
Vilx-

2
msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspxข้อความอ้างอิง: "จุดเชื่อมต่อ (หรือเรียกอีกอย่างว่าลิงค์อ่อน)"
Josip Medved

3
อย่างไรก็ตามมีความแตกต่างเพิ่มเติมระหว่างจังก์ชัน (aka soft-link) และลิงก์สัญลักษณ์ แต่ฉันไม่ได้ลงรายละเอียดที่นี่ สำหรับผู้สนใจสามารถดูรายละเอียดได้ในเอกสารประกอบของ Windows ที่msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspxและmsdn.microsoft.com/en-us/library/aa363878%28VS 85%
Josip Medved

1
ตั้งแต่ Windows Vista มีทั้งจุดเชื่อมต่อระบบไฟล์ NTFS (สามารถชี้ไปที่ไดเรคทอรีเท่านั้น) และลิงก์สัญลักษณ์สไตล์ Unix (สามารถชี้ไปที่ตัวอักษรใดก็ได้)
grawity

0

ฮาร์ดลิงก์:ใช้งานได้กับโวลุ่มเดียวกันเท่านั้น
จังก์ชัน:โลคัลวอลุ่มใด ๆ
Symbolic:โลคัลวอลุ่มหรือพา ธ UNC

| Link Type     | Same Volume | Different Volume | UNC Path |
|---------------|-------------|------------------|----------|
| Hard link     | Yes         | No               | No       |
| Junction      | Yes         | Yes              | No       |
| Symbolic link | Yes         | Yes              | Yes      |

โบนัสแช็

Windows สร้างทางแยกและลิงก์สัญลักษณ์เพื่อวัตถุประสงค์ของ AppCompat สำหรับแอปพลิเคชันที่เขียนไม่ดีที่คิดว่า:

  • C: \ Users \ ผู้ใช้ทั้งหมด
  • C: \ Users \ Default ผู้ใช้

ถูกต้อง

C:\Users>dir /as

 Directory of C:\Users

04/11/2018  07:45 PM    <SYMLINKD>     All Users [C:\ProgramData]
04/11/2018  07:45 PM    <JUNCTION>     Default User [C:\Users\Default]

เป็นเช่นเดียวกันในโฟลเดอร์โปรไฟล์ของผู้ใช้สำหรับแอปพลิเคชันที่คาดหวังว่าโฟลเดอร์ยุค Windows XP จะยังคงมีอยู่ในปัจจุบัน:

| Folder           | Type       | Target                                                           |
|------------------|------------|------------------------------------------------------------------|    | Application Data | <JUNCTION> | C:\Users\Ian\AppData\Roaming                                     |
| Cookies          | <JUNCTION> | C:\Users\Ian\AppData\Local\Microsoft\Windows\INetCookies         |
| Local Settings   | <JUNCTION> | C:\Users\Ian\AppData\Local                                       |
| My Documents     | <JUNCTION> | C:\Users\Ian\Documents                                           |
| NetHood          | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Network Shortcuts |
| PrintHood        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Printer Shortcuts |
| Recent           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Recent            |
| SendTo           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\SendTo            |
| Start Menu       | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Start Menu        |
| Templates        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Templates         |

1
และแม้กระทั่งคลั่งไคล้ในการติดตั้งหน้าต่างที่ไม่ใช่ภาษาอังกฤษในขณะที่คุณได้รับ symlink / junctions มากขึ้นเนื่องจากบางคนอาจหรืออาจไม่ทราบว่า Windows ถึง XP จริง ๆ แล้วมีชื่อท้องถิ่นที่สามารถทำให้สคริปต์หรือบทเรียนสำหรับภาษาอื่น ๆ Vista ได้ฆ่าและใช้ชื่อ DISPLAY ที่แปลแล้วดังนั้นเส้นทางที่แท้จริงจะเหมือนกันในทุกภาษา แต่เนื่องจากหน้าต่างที่ผ่านการแปลแล้วมีลิงก์ในตัวพวกเขามากกว่าภาษาอังกฤษ
My1

-1

ในการตอบคำถามโดยทางโปรแกรม:

ฮาร์ดลิงก์: shared_ptr <> มีอยู่หนึ่งรายการเสมอ

ซอฟต์ลิงก์: weak_ptr <> ใช้ได้เฉพาะเมื่อมีฮาร์ดลิงก์อื่นอยู่เท่านั้น


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