cria um symlink com ln mas um loop será criado

1

Eu gostaria de criar um symlink da minha fonte:

/nfs/www/example.com/sourcefolder

para este destino:

/var/www/example.com/destinationfolder

Então, eu corro este comando:

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

Meu problema: Se o comando for executado duas vezes na pasta de destino, será um loop

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

Eu testei também:

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

Então eu terei um loopfolder "shm". O problema é que o webapplication precisa que a pasta seja chamada de "tmp", mas deve ser mapeada para a memória.

O que estou fazendo de errado?

    
por stefan83 21.02.2017 / 08:59

1 resposta

1

Tente usar -v para ter uma saída mais detalhada:

[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

O loop de link é devido ao comportamento de 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

que tenta analisar destinationfolder como um diretório em vez de um symlink já existente.

Você pode evitar isso usando -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
    
por 21.02.2017 / 12:12

Tags