Criando um link simbólico de uma pasta para outra com nomes diferentes?

81

Eu tenho duas pastas, uma das quais é a raiz do meu servidor web. Quero vinculá-lo à minha pasta do projeto para que eu possa manter as coisas atualizadas com o Git.

Se eu tentar fazer isso:

ln -s /home/user/project  /var/www/html

O sistema cria uma pasta chamada projeto dentro da pasta html e vincula-a. Existe alguma maneira de vinculá-lo para que o diretório 'html' aponte para o conteúdo do projeto ? Eles têm que ter o mesmo nome?

Nota : Eu também preciso vincular vários arquivos ocultos. Posso fazer isso usando ln?

user991710
fonte

Respostas:

109

De man ln:

Por padrão, cada destino (nome do novo link) já não deveria existir.

Como você já tem um diretório nomeado html, o link será criado dentro /var/www/htmlcom o nome do destino, ou seja project.

Se você deseja ter um link simbólico /var/www/htmlapontando para /home/user/project, não deve ter o diretório htmlpresente previamente. Portanto, você só deve ter /var/wwwe, em seguida, executar o seguinte criará o link simbólico desejado (não faça isso a menos que tenha certeza):

ln -s /home/user/project /var/www/html

Aqui está um exemplo:

$ pwd
/home/user/test/askubuntu

$ ls -l
total 4
drwxrwxr-x 2 user user 4096 Mar 25 00:16 foo

$ ln -s /home/user/test/bar /home/user/test/askubuntu/foo

$ ls -l
total 4
drwxrwxr-x 2 user user 4096 Mar 25 00:17 foo

$ cd foo/
$ ls -l
total 0
lrwxrwxrwx 1 user user 25 Mar 25 00:17 bar -> /home/user/test/bar

$ cd ..
$ rm -r foo/

$ ls -l
total 0

$ ln -s /home/user/test/bar /home/user/test/askubuntu/foo

$ ls -l
total 0
lrwxrwxrwx 1 user user 25 Mar 25 00:18 foo -> /home/user/test/bar

E sim, você pode criar links simbólicos de arquivos ocultos.

heemail
fonte
13
Eu tentei isso, mas o link simbólico resultante era um arquivo e não um diretório
Alex
1
@ Alex Um softlink aparece como um arquivo, mas o resultado é que ele se comporta como a pasta para a qual estava apontando.
Chanoch
5
Observe também que o diretório de origem não deve ser caminho relativo deve ser absoluto assim ln -s ./ /var/www/htmlnão vai funcionar
Diego Andrés Díaz Espinoza
0

Verifique se o diretório html não está criado em /var/www/.

O comando então é: ln -s -T /home/user/project /var/www/html

Jivak Dhadse
fonte