Symlink - เรียกอีกอย่างว่า Symbolic link หรือ Soft link - อาจเป็นหนึ่งในแนวคิดที่ซ่อนเร้นที่สุดสำหรับผู้ใช้คอมพิวเตอร์ อย่างไรก็ตาม สิ่งนั้นไม่ลดทอนความสำคัญและประโยชน์ที่มันเสนอ ทำไมไม่ลองเข้าถึงโฟลเดอร์และไฟล์จากโฟลเดอร์ต่างๆ โดยไม่ต้องเก็บสำเนาซ้ำ? ใช่ นั่นคือพลังของ Symlink
Symlink หรือ Symbolic Link คืออะไร
Symlink เป็นไฟล์ทางลัดที่อ้างอิงไปยังไฟล์หรือโฟลเดอร์จริงที่ตั้งอยู่ที่อื่น Symlinks ทำหน้าที่เป็นไฟล์หรือโฟลเดอร์เสมือนจริง ซึ่งสามารถใช้ลิงก์กับไฟล์หรือโฟลเดอร์เดี่ยวๆ ทำให้ดูเหมือนว่าพวกมันจัดเก็บอยู่ในโฟลเดอร์ที่มี Symlinks แม้ว่า Symlinks จะเพียงชี้ไปยังตำแหน่งจริงของพวกมันเท่านั้น
อย่าสับสน Symlink ว่าเป็นเพียง Shortcuts
สำคัญที่ต้องเข้าใจว่า Symlinks ไม่ใช่แค่ Shortcuts ที่คุณในฐานะผู้ใช้ Windows รู้จักอยู่แล้ว ไฟล์ทางลัด (shortcut) เพียงชี้ไปยังไฟล์ที่ต้องการ ในขณะที่ Symlink จะทำให้ดูเหมือนว่าไฟล์ที่ลิงก์อยู่จริงๆ เมื่อคุณคลิกที่ Symlink คุณจะถูกนำไปที่ตำแหน่งไฟล์จริง
โครงสร้างของ Symlink
Symlink ประกอบด้วยสตริงข้อความที่ถูกตีความและติดตามโดยระบบปฏิบัติการโดยอัตโนมัติเป็นเส้นทางไปยังไฟล์หรือไดเรกทอรีอีกตัวหนึ่ง ไฟล์หรือไดเรกทอรีอีกตัวนี้เรียกว่า "target"
Symlink มีอยู่อิสระจาก target ของมัน หาก Symlink ถูกลบ target ของมันจะไม่ได้รับผลกระทบ หาก Symlink ชี้ไปยัง target และเวลาต่อมา target นั้นถูกย้าย เปลี่ยนชื่อ หรือลบ symbolic link จะไม่ได้รับการอัปเดตหรือลบอัตโนมัติ แต่ยังคงอยู่และยังชี้ไปยัง target เดิม อย่างไรก็ตาม Symlinks ที่ชี้ไปยัง target ที่ย้ายหรือไม่มีอยู่จริง บางครั้งเรียกว่า broken, orphaned, dead, หรือ dangling
ประโยชน์ของ Symlinks
- Symlinks ใช้พื้นที่น้อยมาก และสร้างได้เร็วมาก คุณประหยัดพื้นที่ฮาร์ดดิสก์ได้มากด้วย Symlinks
- ตรงข้ามกับ hard links symlinks สามารถลิงก์ไปยังไฟล์ข้ามระบบไฟล์ได้ จำไว้ว่า หากคุณลบไฟล์ต้นฉบับ hard link จะยังคงเก็บชีวิตมันไว้ แต่ Symlink ไม่ได้
- Symlinks รักษาโครงสร้างโฟลเดอร์ที่ Symlinks ถูกเก็บไว้ ตัวอย่างเช่น สมมติว่ามีไฟล์ txt อยู่ในโฟลเดอร์ "Utility" ที่ตั้งอยู่ที่ /D/Myfolder/Utility/windowsclub.txt ตอนนี้ หากสร้าง Symlink สำหรับโฟลเดอร์ Utility ในโฟลเดอร์ Dropbox และคุณไปค้นหา windowsclub.txt ภายในโฟลเดอร์ Dropbox เส้นทางไฟล์จะอ่านว่า /D/Myfolder/Utility/windowsclub.txt แทนที่จะกลับไปเป็นเส้นทางไฟล์ต้นฉบับ/จริง
- ใช้ Symlinks คุณสามารถจัดเก็บไฟล์สื่อ Music/Videos บนฮาร์ดดิสก์อีกตัวหนึ่ง แต่ทำให้มันแสดงในโฟลเดอร์ Music/Videos มาตรฐานของคุณ ดังนั้นโปรแกรมสื่อจะตรวจจับได้
- นักพัฒนาบ่อยครั้งแทนที่สำเนาซ้ำของไฟล์/โฟลเดอร์ที่แชร์ด้วย symlinks ที่อ้างอิงไฟล์/โฟลเดอร์จริง การแทนที่สำเนายתיריםของไฟล์สามารถประหยัดพื้นที่ดิสก์จริงได้มาก และลดเวลาที่ใช้ในการคัดลอก/สำรอง/ปรับใช้/โคลนโปรเจกต์อย่างมีนัยสำคัญ
ความสำคัญของ Symlinks ในโลกการพัฒนาในปัจจุบัน
ตามที่ Yosef Durr, Lead Senior Program Manager, Microsoft กล่าวใน Windows Blog
เครื่องมือพัฒนายอดนิยมอย่าง git และตัวจัดการแพ็กเกจอย่าง npm ยอมรับและรักษา symlinks เมื่อสร้าง repos หรือแพ็กเกจตามลำดับ เมื่อ repos หรือแพ็กเกจเหล่านั้นถูกกู้คืนที่อื่น symlinks ก็จะถูกกู้คืนเช่นกัน ทำให้ไม่สูญเสียพื้นที่ดิสก์ (และเวลาของผู้ใช้) Git ตัวอย่างเช่น พร้อมกับไซต์อย่าง GitHub ได้กลายเป็นเครื่องมือจัดการซอร์สโค้ดหลักที่นักพัฒนาส่วนใหญ่ใช้ในปัจจุบัน

