Créer un lien symbolique d'un dossier à un autre avec des noms différents?


81

J'ai deux dossiers, dont l'un est la racine de mon serveur Web. Je souhaite le relier à mon dossier de projet afin de pouvoir garder les informations à jour avec Git.

Si j'essaie de faire ceci:

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

Le système crée un dossier appelé projet dans le dossier html et le relie. Est-il possible de le lier de sorte que le répertoire 'html' pointe vers le contenu du projet ? Doivent-ils être le même nom?

Remarque : je dois également lier plusieurs fichiers cachés. Puis-je faire cela en utilisant ln?

Réponses:


109

De man ln:

Par défaut, chaque destination (nom du nouveau lien) ne devrait pas déjà exister.

Comme vous avez déjà un répertoire nommé html, le lien sera créé à l'intérieur /var/www/htmlavec le nom de la cible, c'est-à-dire project.

Si vous voulez avoir un lien symbolique /var/www/htmlpointant vers /home/user/projectvous, vous ne devriez pas avoir le répertoire htmlprésent auparavant. Donc, vous devriez seulement avoir, /var/wwwet en exécutant, ce qui suit va créer le lien symbolique souhaité (ne le faites pas à moins d’être sûr):

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

Voici un exemple:

$ 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

Et oui, vous pouvez créer des liens symboliques de fichiers cachés.


13
J'ai essayé cela, mais le lien symbolique résultant était un fichier et non un répertoire
Alex

1
@Alex un lien symbolique apparaît comme un fichier mais le résultat est qu'il se comporte comme le dossier sur lequel il pointait.
Chanoch

5
Notez également que le répertoire source ne doit pas être un chemin relatif. Le chemin doit être absolu et ln -s ./ /var/www/htmlne fonctionnera donc pas
Diego Andrés Díaz Espinoza

0

Assurez-vous que le répertoire HTML n'est pas créé sous /var/www/.

La commande est alors: ln -s -T /home/user/project /var/www/html

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.