MKLINK กับ Junction.exe


27

SysInternalsมีโปรแกรมjunction.exeที่สร้าง Junctions (aka. reparse points , aka. symlink) ใน Windows

อย่างไรก็ตาม Windows ยังมาพร้อมกับmklinkซึ่งดูเหมือนจะทำสิ่งเดียวกัน

มีความแตกต่างที่สำคัญหรือไม่?

ฉันมักจะเชื่อว่าถ้า SysInternals มีโปรแกรมของตัวเองพวกเขาเห็นข้อบกพร่องในโปรแกรม MKLink มาตรฐาน


5
Junctionเผยแพร่ในเดือนกันยายน 2010 ตามหน้าเชื่อมโยง หน้าที่ลิงก์มาMKLINKมีวันที่เผยแพร่ในเดือนเมษายน 2555 ซึ่งดูเหมือนว่าจะบ่งบอกอย่างชัดเจนว่าJunctionถูกสร้างขึ้นก่อนที่จะmklinkเพิ่มไฟล์ปฏิบัติการลงใน Windows (ผมยังไม่ได้ขุดลงไปอีกเมื่อแต่ละเดิมปรากฏจึงแสดงความคิดเห็นมากกว่าคำตอบที่เต็มถ้ามีคนต้องการที่จะขยายตัวนี้และสร้างคำตอบที่เหมาะสมเป็นแขกของฉัน..)
CVn

อ๊ะ! ฉันคิดถึงสิ่งนั้น ดูเหมือนว่า Junction จะทำการ mklink ล่วงหน้า ขอบคุณ
abelenky

คำตอบ:


41

การเปรียบเทียบ

junctionโปรแกรมของ Mark Russinovich ได้รับการออกแบบโดยมีเป้าหมายเฉพาะในใจ: สร้าง (และลบ) จุดเชื่อมต่อ ได้รับการปรับปรุงตลอดหลายปีที่ผ่านมา แต่ยังไม่มีการเพิ่มฟีเจอร์ใหม่ รุ่นล่าสุดเปิดตัวเมื่อวันที่ 4 กรกฎาคม 2016

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


ประวัติเล็กน้อย

ก่อนหน้า Vista ระบบปฏิบัติการ Windows ไม่ได้มีวิธีในการสร้างจุดแยกออกจากกล่อง: คุณต้องรับสำเนาResource Kitอย่างเป็นทางการใช้โปรแกรมของบุคคลที่สามหรือเขียนด้วยตนเอง

2000

junctionเครื่องมือรุ่นแรกเปิดตัว อ้างถึงเว็บไซต์อย่างเป็นทางการ:

Windows 2000 และสูงกว่ารองรับการเชื่อมโยงสัญลักษณ์ไดเรกทอรีซึ่งไดเรกทอรีทำหน้าที่เป็นลิงค์สัญลักษณ์ไปยังไดเรกทอรีอื่นบนคอมพิวเตอร์ [ ... ]

น่าเสียดายที่ Windows ไม่มีเครื่องมือในการสร้างทางแยกคุณต้องซื้อ Win2K Resource Kit ซึ่งมาพร้อมกับlinkdโปรแกรมสำหรับสร้างทางแยก ดังนั้นผมจึงตัดสินใจที่จะเขียนแยกเครื่องมือสร้างของตัวเอง: สนธิ

ที่มา: ทางแยก

2005-06

mklinkคำสั่งเป็นที่รู้จักกับ Windows Vista ในช่วงเบต้าต้น

มันมีให้ตั้งแต่ Beta 1 อย่างเป็นทางการจัดส่งในวันที่ 27 กรกฎาคม 2005 ในตอนแรกมันสามารถสร้างลิงค์สัญลักษณ์และฮาร์ดลิงก์ได้ ความสามารถในการสร้างจุดเชื่อมต่อมาพร้อมกับ Community Technology Preview (CTP) ที่นำออกใช้ในวันที่ 19 ธันวาคม 2548

เห็นได้ชัดว่าคำสั่งนั้นไม่มีใครสังเกตจนกระทั่งทั้งหมดในเวลาต่อมาในปี 2549 เมื่อมีการเปิดเผยเป็นครั้งแรก นี่เป็นข้อมูลอ้างอิงที่เก่าที่สุดที่ฉันสามารถค้นหาได้:

คุณสามารถสร้างลิงค์สัญลักษณ์ใน Windows Vista ได้ทันที

C:\test>ver

Microsoft Windows [Version 6.0.5365]

C:\test>mklink
Creates a symbolic link.

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

[...]

ที่มา: ลิงค์สัญลักษณ์ใน Windows Vista

นอกจากนี้:

Malcolm [MSFT] (ผู้เชี่ยวชาญ):
Q:มีวิธีง่าย ๆ ในการสร้าง symlink หรือไม่?
ตอบ:เปิด CMD และพิมพ์ 'mklink' เครื่องมือนี้จะช่วยให้คุณสร้าง junctions, hardlinks และ symbolic links

ที่มา: การถอดบันทึกการแชทของ NTFS (12 กรกฎาคม 2549)


ข้อมูลเพิ่มเติม

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

ตัวอย่างเช่นจุดแยกวิเคราะห์ใหม่ใช้ในการติดตั้งระบบไฟล์ NTFS และ Microsoft Remote Storage Server (RSS)

