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

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

Eu tenho duas pastas, uma das quais é a raiz do meu servidor web. Quero vinculá-lo à pasta do meu projeto para poder manter tudo atualizado com o Git.

Se eu tentar fazer isso:

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

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

Observação: também preciso vincular vários arquivos ocultos. Posso fazer isso usando ln?

Responder1

De man ln:

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

Como você já possui um diretório chamado html, o link será criado dentro dele /var/www/htmltendo o nome do destino, ou seja, project.

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

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

Observação: se você usar uma barra final (como em ln -s /home/user/project /var/www/html/), você receberá um erro: ln: target '/var/www/html' is not a directory: No such file or directory.

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.

Responder2

Certifique-se de que o diretório html não seja criado em /var/www/.

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

informação relacionada