제발, 심볼릭 링크를 새로운 경로로 변경하고 싶습니다.
내 심볼릭 링크 형식은 다음과 같습니다.
lrwxrwxrwx. 1 s01 s01 56 Mar 22 13:17 zmjppcxlpq2m.png -> /home/s01/public_html/cgi-bin/uploads/00029/zmjppcxlpq2m
lrwxrwxrwx. 1 s01 s01 56 Mar 23 17:03 znviy3civtq3.jpg -> /home/s01/public_html/cgi-bin/uploads/00029/znviy3civtq3
lrwxrwxrwx. 1 s01 s01 56 Mar 24 20:07 zoi46hh4pu32.jpg -> /home/s01/public_html/cgi-bin/uploads/00029/zoi46hh4pu32
lrwxrwxrwx. 1 s01 s01 56 Mar 23 18:22 zqt0h1gy9e4c.png -> /home/s01/public_html/cgi-bin/uploads/00029/zqt0h1gy9e4c
/home
모든 파일을 에서 새 섹션으로 옮겼습니다./home2
그래서 모든 심볼릭 링크를 새로운 경로로 변경하고 싶습니다. 예: 이전:
zmjppcxlpq2m.png -> /home/s01/public_html/cgi-bin/uploads/00029/zmjppcxlpq2m
있기를 바랍니다
zmjppcxlpq2m.png -> /home2/s01/public_html/cgi-bin/uploads/00029/zmjppcxlpq2m
모든 파일에 대해. 어떡해?
답변1
ln
이전 대상을 삭제하지 않고도 소프트 링크의 대상을 강제로 변경할 수 있습니다.
ln -f -s /new/location/to/link newlink
예를 들어:
ln -f -s /home2/s01/public_html/cgi-bin/uploads/00029/zmjppcxlpq2m zmjppcxlpq2m.png
또는 원자 대체를 위해 mv를 사용할 수 있습니다.
ln -s /home2/s01/public_html/cgi-bin/uploads/00029/zmjppcxlpq2m new_zmjppcxlpq2m.png
mv new_zmjppcxlpq2m.png zmjppcxlpq2m.png
디렉터리의 모든 링크를 변경하려면 다음과 같은 명령을 사용해 보세요.
find /dir/with/symlinks/ -lname "/home/s01/public_html/cgi-bin/uploads/00029/*" \
-exec sh -c 'ln -sf `echo $(readlink $0) | sed s/home/home2/` $0' {} \;
명령을 실행하기 전에 모든 심볼릭 링크를 주의 깊게 백업하십시오.