ที่มา: คะแนนใหม่

ลิงค์ไฟล์มีสามประเภทที่รองรับในระบบไฟล์ NTFS: ฮาร์ดลิงก์, จังก์ชันและลิงก์สัญลักษณ์

ที่มา: ฮาร์ดลิงก์และจังก์ชัน

ลิงก์ถาวร

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

ที่มา: ฮาร์ดลิงก์และจังก์ชัน

ทางแยก

junction (หรือที่เรียกว่า soft link) แตกต่างจากฮาร์ดลิงก์ที่วัตถุหน่วยเก็บข้อมูลที่อ้างถึงนั้นเป็นไดเร็กทอรีแยกต่างหากและ junction สามารถลิงก์ไดเร็กทอรีที่อยู่บนโลคัลวอลุ่มที่แตกต่างกันบนคอมพิวเตอร์เครื่องเดียวกัน

ที่มา: ฮาร์ดลิงก์และจังก์ชัน

จุดเชื่อมต่อสามารถลิงก์ไปยังไดเรกทอรีบนไดรฟ์ข้อมูลภายในเท่านั้น ไม่สนับสนุนจุดเชื่อมต่อกับการแชร์ระยะไกล

ที่มา: จุดเชื่อมต่อระบบไฟล์ NTFS

ลิงก์สัญลักษณ์

ลิงก์สัญลักษณ์เป็นวัตถุระบบไฟล์ที่ชี้ไปยังวัตถุระบบไฟล์อื่น วัตถุที่ถูกชี้ไปที่เรียกว่าเป้าหมาย

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

ที่มา: ลิงก์สัญลักษณ์

[เชื่อมโยงสัญลักษณ์] ถูกนำมาใช้กับการปรับเปลี่ยนที่เกิดขึ้นกับระบบแฟ้ม NTFS กับWindows Vistaแต่สามารถใช้ได้ผ่านฟิลเตอร์ไดรเวอร์สำหรับWindows XP

ไม่เหมือนกับจุดเชื่อมต่อระบบไฟล์ NTFS (มีให้ตั้งแต่ Windows 2000) ลิงก์สัญลักษณ์สามารถชี้ไปที่ไฟล์หรือเส้นทางเครือข่ายSMBระยะไกล ในขณะที่จุดเชื่อมต่อระบบไฟล์ NTFS รองรับเส้นทางแบบสัมบูรณ์เท่านั้นบนไดรฟ์ภายในระบบการเชื่อมโยงสัญลักษณ์ NTFS จะอนุญาตให้ทำการเชื่อมโยงโดยใช้เส้นทางแบบสัมพัทธ์

การตั้งค่าความปลอดภัยเริ่มต้นใน Windows Vista / Windows 7ไม่อนุญาตผู้ดูแลระบบที่ไม่ใช่ผู้ดูแลระบบและผู้ดูแลระบบที่ไม่ใช่ผู้ดูแลระบบทั้งหมดจากการสร้างลิงก์สัญลักษณ์

แหล่งที่มา: ลิงค์สัญลักษณ์ของ NTFS

อ่านเพิ่มเติม


หากคุณต้องการคำตอบที่มีรายละเอียดมากกว่าของฉันคุณอาจพูดถึงNTFS Reparse Pointsนั้นเป็นอีกรสชาติหนึ่ง
Paradroid

(อ้างถึงฮาร์ดลิงก์เพื่อชี้แจง)
Paradroid

คำตอบที่มีคุณภาพบริสุทธิ์
แสดง

2
หมายเหตุ: มีลิงก์สัญลักษณ์ "ไฟล์" (ทำโดยธรรมดาmklinkโดยไม่คำนึงถึงประเภทเป้าหมาย) และมีลิงก์สัญลักษณ์ "ไดเรกทอรี" (ทำโดยmklink /d) เป็นการดีที่สุดที่จะสร้างลิงค์ประเภทที่เหมาะสมสำหรับเป้าหมาย
kbolino

ฉันสงสัยว่าทำไม junction.exe ได้รับการอัปเดตในปี 2559 และทำไมพวกเขาจึงส่งต่อด้วย SysInternals พวกเขาต่อต้านการเนรเทศหรือไม่ ลองคิดดูสิใช่แล้ว ... ครึ่งหนึ่งของเครื่องมือเหล่านั้นอาจมีการเปลี่ยนทดแทนอย่างเพียงพอใน Windows คำตอบที่มีรายละเอียดดีเลิศ
Adam Plocher

2

ดังที่ได้กล่าวไปแล้วในความคิดเห็นjunction.exeออกมาก่อน Vista / Winserver 2008 ซึ่งมาพร้อมกับmklinkคำสั่ง

ดังนั้นจึงไม่มีประโยชน์ในการใช้กับ Vista เป็นต้นไป Windows รุ่นที่เก่ากว่า Vista ไม่รองรับอีกต่อไป

นอกจากนี้junction.exeไม่สนับสนุนลิงก์สัญลักษณ์ของ NTFS (เฉพาะจุดเชื่อมต่อระบบไฟล์ NTFS ) ซึ่งถูกนำมาใช้กับ Vista / WinServer 2008 และmlinkคำสั่ง

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