ฉันมีความสมบูรณ์ย่อยระบบแฟ้มภายในเส้นทาง/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