기존 웹서버에서 새 웹서버로 옮겼습니다. 이제 폴더 구조를 변경했기 때문에 일부 심볼릭 링크가 작동하지 않습니다. 이러한 링크를 수정하는 쉬운 방법이 있는지 궁금합니다. 다음 명령이 포함된 링크를 찾았습니다.
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
내 주요 답변에서 자세한 내용을 확인하세요.다수의 깨진 심볼릭 링크를 "다시 연결"하는 방법은 무엇입니까?