ฮาร์ดลิงก์เทียบเท่ากับทางลัดของ Windows หรือไม่


52

Wikipedia กำหนดฮาร์ดลิงก์เป็น:

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

ฉันสงสัยว่าแนวคิดของฮาร์ดลิงก์นั้นเทียบเท่ากับแนวคิด Windows ของทางลัดหรือไม่

หากฮาร์ดลิงก์ไม่เทียบเท่ากับทางลัดคุณสมบัติ Windows ที่ใกล้เคียงที่สุดกับฮาร์ดลิงก์คืออะไร


1
จริงๆแล้วมีการอ้างอิงที่ดีจากหน้า wiki ที่คุณแชร์
eccentricSam

8
Microsoft NTFS รองรับ hardlink และคล้ายกับ unix hardlink ฉันคิดว่าทางลัดเป็นวัตถุพิเศษตามสภาพแวดล้อมของ windows แต่พวกเขาไม่ได้เกี่ยวข้องกับองค์กร filesytem ซึ่งขัดกับ
ฮาร์ดลิงก์

ลิงค์ต่อไปนี้ให้คำอธิบายที่ดี: comptb.cects.com/ ...

3
ฉันคิดว่าขนานนั้นทำให้เข้าใจผิดทางลัดคือลิงก์ "ส่วนต่อประสาน" เป็นเพียงไฟล์ที่มีข้อมูลข้อความเกี่ยวกับเป้าหมายที่ตีความโดยส่วนต่อประสานและไม่ใช่โดยระบบไฟล์ จากบรรทัดคำสั่งพวกเขาไม่ได้ชี้ไปที่บางสิ่งบางอย่างในแง่ของระบบแฟ้ม Windows (หรือดีกว่าที่กล่าวว่า NTFS) มี symlink ที่ถูกต้องen.wikipedia.org/wiki/NTFS_symbolic_linkซึ่งไม่ใช่ทางลัดหรือฮาร์ดลิงก์ ฉันใช้งานจริงใน Windows เพื่อให้มีโฟลเดอร์ Dropbox ได้ทุกที่ไม่สามารถใช้ทางลัดได้
alfC

5
ไฟล์ทางลัดของ Windows นั้นเหมือนกับไฟล์ Linux .desktop ลินุกซ์ symlink และฮาร์ดลิงก์เป็นสิ่งที่แตกต่างอย่างสิ้นเชิงซึ่งบางครั้งก็มีจุดประสงค์เดียวกัน
mikebabcock

คำตอบ:


113

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

สังเขปลิงค์นุ่มถูกสร้างขึ้นด้วยคำสั่งนี้:

ln -s foo bar

หากคุณเรียกใช้แล้วls -lคุณจะเห็น:

lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo

->หมายความว่าคือการเชื่อมโยงไปยังbar fooดังนั้นการเปิดด้วยโปรแกรมแก้ไขข้อความเช่นจะจริงเปิดแฟ้มที่แยกต่างหากbar fooอย่างไรก็ตามการลบก็จะลบทางลัดก็จะไม่ส่งผลกระทบไฟล์barfoo

ในทางกลับกันฮาร์ดลิงก์ถูกสร้างด้วยคำสั่งนี้:

ln foo bar

หากคุณรันตอนนี้ls -lจะไม่มีการบ่งชี้ความสัมพันธ์ระหว่างไฟล์:

-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo

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

เพื่อให้เข้าใจได้ชัดเจนยิ่งขึ้นใช้ls -iสิ่งที่แสดงไอโหนดที่เกี่ยวข้องกับไฟล์ มาสร้างซอฟต์ลิงค์และฮาร์ดลิงค์แล้วดูว่าเกิดอะไรขึ้น:

ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo

ตอนนี้ตรวจสอบ inodes ของพวกเขา:

ป้อนคำอธิบายรูปภาพที่นี่

อย่างที่คุณเห็นข้างต้นทั้งคู่fooและHardLinkToFooมีไอโหนดเดียวกัน (16648029) ในขณะที่ SoftLinkToFoo มีอีกอันหนึ่ง (16648036)

จะเกิดอะไรขึ้นถ้าเราเปลี่ยนชื่อfooด้วยmv foo bar?

ป้อนคำอธิบายรูปภาพที่นี่

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

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


6
@ กีวี่มันเป็นสิ่งที่ตรงกันข้าม: symlink สัมบูรณ์ล้มเหลวในหลาย ๆ ทาง (ทันทีที่คุณย้ายข้อมูลไปรอบ ๆ เมานท์ไปยังตำแหน่งอื่นสำรองข้อมูล…) และหลีกเลี่ยงได้ดีที่สุด
Gilles 'หยุดความชั่วร้าย'

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

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

2
ฉันชอบคำตอบนี้ แต่จริงๆแล้วมันค่อนข้างแย่ที่เข้าใจว่าทางลัดของ Windows คืออะไร @Shaakunthala ด้านล่างมีการตอบสนองที่ดีขึ้นเนื่องจากทางลัดของ Windows เป็นเหมือนไฟล์ Linux .desktop มากกว่า symlink
mikebabcock

18

มีคำอธิบายที่ดีว่าลิงก์อ่อนและแข็งคืออะไร แต่สิ่งหนึ่งที่ต้องชี้แจงให้ชัดเจน

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

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

ทางลัดที่เทียบเท่ากับทางลัดของ Windows คือไฟล์ . desktop ดูคำถามนี้ใน SuperUser: มี. lnk เทียบเท่าใน Linux หรือไม่


6

ไม่ใน Linux สิ่งต่าง ๆ ทำงาน

