깨진 심볼릭 링크를 새 위치로 수정

깨진 심볼릭 링크를 새 위치로 수정

기존 웹서버에서 새 웹서버로 옮겼습니다. 이제 폴더 구조를 변경했기 때문에 일부 심볼릭 링크가 작동하지 않습니다. 이러한 링크를 수정하는 쉬운 방법이 있는지 궁금합니다. 다음 명령이 포함된 링크를 찾았습니다.

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

내 주요 답변에서 자세한 내용을 확인하세요.다수의 깨진 심볼릭 링크를 "다시 연결"하는 방법은 무엇입니까?

관련 정보