web-dev-qa-db-fra.com

Comment fonctionnent les liens symboliques dans Dropbox?

J'ai créé des liens vers des fichiers d'un dossier. Lorsque j'ai ajouté ce dossier à Dropbox, les liens contenaient des copies dupliquées des fichiers liés. Avez-vous eu ce problème? Comprends-tu ce qui se passe? Y a-t-il une solution?

Pour clarifier cette question: dans la colonne "type" du gestionnaire de fichiers, avant la connexion à Dropbox, il était indiqué que Link_to_notes était un lien et sa taille était de 32 octets. Après la connexion à Dropbox, Link_to_notes s’est révélé être un document en texte brut et sa taille était de 18,7 Ko, la taille du fichier de notes.

18
user119046

DropBox suit les liens symboliques et les traite comme des répertoires. C'est vraiment utile pour sauvegarder sans avoir à déplacer des fichiers et des répertoires dans votre répertoire DropBox.

$ ln -s ~/Documents/ ~/Dropbox/Documents
13
Gregology

La meilleure façon de le faire est de stocker les fichiers dans le dossier de la boîte de dépôt et de créer un lien symbolique vers eux depuis l'extérieur ...

Créez donc ~/Dropbox/Documents et un lien symbolique:

ln -s ~/Dropbox/Documents ~/Documents

Cela évite la confusion et la dissociation de tout élément constituant un lien à l'intérieur de Dropbox, car vous y trouvez tout ce qui se trouve à l'intérieur. Lorsque vous le souhaitez, vous créez un lien vers Dropbox. La règle de base est de ne pas avoir de lien symbolique dans le dossier de la boîte de dépôt ... si vous les avez en dehors du dossier de la boîte de dépôt, vous n'aurez aucun problème.

J'ai Dropbox sur plusieurs machines Ubuntu et tous mes dossiers principaux sont réellement stockés dans Dropbox.

7
JamesC

dropbox suivra les liens sym aux répertoires, mais cassera un lien (sym ou hard) vers un fichier et le remplacera par un fichier.

5
brad80242

TL; DR: Voici un moyen d’obtenir un comportement assez similaire aux liens symboliques, au niveau de l’interface utilisateur graphique (GUI) uniquement, ce qui est particulièrement utile si vous ne le faites pas voulez que DropBox le copie de manière répétée. fichiers dans différents dossiers de la hiérarchie DropBox simplement parce que vous souhaitez les afficher depuis différents emplacements (chemins de dossiers, par exemple).

Contexte

Plus d'une fois, j'ai été gravé par DropBox lors de la duplication de dossiers si je crée des liens symboliques (liens symboliques) dans la hiérarchie des dossiers DropBox, même au point de remplir mon compte. Comme beaucoup l'ont constaté sur le Web, l'absence de traitement adéquat des liens symboliques par DropBox n'est pas vraiment une solution, ce qui est regrettable, car il ne leur serait pas difficile de le faire.

Workaround

Une solution de contournement que j’utilise, cependant, pour obtenir le comportement équivalent de liens symboliques dans la hiérarchie de DropBox - ce que d’autres appellent souvent des "liens symboliques internes" - sans que DropBox ne duplique tout, est de créer l’équivalent d’un fichier de raccourci Windows (c.-à-d. , un fichier .lnk dans l’écosystème MS). Je le fais en créant un fichier .desktop qui ouvre le gestionnaire de fichiers de mon système sur le chemin souhaité. Ainsi, cette solution de contournement ne fonctionne qu'au niveau de l'interface graphique et uniquement pour les systèmes compatibles XDG (par exemple, Ubuntu, les systèmes basés sur GNOME, etc.).

Exemple

Par exemple, je lis des techniques avancées Python pour un nouveau travail que je prends, et les fichiers PDF que je lis sont stockés dans mon dossier DropBox pour l'application GoodReader (iOS) afin que je puisse lisez-les à la fois sur mon bureau et avec mes appareils mobiles. Plutôt que d'avoir à explorer ce dossier (/home/morse/lib/active/GoodReader/Books/Python), je crée simplement un dossier Python.desktop sous /home/morse/Desktop avec le contenu suivant:

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Name=Python
Exec=nautilus /home/morse/lib/active/GoodReader/Books/Python
Icon=/usr/share/icons/MacBuntu-OS/places/96/stock_folder.png
Terminal=false