การใช้ตัวจัดการแพ็กเกจในการพัฒนาสมัยใหม่ก็ระเบิดขึ้นเช่นกัน ตัวอย่างเช่น node package manager (npm) ให้บริการ ~400 ล้านการติดตั้งในสัปดาห์ของวันที่ 1 กรกฎาคม 2015 แต่ให้บริการมากกว่า 1.2 พันล้านการติดตั้งเพียงหนึ่งปีต่อมา - เพิ่มขึ้น 3 เท่าในเพียงหนึ่งปี! ในปลายเดือนมิถุนายน 2016 npm ให้บริการมากกว่า 1.7 พันล้านแพ็กเกจโนดในเพียงเจ็ดวัน!
Symlinks ใน Windows 11/10
แม้ Symlinks จะมีข้อได้เปรียบที่ชัดเจน แต่ก่อนหน้านี้ใช้โดยหลักในระบบปฏิบัติการที่เข้ากันได้กับ UNIX เช่น Linux, FreeBSD, OSX ฯลฯ ซึ่งสามารถสร้าง symlinks ได้โดยไม่มีข้อจำกัด สำหรับผู้ใช้ Windows แม้ Symlinks จะพร้อมใช้งานตั้งแต่ Windows Vista แต่การสร้างมีความยากลำบากและน่าเบื่อ
เนื่องจากข้อกำหนดด้านความปลอดภัยของ Windows Vista ผู้ใช้ต้องมีสิทธิ์ผู้ดูแลระบบในท้องถิ่น และสำคัญคือ ต้องรัน mlink ในคอนโซลบรรทัดคำสั่งที่ยกระดับ (elevated) เป็นผู้ดูแลระบบ เพื่อสร้าง/แก้ไข Symlinks ข้อจำกัดในภายหลังนี้ทำให้ Symlinks ถูกใช้บ่อยน้อยโดยนักพัฒนา Windows ส่วนใหญ่ และทำให้เครื่องมือพัฒนาข้ามแพลตฟอร์มสมัยใหม่ทำงานได้ไม่มีประสิทธิภาพและน่าเชื่อถือน้อยบน Windows
อย่างไรก็ตาม ตอนนี้ใน Windows 10 หรือ Windows 11 หากผู้ใช้ที่มีสิทธิ์ผู้ดูแลระบบเปิดใช้งาน Developer Mode ใครก็ตามบน PC สามารถรันคำสั่ง mklink ได้โดยไม่ต้องยกระดับคอนโซลบรรทัดคำสั่ง
วิธีสร้าง Symlinks
Symlinks สามารถสร้างได้โดยใช้ คำสั่ง mklink หรือ CreateSymbolicLink API
คุณสามารถสร้าง Symlinks หรือ Symbolic Links ใน Windows โดยใช้ ยูทิลิตี้บรรทัดคำสั่ง: mklink ไวยากรณ์มีดังนี้:
MKLINK [[ /D] | [ /H] | [ /J]] Link Target
ที่ –
- /D: สร้าง symbolic directory link หรือ soft link
- /H: สร้าง hard link ไปยังไฟล์แทน symbolic link
- /J: สร้าง Directory Junction link
Target: ระบุเส้นทางที่ลิงก์ใหม่อ้างอิงไป
เช่น ตอนนี้ หากคุณต้องการให้ d:\Data พร้อมใช้งานจากโฟลเดอร์ D:\Maindata ใช้:
C:\mklink /D D:\Maindata D:\Data
ตอนนี้ หากคุณดูใน D:\Maindata คุณจะเห็นไฟล์ใดๆ ที่เคยอยู่ในไดเรกทอรีอีกตัว มันอยู่ที่นั่นมาตลอดใน Linux แต่ฟีเจอร์นี้ตอนนี้พร้อมใช้งานใน Vista แล้ว
การใช้คำสั่ง mklink
ขณะใช้ คำสั่ง mklink ให้ใช้ไวยากรณ์ด้านล่าง:
"mklink /prefix link_path file/folder_path"
หมายเหตุ: mklink สามารถสร้างลิงก์หลายประเภทได้ ด้านล่างคือประเภทต่างๆ-
- /D สร้าง directory symbolic link ค่าเริ่มต้นคือ file symbolic link
- /H สร้าง hard link แทน symbolic link
- /J สร้าง Directory Junction
ตัวอย่างเช่น ผมสร้าง directory junction ของโฟลเดอร์ Music ไปที่เดสก์ท็อปของผม อ้างอิงภาพหน้าจอด้านล่าง-

