손상된 심볼릭 링크를 새 위치로 복구

손상된 심볼릭 링크를 새 위치로 복구

오래된 웹서버에서 새로운 웹서버로 옮겼습니다. 이제 폴더 구조를 변경했기 때문에 일부 심볼릭 링크가 작동하지 않습니다. 이러한 링크를 쉽게 복구할 수 있는 방법이 있는지 알고 싶습니다. 이 명령으로 링크를 찾았습니다.

find -L . -type l -ls

링크는 다음과 같습니다.

./example/vondercode/releases/example.com/2.0/www/img/uploads -> /home/example/vondercode/uploads
./example2/www/img/uploads -> /home/example2/vondercode/uploads

이제 링크는 다음과 같아야 합니다.

./example/vondercode/releases/example.com/2.0/www/img/uploads -> /var/www/html/example/vondercode/uploads
./example2/www/img/uploads -> /var/www/html/example2/vondercode/uploads

너무 쉽게 말하면 모두 /home대체해야 합니다. /var/www/html 이것이 가능합니까?

답변1

"/home을 /var/www/html로 대체"하는 경우 다음 접근 방식이 작동합니다.

find . -type l -exec sh -c 'lnk="{}"; target="$(readlink '{}' | sed 's#/home#/var/www/html#')"; unlink "${lnk}"; ln -s "${target}" "${lnk}" ' \;

Toby Speight가 첫 번째 버전이 예상대로 작동하지 않았다는 점을 지적해 주셔서 감사합니다. 이 문제는 이제 수정되었습니다.

답변2

도구를 썼습니다. 다음과 같이 사용할 수 있습니다.

fix_broken_symlinks . /home /var/www/html --force

여기에서 내 주요 답변의 자세한 내용을 확인하세요.깨진 심볼릭 링크를 많이 "다시 연결"하려면 어떻게 해야 합니까?

관련 정보