แต่ละไฟล์จะถูกแทนด้วยวัตถุที่เรียกว่า 'inode' ทุกไอโหนดมีหมายเลข (ID) เชื่อมโยงอยู่

อย่างที่เราทราบกันดีว่ามนุษย์ไม่สามารถจดจำตัวเลขได้ แต่เป็นชื่อ (นั่นคือวิวัฒนาการของสมุดโทรศัพท์)

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

ใน Windows ทางลัดเป็นไฟล์แยกต่างหาก (ไฟล์ * .lnk) มันมีข้อมูลเกี่ยวกับไฟล์ต้นฉบับ (เข้าใจเส้นทางไฟล์) ในการรับรู้ของ Linux ทางลัดของ Windows จะเป็นอีกไอโหนดหนึ่งเชื่อมโยงไปยังชื่อไฟล์ที่ลงท้ายด้วย '.lnk'


3
NTFS ใช้งานได้จริงอย่างนี้ ไฟล์คือรายการใน MFT และรายการไดเรกทอรีเพียงจับคู่ชื่อไฟล์กับรหัสไฟล์ รองรับการเชื่อมโยงและตั้งแต่ปี 2008/7 / Vista (?) แม้กระทั่งการเชื่อมโยง ณ จุดนี้ความแตกต่างที่ใหญ่ที่สุดคือวัฒนธรรม
cHao

2

บน Windows คุณสามารถสร้างฮาร์ดลิงก์ได้เช่นกันหากคุณมีระบบไฟล์ NTFS

fsutil hardlink create target_file source_file

ไฟล์จะต้องอยู่ในไดรฟ์ตรรกะเดียวกัน


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

1

ฮาร์ดไดรฟ์แตกต่างกันมากไม่สามารถสร้างได้สำหรับโฟลเดอร์ แต่สำหรับไฟล์

สามารถสร้างทางลัดสำหรับโฟลเดอร์ได้ดังนั้นคุณจึงไม่สามารถบอกได้ว่ามันเทียบเท่ากัน

คำถามของคุณควรจะมีความแตกต่างระหว่างการเชื่อมโยงสัญลักษณ์หรือการเชื่อมโยงที่อ่อนนุ่ม และทางลัด

ตามนี้

ลิงก์สัญลักษณ์คือระดับระบบไฟล์และทุกอย่างมองว่าเป็นไฟล์ต้นฉบับ แอปพลิเคชันไม่ต้องการการสนับสนุนพิเศษเพื่อใช้ลิงก์สัญลักษณ์

"ทางลัด" เป็นเพียงไฟล์ปกติที่มีการอ้างอิงไปยังไฟล์หรือไดเรกทอรีปลายทาง

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

ทางลัดของ Windows และตัวเรียกใช้งาน Linux (ชี้ไปที่บางตำแหน่ง) จะเหมือนกัน


2
อะไร? ซอฟต์ลิงค์เป็นเพียงไฟล์ถึงแม้ว่ามันจะเป็นของแปลก พวกเขาจะไม่ถือว่าเป็นต้นฉบับ (นั่นคือลิงก์) แม้ว่ามันจะเป็นความจริงที่ว่าฮาร์ดไดรฟ์ไม่ได้รับอนุญาตสำหรับไดเรกทอรีในระบบปฏิบัติการส่วนใหญ่ แต่นี่เป็นเพียงคุณลักษณะด้านความปลอดภัยและมีข้อยกเว้นสำหรับเรื่องนี้ (ตัวอย่างเช่นเครื่องจับเวลา OSX) และแน่นอนคุณสามารถทำ cd to ทางลัด (ฉันถือว่าคุณหมายถึงทางลัดของ Windows เพราะอย่างที่คุณบอกว่าคุณสามารถ cd to soflink)
terdon

1
คุณแน่ใจหรือว่าคุณสามารถใช้ cmd to cd เพื่อทางลัด
nux

1
ฉันเพิ่งเปิดใช้งาน Windows VM ของฉันและสร้างทางลัดไปยังโฟลเดอร์บนเดสก์ท็อปของฉันทางลัดของ Windows จะคล้ายกันมาก (ถ้าไม่เหมือนกัน) กับ symlink ในขณะที่คุณไม่สามารถใช้ซีดีกับพวกเขาได้โดยใช้ cmd.exe ด้วยเหตุผลบางอย่างคุณสามารถสร้าง. lnk ไปยังไดเรกทอรีและใช้งานผ่าน explorer
terdon

1
ผู้มีสิทธิเลือกตั้งลงควรให้เหตุผลสำหรับการลงคะแนน
nux

5
ขออภัยยังไม่ถูกต้อง Symlinks เป็นไฟล์ที่มีเป้าหมายเป็นข้อความล้วน (ดูที่นี่ ), symlinks ไม่ได้รับการปฏิบัติเหมือนต้นฉบับนั่นคือความแตกต่างทั้งหมดระหว่าง symlinks และ hardlinks ตัวเรียกใช้งาน Linux (ฉันถือว่าคุณหมายถึงไฟล์. เดสก์ท็อป) ไม่มีส่วนเกี่ยวข้องใด ๆ เลยพวกมันแตกต่างอย่างสิ้นเชิง อย่างที่คุณพูดทางลัดของ Windows สามารถชี้ไปที่ไฟล์ (รวมถึงโปรแกรม) และโฟลเดอร์ (mac และ windows มีโฟลเดอร์, Linux มีไดเรกทอรี) ไฟล์. esktop ช่วยให้คุณสามารถเปิดโปรแกรมได้ พวกเขาไม่เชื่อมโยงทุกที่
terdon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.