ฉันมีความสมบูรณ์ย่อยระบบแฟ้มภายในเส้นทาง/home/user/systemที่มีโครงสร้างลินุกซ์มาตรฐานกับไดเรกทอรี/bin, /home, /root, /usr, /var, /etc...
ระบบไฟล์ย่อยนี้มีลิงก์สัญลักษณ์ทั้งแบบสัมพันธ์หรือแบบสัมบูรณ์ symlinks /home/user/systemญาติเป็นเพียงที่ดีที่พวกเขาอยู่ในที่อยู่ภายใต้ระบบแฟ้มย่อย แต่ symlink แบบสัมบูรณ์เป็นปัญหาเนื่องจากมันชี้ไปที่เป้าหมายนอกระบบย่อย
ดังตัวอย่างเราถือว่า symlink สัมบูรณ์ดังต่อไปนี้ (เห็นในระบบย่อย):
/usr/file1 -> /usr/lib/file1
ในระบบไฟล์โดยรวมเรามีลิงค์ที่/home/user/system/usr/file1ตอนนี้ชี้ไปที่ไฟล์/usr/lib/file1นอกระบบย่อยแทนที่จะเป็นไฟล์/home/user/system/usr/lib/file1 ภายในระบบย่อย
ฉันต้องการมีสคริปต์ง่ายๆโดยเฉพาะอย่างยิ่งบรรทัดคำสั่งเดียว (rsync, chroot, find, ... ) ที่แปลง symlink สัมบูรณ์ทุกรายการให้เป็นแบบสัมพัทธ์
ในตัวอย่างที่กำหนดลิงก์นั้นจะกลายเป็นลิงค์
/usr/file1 -> ../usr/lib/file1