Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีจัดการ Symlinks ใน Linux

Symlinks เป็นไฟล์ที่ลิงก์โดยตรงไปยังไฟล์อื่น ในระบบ Linux Symlinks ทำหน้าที่เป็น Shortcuts

คำว่า "Symlink" เป็น Portmanteau ของ "Symbolic" และ "Link" เน้นประโยชน์ของไฟล์เหล่านี้เป็นการอ้างอิงเชิงสัญลักษณ์ไปยังสิ่งอื่น

所謂 "Hard" Links ทำงานคล้าย Copy ของไฟล์ที่อ้างอิงมากกว่าเป็น Link ตรงๆ "Soft" หรือ Symbolic Links เพียงชี้ไปที่ Target ของมัน การลบ Link เหล่านี้ไม่ทำอะไรให้ไฟล์ที่ถูกชี้ และสามารถสร้าง Symlinks ได้มากเท่าที่ต้องการสำหรับความสะดวก ทำให้เหมาะสำหรับชี้ไปยังไฟล์ข้าม Filesystems และ Partitions

การใช้งานของ Symlinks

การเปลี่ยนโครงสร้างพื้นฐานของ Filesystem เพื่อให้แอปพลิเคชันเดี่ยวรันได้มีประสิทธิภาพมากขึ้น จะเป็นงานหนักหน่วง แทนที่จะทำอย่างนั้น Symlinks มักใช้เพื่อทำให้เรื่องง่ายขึ้น และสร้าง File Hierarchies เทียมสำหรับโปรแกรมอ้างอิง โดยไม่ส่งผลต่อตำแหน่งไฟล์ต้นฉบับ

การใช้ Symlinks ทำให้การรองรับโปรแกรมต่างๆ ง่ายขึ้น แต่มันยังทำให้การวิเคราะห์ File System ซับซ้อนขึ้น

ปัญหากับ Symlinks

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

หากไฟล์ที่ Symlinks ชี้ไปถูกสลับไปมา Link เองยังคงชี้ไปที่ไฟล์ใหม่ โดยไม่สนใจเนื้อหาเลย ฟังก์ชัน Blind Faith นี้ทำให้ Link Chaining และ Relative Links เป็นไปได้

Link Chaining โดยเฉพาะ อาจนำไปสู่ Cyclic Links (Link Loops ความยาวไม่สิ้นสุด) หาก Link อ้างอิง Link ที่สอง ซึ่งกลับมาชี้ไปที่ Link แรก

ปริศนาดังกล่าวไม่ได้เกิดจากการแทรกแซงของมนุษย์เพียงอย่างเดียว มาตรฐานการ Mount อุปกรณ์ที่ไม่เหมาะสม และกระบวนการอัตโนมัติบางอย่าง สามารถมีส่วนทำให้เกิดสิ่งที่เรียกว่า "Dead Links" ในปริมาณมาก นี่คือที่ที่เทคนิคการจัดการมาเข้ามาช่วย

การจัดการ Symlinks

ในระบบ Linux มี Utilities หลากหลายพร้อมใช้งานสำหรับจัดการ Symlinks การรวมอยู่ใน Coreutils โดยค่าเริ่มต้นคือ ln ซึ่งอำนวยความสะดวกในการสร้าง Links จากเทอร์มินัล

เพื่อจัดการ Symbolic Links ให้สมบูรณ์ คุณจะต้องสามารถหาและวิเคราะห์พวกมันได้อย่างรวดเร็ว ตัวเลือกบรรทัดคำสั่งง่ายๆ ที่คุ้มค่าสำหรับวัตถุประสงค์นี้ ชื่ออย่างเหมาะสมว่า symlinks

แม้บางระบบแจกจ่าย Linux เช่น Fedora จะมาพร้อมเครื่องมือนี้โดยค่าเริ่มต้น แต่อื่นๆ เช่น Ubuntu ไม่มี ติดตั้ง "Symlinks" ใน Ubuntu ให้เปิดเทอร์มินัลและใส่:

sudo apt install symlinks

สร้าง Symlinks

การสร้าง Symlinks จากเทอร์มินัลง่ายใน Linux ใส่โค้ดต่อไป แทนที่ "original-file.txt" ด้วยชื่อและนามสกุลไฟล์ของ Target ที่เลือก แล้วเปลี่ยน "linkname" เป็นสิ่งที่คุณต้องการ

ln -s original-file.txt linkname

ยูทิลิตี้ ln ใช้สำหรับสร้าง Links และจะทำเมื่อคุณรันมัน ตัวเลือก -s ที่รวมอยู่ในคำสั่งข้างต้น ทำให้ Link ที่สร้างเป็น Symbolic

Relative Symbolic Links สร้างได้ด้วยการเพิ่ม -r ในคำสั่งเดียวกัน:

ln -rs original-file.txt linkname

Relative Links คงทำงานได้แม้ Mount Points จะเปลี่ยนแปลง

ค้นหา Symlinks

ยูทิลิตี้ Symlinks ที่กล่าวมาข้างต้น ให้วิธีง่ายในการหา Symbolic Links ในไดเรกทอรีที่กำหนด คำสั่งสำหรับสิ่งนี้คือ: (เปลี่ยน "directory-name" เป็น Full Path ไปยังไดเรกทอรีที่ต้องการค้นหา)

symlinks -v directory-name

การเพิ่ม r ในคำสั่งนี้ บอก Symlinks ให้ตรวจสอบไฟล์ภายในไดเรกทอรีที่ระบุแบบ Recursive ลักษณะดังนี้:

symlinks -rv directory-name

ระมัดระวังการใช้ Recursion หากคุณกังวลปัญหาจาก Cyclic Links Cyclic Links คือ Links ที่ Loop กลับไปที่ตัวเองผิดพลาด อาจทำให้ Symlinks Utility ค้างขณะพยายาม Recurse เข้าโครงสร้างอันไม่สิ้นสุด

เวอร์ชัน Non-recursive ของคำสั่งข้างต้นจะแค่เปิดเผย Cyclic Links ที่มีอยู่ว่าเป็น "Dangling" หรือพูดอีกอย่างคือ Broken การวิเคราะห์ที่ Symlinks Tool ทำได้ คือสิ่งที่ทำให้มันแก้ไข Broken Links ได้จริง

แก้ไข Symlinks

การแก้ไข Symbolic Links ในไดเรกทอรีที่กำหนด ค่อนข้างตรงไปตรงมากับ Symlinks คำสั่งที่ใช้:

symlinks -cds directory-name

คำสั่งข้างต้นทำหลายอย่างพร้อมกัน แปลง Absolute Links ที่พบเป็น Relative Links, ลบ Dangling Links และย่อ "Lengthy" Links (Links ที่มี "../" มากใน Path)

หากคุณไม่แน่ใจผลลัพธ์ที่อาจเกิดจากการรัน Operation นี้ คุณสามารถทดสอบว่าตัวเลือก -c เพียงอย่างเดียวจะทำอะไรได้ โดยไม่เปลี่ยนแปลงอะไร โดยรัน:

symlinks -t directory-name

หวังว่าตอนนี้คุณเข้าใจดีขึ้นว่า Symbolic Links คืออะไร และจัดการมันได้อย่างมีประสิทธิภาพ ดูความสามารถอื่นๆ ของ Symlinks Utility เพื่อรัน Operation เฉพาะเจาะจงบน Filesystem ของคุณ