(Remarque: veillez à adapter la portion Exec=nautilus ... si vous utilisez un gestionnaire de fichiers autre que Nautilus. Évidemment, vous voudrez adapter les Name=, Icon= et le chemin de la ligne Exec= pour chaque "lien symbolique" que vous souhaitez créer. .)

Avec cela, je vois un dossier nommé Python sur mon bureau qui agit comme un lien symbolique - c’est-à-dire que je double-clique dessus et il ouvre le dossier approprié --- mais seulement un petit texte fichier (par exemple, Python.desktop) est synchronisé avec DropBox et mes autres systèmes (par opposition à tout le contenu éventuellement dupliqué partout par DropBox).

Comme pour les autres fichiers .desktop, les autorisations doivent être définies de sorte que le fichier soit à la fois lisible et exécutable (par exemple, chmod 700 Python.desktop ou chmod 755 Python.desktop) pour que l'icône indiquée s'affiche et que vous double-cliquez dessus pour effectuer quoi que ce soit.

Résumé

En résumé, j'aurai toujours les fichiers réels disponibles quelque part dans DropBox - dans cet exemple, /home/morse/lib/active/GoodReader/Books/Python -, mais j'aurai aussi un "raccourci" sur le bureau de tous mes systèmes Linux pour lesquels J'ai également configuré DropBox.

Bien entendu, cette solution de contournement ne fonctionne pas au niveau de la ligne de commande, comme le ferait un vrai lien symbolique.

Cela dit, cela semble être une solution de contournement novatrice au niveau de l'interface graphique, une solution que je n'ai pas vue publiée ailleurs. J'espère donc que cette approche pourra être utile à d'autres.

2
Doug Morse

Compressez vos liens et enregistrez le fichier compressé dans Dropbox

Les réponses précédentes sont exhaustives et claires. Je suggère simplement trois solutions de contournement, basées sur un principe unique. Le troisième semble plus difficile mais il est très efficace. L'idée est de: compresser vos liens symboliques dans un fichier tar, ce que Dropbox ne traitera pas comme un lien, puis enregistrez-le dans Dropbox. La troisième façon est presque aussi directe que de copier vos liens directement sur votre Dropbox - en réalité beaucoup plus rapidement que de copier plusieurs liens un par un.

J'ai une vingtaine de liens symboliques que j'utilise normalement dans mon installation Lubuntu, par exemple. pour un accès rapide aux scripts bash enregistrés dans Dropbox, à des disques durs externes, à des documents fréquemment utilisés, etc. Ils se trouvent tous dans mon répertoire personnel et sur le bureau et je trouve pratique de disposer d’une copie de Dropbox à utiliser pour d’autres installations ou lorsque Je dist-upgrade (c'est-à-dire lorsque je réinstalle après avoir essayé de dist-upgrade;).

1ère voie

Vous créez un répertoire appelé MyLinks (par exemple, dans Documents) et copiez tous vos liens symboliques d'origine vers celui-ci; Si vous avez des liens symboliques dans d'autres répertoires, créez des sous-répertoires dans MyLinks et copiez-les. Par exemple, si les liens que vous souhaitez enregistrer se trouvent dans la maison et dans le Bureau, copiez les liens de la maison dans MyLinks, créez un répertoire appelé Bureau et copiez-y les liens du Bureau. Ensuite, ouvrez un Terminal, cd Documents (à condition qu’il s’agisse du répertoire où se trouve MyLinks) et créez un fichier tar:

tar -cvf MyHomeLinks.tar MyHomeLinks

(N'oubliez pas d'ajouter l'extension ".tar" au nom du fichier compressé, sinon Ubuntu Archive Manager refusera de l'ouvrir.) Si vous procédez ainsi, veillez simplement à ne pas ajouter l'option -h (--dereference) à tar car elle se comporterait précisément comme Dropbox et compresserait les fichiers cibles au lieu des liens symboliques. (D'ailleurs, un tel comportement serait le bienvenu dans la plupart des cas, surtout si on vise la portabilité, mais ce n'est pas le cas si l'on veut enregistrer les liens symboliques sous forme de liens symboliques.)

