วิธีสร้างลิงก์สัญลักษณ์ (Symlinks) ใน Linux


ลินุกซ์ ไม่มีทางลัด แต่มี Symbolic Links – หรือ Symlinks ตามที่มักเรียกกัน แต่ลิงก์สัญลักษณ์คืออะไรกันแน่? และคุณจะสร้างมันขึ้นมาได้อย่างไร? มาดูกัน

เราจะลองใช้คำสั่งบน การติดตั้ง Ubuntu แม้ว่าไวยากรณ์จะทำงานเหมือนกันบน ดิสทริบิวชัน Linux ทั้งหมด น่าสนใจทีเดียว สามารถสร้าง symlink บน Mac PC ได้.

ลิงก์สัญลักษณ์คืออะไร

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

ในระบบปฏิบัติการที่ใช้ GUI คุณจะแก้ไขปัญหานี้ได้ด้วยการสร้างทางลัด สำหรับระบบปฏิบัติการที่ใช้ CUI (เช่น distro Linux ใด ๆ ) คำตอบคือ symlink แม้แต่ Microsoft Windows ก็สามารถใช้ประโยชน์จาก Symlink ได้ใน บางสถานการณ์

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

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

ประเภทของ Symlinks

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

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

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

ฮาร์ดลิงก์ VS ซอฟต์ลิงค์ – ควรใช้ประเภทไหน?.

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

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

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

การสร้างลิงก์สัญลักษณ์

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

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

เช่นนี้:

ln -s user_names.txt ชื่อ

สิ่งนี้จะสร้างลิงก์สัญลักษณ์ที่เรียกว่าชื่อที่เชื่อมต่อกับไฟล์ข้อความ user_names หากต้องการดูว่าลิงก์สัญลักษณ์ถูกสร้างขึ้นจริงหรือไม่ เพียงใช้คำสั่ง ls

อย่างที่คุณเห็น Ubuntu จะแสดงสีที่แตกต่างกันสำหรับไฟล์ประเภทต่างๆ โดยไดเรกทอรีจะแสดงด้วยสีน้ำเงินเข้มและสัญลักษณ์สัญลักษณ์เป็นสีน้ำเงินอ่อนกว่า (สีน้ำเงินจริง ๆ )

เราสามารถใช้ไวยากรณ์เดียวกันเพื่อสร้างลิงก์สัญลักษณ์สำหรับโฟลเดอร์ได้เช่นกัน:

ln -s ตัวอย่าง example_folder

สำหรับการสร้าง symlink ไปยังไฟล์และโฟลเดอร์ในไดเรกทอรีอื่น เพียงใช้เส้นทางแบบเต็ม ตัวอย่างเช่น:

ln -s ตัวอย่าง/example3.txt Distance_example

ข้อจำกัดของ Symlinks

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

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

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

การสร้าง Symlinks ใน Linux

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

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

.

กระทู้ที่เกี่ยวข้อง:


10.05.2023