ดังนั้น เมื่อผมคลิกที่ Symlink มันดูเหมือนว่าไฟล์เพลงของผมจัดเก็บอยู่ใน C:\Users\<username>\Desktop\Music แม้ว่าจริงๆ แล้วอยู่ที่ C:\Users\<username>\Music

จำไว้ หากเส้นทางของคุณมีช่องว่าง คุณต้องใส่เครื่องหมายคำพูดครอบมัน
การใช้ CreateSymbolicLink
เพื่อเปิดใช้งานพฤติกรรมใหม่เมื่อใช้ CreateSymbolicLink API มีตัวเลือก dwFlags เพิ่มเติมที่คุณต้องตั้งค่าเป็น:
SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE
0x2
ดังนั้น โดยการเลือกค่าด้านบน คุณได้ระบุแฟล็กเพื่ออนุญาตให้สร้าง symbolic links เมื่อกระบวนการไม่ได้ยกระดับ
อ่านเพิ่มเติมเกี่ยวกับวิธีสร้าง Symlink โดยใช้ CreateSymbolicLink API ที่ windows.com
อ่านเพิ่มเติม: สร้าง Hardlinks, Symbolic Links, Junctions, Volume Mountpoints
สรุป
สามารถพูดได้ว่า Symlinks มีประโยชน์มากกว่าทางลัดเพียงอย่างเดียว แต่การสร้างมีความยากลำบากเล็กน้อย ผู้ใช้ PC ทั่วไปอาจยังคงรู้สึกขวัญใจเล็กน้อยในการสร้าง อีกอย่าง หتيวันนี้ ผู้ใช้หลายคนยังคงต่อสู้เพื่อเข้าใจแนวคิดของ shortcuts ให้ดี และดังนั้นอาจต่อสู้เพื่อแยกแยะ Symlinks และเข้าใจการใช้งานของมัน
ด้วยそう言うと เกือบรับประกันได้ว่าคุณจะพบว่าง่ายที่จะเปลี่ยนแปลงการตั้งค่าใดๆ ที่คุณสามารถ เพื่อให้โปรแกรมชี้ไปยังไดเรกทอรีที่ถูกต้อง และคุณไม่ได้สร้าง Symlink จริงๆ แต่การรู้วิธีตั้งค่าและใช้ Symlink ที่ดีอาจเป็นประโยชน์มาก