Le fichier tar inclurait également des liens temporairement rompus, tels que des liens vers des disques externes externes non montés - ce qui est correct.

Enregistrez le fichier tar dans votre Dropbox. Lorsque vous avez besoin de récupérer les liens, copiez le fichier tar dans un répertoire de votre système de fichiers (pas dans Dropbox), extrayez-le (faites simplement un clic droit et choisissez "Extraire ici") et copiez vos liens symboliques vers les emplacements souhaités. .

2ème manière

Si les liens symboliques que vous souhaitez enregistrer ont un préfixe univocal (tel que "MySl" ...), vous pouvez très rapidement créer votre fichier compressé de cette manière (espaces inutiles ajoutés pour éviter les erreurs):

find   .   -name   "MySl*"|xargs  tar  cvf  MyLinks.tar

Le point après "trouver" signifie le répertoire en cours: ouvrez le Terminal dans votre répertoire personnel (par défaut). Vous pouvez sûrement ajouter un chemin au fichier tar et vous pouvez lancer la commande depuis un autre répertoire que celui d'origine: remplacez le "." avec le chemin de votre maison/utilisateur. Pas besoin de créer des répertoires de travail comme MyLinks ci-dessus. La restauration des liens symboliques est également rapide: vous copiez le fichier tar dans votre maison, cliquez dessus avec le bouton droit de la souris et "extrayez-le ici". Cependant, avant de commencer à préfixer tous les noms de vos liens symboliques, jetez un œil à l'option suivante.

ème voie (et la meilleure)

Un moyen très rapide de collecter tous vos liens symboliques dans un fichier tar est le suivant: ouvrez un terminal dans votre domicile/utilisateur (valeur par défaut lorsque vous ouvrez un terminal) et:

find  .  -type  l|xargs  tar  -cvf  AllLinks.tar

L'inconvénient est que vous obtenez TOUS vos liens, y compris des liens symboliques mozilla ou hplip que vous ne saviez même pas que vous aviez. Pour éviter cela et pour copier tous les liens symboliques d'une liste de répertoires spécifiée sans récurrence , vous écrivez la liste après "find" dans la commande ci-dessus. . Supposons que vous souhaitiez enregistrer les liens depuis le répertoire home/user et le bureau; tu peux écrire

 find /home/<USER>/ /home/<USER>/Desktop/ -maxdepth 1 -type l|xargs tar -cvf MyLinks.tar

"-maxdepth 1" sert à empêcher la découverte de rentrer chez soi. Vous pouvez ajouter un chemin à tarfile si vous le souhaitez. Alternativement:

 find .  Desktop -maxdepth 1 -type l|xargs tar -cvf MyLinks.tar

Si vous êtes paresseux et que vous souhaitez l'utiliser souvent, vous pouvez l'ajouter comme alias à .bashrc ou à .bash_aliases dans votre répertoire personnel (.bash_aliases est un moyen très pratique de collecter vos alias et, pourquoi pas, de les enregistrer dans un répertoire. Dropbox ...). Créez simplement un nouveau fichier vide appelé .bash_aliases dans votre répertoire personnel (c’est-à-dire/home/utilisateur), ouvrez-le avec un éditeur de texte et écrivez la ligne suivante:

alias save_symlinks='find . Desktop -maxdepth 1 -type l|xargs tar -cvf MyLinks.tar'

Remplacez les répertoires après "find" par ceux de votre choix et "save_symlinks" par un nom de commande de votre choix. Pour restaurer, ouvrez votre gestionnaire de fichiers (si le chemin d'accès aux répertoires de la commande ci-dessus n'est pas absolu, le fichier compressé doit être dans le répertoire personnel/utilisateur), cliquez avec le bouton droit de la souris et extrayez-le.

Si vous faites cela, la vie est plus facile. Tout ce que tu dois faire est:

SAVE: saisissez save_symlinks dans le terminal, enregistrez le fichier tar de votre domicile dans Dropbox; RESTORE: copiez le fichier de Dropbox dans votre répertoire personnel, faites un clic droit dessus et sélectionnez "extraire ici".

0
archie