Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux

การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux

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

ซอฟต์กับฮาร์ดลิงก์

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

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

ด้านล่างนี้เราจะอธิบายวิธีการทำงานของลิงก์แบบซอฟต์และฮาร์ด

ใช้งานซอฟต์ลิงค์

สมมติว่าเรามีไฟล์ชื่อ “first_file.txt” ที่มีข้อความสี่บรรทัดอยู่ภายใน

การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux

เราจะสร้างซอฟต์ลิงค์ในโฮมไดเร็กตอรี่ของเรา

ln -s first_file.txt ~/sl-firstfile.txt

ใน GNOME Desktop Environment สามารถสร้างซอฟต์ลิงก์สำหรับไฟล์ได้โดยคลิกขวาที่ไฟล์และเลือก "สร้างลิงก์" ซอฟต์ลิงค์ถูกสร้างขึ้นโดยที่ชื่อคล้ายกับ “ลิงก์ไปยัง .txt”

การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux

หากเราพยายามดูเนื้อหาของ “sl-firstfile.txt” เราจะเห็นว่าเหมือนกับ “first_file.txt”

การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux

หากเราดูสองไฟล์นี้ในตัวจัดการไฟล์ ซอฟต์ลิงก์จะปรากฏเป็นทางลัดไปยังไฟล์ต้นฉบับ ลูกศรสีดำในไอคอนของไฟล์แสดงถึงสิ่งนี้

การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux

เมื่อเราพยายามดูรายชื่อไดเรกทอรีปัจจุบันโดยใช้คำสั่ง ls -l คุณสามารถดูได้ว่าซอฟต์ลิงก์ชี้ไปที่ไฟล์เป้าหมายที่ใด อักขระตัวแรกในสตริงการอนุญาตสำหรับ “sl-firstfile.txt” คือ “l” ซึ่งหมายความว่ารายการนี้มีไว้สำหรับลิงก์

การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux

พฤติกรรมการลบของซอฟต์ลิงก์

เมื่อไฟล์เป้าหมายถูกลบ ซอฟต์ลิงค์จะยังคงอยู่

การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux

อย่างไรก็ตาม มันได้กลายเป็นลิงก์ที่ "ห้อยต่องแต่ง" หรือ "ขาด" และไม่มีประโยชน์

การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux

ตอนนี้ หากคุณสร้างไฟล์อื่นที่มีชื่อเดียวกัน – “first_file.txt” – ซอฟต์ลิงก์จะกลับมาใช้งานได้อีกครั้ง

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

การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux

ผลลัพธ์ของคำสั่งนี้จะเป็นเส้นทางที่แน่นอนของไฟล์ต้นฉบับ

ฮาร์ดลิงก์ใช้งานได้จริง

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

ln first_file.txt hl-first-file.txt

หมายเหตุ :วิธีการสร้างซอฟต์ลิงก์และฮาร์ดลิงก์ทั้งสองใช้ ln สั่งการ. ข้อแตกต่างเพียงอย่างเดียวคือ -s แฟล็กซึ่งแสดงถึงการเชื่อมโยงเชิงสัญลักษณ์

อีกวิธีหนึ่งในการสร้างฮาร์ดลิงก์คือการใช้ link คำสั่ง

link hl-firstfile.txt hl2-firstfile.txt

การตรวจสอบทั้งสองไฟล์แสดงว่าเนื้อหาเหมือนกัน

การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux

ใน GUI ไฟล์ทั้งสองจะปรากฏเป็นเอนทิตีที่แตกต่างกัน ไม่มีข้อบ่งชี้เกี่ยวกับการมีอยู่ของฮาร์ดลิงก์

การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux

ให้เราลองเพิ่มบรรทัดใหม่ให้กับไฟล์ฮาร์ดลิงก์ “hl-firstfile.txt”

echo "hello" >> hl-first-file.txt

สามารถดูการเปลี่ยนแปลงข้อมูลได้ทั้ง 2 ไฟล์

การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux

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

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

พฤติกรรมการลบของฮาร์ดลิงก์

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

การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux การทำความเข้าใจความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์ใน Linux

ซอฟต์ลิงก์จะมีประโยชน์เมื่อใด

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

ฮาร์ดลิงก์จะมีประโยชน์เมื่อใด

เราได้เห็นแล้วว่าเมื่อสร้างฮาร์ดลิงก์สำหรับไฟล์แล้ว การเปลี่ยนแปลงใดๆ ในไฟล์หรือฮาร์ดลิงก์จะมีผลในทั้งสองอย่าง

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

บทสรุป

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