ln을 사용하면 심볼릭 링크가 생성되지만 루프가 생성됩니다.

ln을 사용하면 심볼릭 링크가 생성되지만 루프가 생성됩니다.

내 소스에서 심볼릭 링크를 만들고 싶습니다.

/nfs/www/example.com/sourcefolder

이 목적지까지:

/var/www/example.com/destinationfolder

그래서 다음 명령을 실행합니다.

ln -s /nfs/www/example.com/sourcefolder /var/www/example.com/destinationfolder

내 질문: 대상 폴더에서 명령을 두 번 실행하면 루프가 발생합니다.

/var/www/example.com/destinationfolder/sourcefolder/......./sourcefolder

나는 또한 다음을 테스트했습니다.

ln -s /dev/shm/ $APACHEHOME/tmp

그래서 루프 폴더 "shm"을 갖게 됩니다. 문제는 웹 애플리케이션이 폴더 이름을 "tmp"로 지정해야 하지만 메모리에 매핑되어야 한다는 것입니다.

내가 뭘 잘못했나요?

답변1

더 자세한 출력을 원하면 -v를 사용해 보십시오:

[root@centos7 ~]# mkdir /tmp/test/sourcefolder
[root@centos7 ~]# ls -l /tmp/test
total 0
drwxr-xr-x. 2 root root 6 Feb 21 11:40 sourcefolder
[root@centos7 ~]# ln -v -s /tmp/test/sourcefolder /tmp/test/destinationfolder
‘/tmp/test/destinationfolder’ -> ‘/tmp/test/sourcefolder’
[root@centos7 ~]# ls -l /tmp/test
total 0
lrwxrwxrwx. 1 root root 22 Feb 21 11:55 destinationfolder -> /tmp/test/sourcefolder
drwxr-xr-x. 2 root root  6 Feb 21 11:40 sourcefolder

링크 루프는 ln의 동작으로 인해 발생합니다.

[root@centos7 ~]# ln -v -s /tmp/test/sourcefolder /tmp/test/destinationfolder
‘/tmp/test/destinationfolder/sourcefolder’ -> ‘/tmp/test/sourcefolder’
[root@centos7 ~]# ls -l /tmp/test
total 0
lrwxrwxrwx. 1 root root 22 Feb 21 11:55 destinationfolder -> /tmp/test/sourcefolder
drwxr-xr-x. 2 root root 25 Feb 21 11:57 sourcefolder
[root@centos7 ~]# ls -l /tmp/test/sourcefolder
total 0
lrwxrwxrwx. 1 root root 22 Feb 21 11:57 sourcefolder -> /tmp/test/sourcefolder

이미 존재하는 심볼릭 링크 대신 대상 폴더를 디렉터리로 해석해 보세요.

-T를 사용하면 이를 방지할 수 있습니다.

[root@centos7 ~]# ln -v -T -s /tmp/test/sourcefolder /tmp/test/destinationfolder
‘/tmp/test/destinationfolder’ -> ‘/tmp/test/sourcefolder’
[root@centos7 ~]# ln -v -T -s /tmp/test/sourcefolder /tmp/test/destinationfolder
ln: failed to create symbolic link ‘/tmp/test/destinationfolder’: File exists

관련 정보