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?

utilisateur991710
la source

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.

heemayl
la source
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

Jivak Dhadse
la source