ชื่อกล่าวมันทั้งหมด ... ความแตกต่างคืออะไร? ฉันจะใช้อันใดเมื่อไหร่และฉันจะใช้อีกอันเมื่อใด
Added:โปรดทราบว่าจุดเชื่อมต่อ , การเชื่อมโยงอย่างหนักและสัญลักษณ์ (นิ่ม) การเชื่อมโยงสามสิ่งที่แยกจากกันบน NTFS
ชื่อกล่าวมันทั้งหมด ... ความแตกต่างคืออะไร? ฉันจะใช้อันใดเมื่อไหร่และฉันจะใช้อีกอันเมื่อใด
Added:โปรดทราบว่าจุดเชื่อมต่อ , การเชื่อมโยงอย่างหนักและสัญลักษณ์ (นิ่ม) การเชื่อมโยงสามสิ่งที่แยกจากกันบน NTFS
คำตอบ:
ไฟล์ข้อมูล NTFS จะถูกเก็บไว้พร้อมกับคุณลักษณะทั้งหมดของพวกเขาในฐานะ "inode" ที่มี ID และชื่อไฟล์ชี้ไปที่ inode ไฟล์ทั้งหมดมีหนึ่ง + ฮาร์ดลิงก์ เครื่องมือบางอย่างสามารถสร้างชื่อพิเศษ (ฮาร์ดลิงก์) ซึ่งชี้ไปที่ไอโหนดเดียวกันซึ่งมีตัวนับจำนวนชื่อที่ชี้ไปที่มัน หากตัวเลขเป็นศูนย์ระบบปฏิบัติการจะลบไฟล์ inode
เครื่องมือพิเศษเช่น LN สามารถสร้างชื่อไฟล์เพิ่มเติมซึ่งชี้ไปที่ inodes ที่มีอยู่โดยใช้ชื่อไฟล์ที่ชี้ไปที่พวกเขา โปรดทราบว่าคุณลักษณะไฟล์ทั้งหมดรวมถึงวันที่และเวลาจะถูกเก็บไว้ในไอโหนดไม่ใช่ชื่อไฟล์
(พิเศษ) hardlinks มีประโยชน์เมื่อคุณต้องการชื่อที่แตกต่างกันชี้ไปที่ข้อมูลเดียวกันอ่านหรือเขียน พวกเขาประหยัดพื้นที่และค่าใช้จ่าย อย่างไรก็ตามพวกเขาปิดโปรแกรมที่ถือว่าชื่อแตกต่างกันชี้ไปที่ข้อมูลที่แตกต่างกัน เช่นหากคุณแทนที่การอ้างอิงไปยังไฟล์ที่ซ้ำกันโดยฮาร์ดลิงก์ไปที่ไฟล์เดียวคุณจะลบการสำรองข้อมูลใด ๆ ที่คุณมี! windows OS เป็นโปรแกรมหนึ่งที่ถือว่าชื่อต่างกันชี้ไปที่ชุดบิตที่แตกต่างกัน
ฮาร์ดลิงก์ต้องอยู่บนฟิสิคัลและโลจิคัลวอลุ่มเดียวกัน
มันมีประโยชน์สำหรับ:
การลดความยาวพา ธ เนื่องจาก Windows รองรับเพียง 256 ตัวอักษร
การลดพื้นที่เก็บข้อมูลของไฟล์ข้อมูลที่ซ้ำกัน - เช่นคุณสามารถมีการสำรองข้อมูลหลายพาร์ติชันที่มีไดเรกทอรีต้นไม้ที่สมบูรณ์หลายแห่ง แต่ด้วยการเชื่อมโยงสำหรับไฟล์ที่ไม่ได้เปลี่ยนไปนับตั้งแต่การสำรองข้อมูลก่อนหน้า
จุดเชื่อมต่อนั้นยุ่งกว่าและใช้ Reparse Points (ซึ่งฉันไม่เข้าใจ) สามารถชี้ไปยังฟิสิคัลหรือโลจิคัลวอลุ่มที่แตกต่างกัน แต่ต้องอยู่บนคอมพิวเตอร์เครื่องเดียวกัน เห็นได้ชัดว่าพวกเขาสามารถใช้เป็น symlink สำหรับไดเรกทอรีทำให้ชื่อที่สองสำหรับปลายทางเดียวกัน แต่ จำกัด เฉพาะคอมพิวเตอร์เครื่องเดียวแทนที่จะเป็นเล่มเดียว
มีประโยชน์สำหรับการลดความยาวพา ธ หรือลดความซับซ้อนของการทำงานกับหลาย ๆ โปรแกรมที่มีชื่อไดเรกทอรี hardcoded
คำเตือนเหมือนกันเช่นกัน! หลายโปรแกรมใช้ชื่อที่แตกต่างกัน = ไฟล์ต่างกัน
แล้วมีลิงก์สัญลักษณ์ (ซึ่งสามารถข้ามเครือข่าย) ทางลัดและ PIFs และ .....
นอกจากนี้ยังมีข้อมูลบางส่วนจาก Microsoft :
โดยพื้นฐานแล้วพวกเขากำลังบอกว่าจะใช้ฮาร์ดลิงก์สำหรับไฟล์ที่อยู่ในไดรฟ์ข้อมูลเดียวกัน (ตัวอักษรไดรฟ์ดิสก์) และจุดเชื่อมต่อสำหรับไดเรกทอรีบนคอมพิวเตอร์เครื่องเดียวกันเท่านั้น
ลิงก์สัญลักษณ์:ลิงก์ไปยังไฟล์หรือไดเรกทอรีบนไดรฟ์ข้อมูลเดียวกันหรือต่างกัน (อักษรชื่อไดรฟ์) หรือแม้แต่ไปยังไฟล์หรือไดเรกทอรีระยะไกล (โดยใช้ 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
ฮาร์ดลิงก์เป็นเพียงชื่ออื่นของไฟล์ หากคุณมีไฟล์ชื่อ A.txt และคุณมีลิงค์ L.txt เมื่อคุณลบ A.txt คุณจะยังสามารถเข้าถึงข้อมูลผ่าน L.txt ได้ เฉพาะเมื่อไฟล์ทั้งสองถูกลบไปแล้ว
ในทางกลับกันคุณมีลิงก์ที่เรียกว่าซอฟต์ลิงค์ (ทางแยกถ้าเป็นโฟลเดอร์หรือลิงก์สัญลักษณ์หากเป็นไฟล์) ในกรณีนี้เมื่อคุณลบ A.txt ไฟล์จะหายไปจริงๆ การลบ L.txt จะไม่มีผลกับไฟล์เลย
ฮาร์ดลิงก์สามารถใช้ได้กับพาร์ติชั่นเดียวกับไฟล์ต้นทางและซอฟต์ลิงค์สามารถใช้ข้ามพาร์ติชั่นได้
ไฟล์ PS และโฟลเดอร์ส่วนใหญ่สามารถใช้แทนกันได้จนถึง NTFS
ฮาร์ดลิงก์:ใช้งานได้กับโวลุ่มเดียวกันเท่านั้น
จังก์ชัน:โลคัลวอลุ่มใด ๆ
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>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 |
ในการตอบคำถามโดยทางโปรแกรม:
ฮาร์ดลิงก์: shared_ptr <> มีอยู่หนึ่งรายการเสมอ
ซอฟต์ลิงก์: weak_ptr <> ใช้ได้เฉพาะเมื่อมีฮาร์ดลิงก์อื่นอยู่เท่านั้น