Comment fonctionnent les liens symboliques dans Dropbox?

20

J'ai fait quelques liens vers des fichiers dans un dossier. Lorsque j'ai ajouté ce dossier à Dropbox, les liens contenaient des copies en double des fichiers liés à. Avez-vous eu ce problème? Comprenez-vous ce qui se passe? Y a-t-il une solution?

Pour clarifier cette question: Dans la colonne "type" du gestionnaire de fichiers, avant de se connecter à Dropbox, Link_to_notes s'est révélé être un lien et la taille était de 32 octets. Après la connexion à Dropbox, Link_to_notes s'est avéré être un document en texte brut et la taille était de 18,7 ko, la taille du fichier de notes.

user119046
la source
2
Avec Dropbox étant une solution multiplateforme, tout autre comportement serait probablement encore plus déroutant - comment se comporterait-il si vous synchronisez votre dossier avec une machine Windows?
Sergey
Depuis la mi-2019, Dropbox ne suit plus les liens symboliques
eri0o
Depuis l'écriture actuelle, les liens symboliques ne fonctionnent plus et ça craint.
Jus12

Réponses:

15

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
Grégologie
la source
Cela pourrait être un comportement dangereux. Par exemple, si je supprime le lien du répertoire Dropbox, est-il possible que je supprime accidentellement mes fichiers ou dossiers d'origine également?
Vicon
@Vicon, ce n'est pas un comportement dangereux, c'est un comportement attendu. Mais oui, pour être clair, si vous supprimez le lien symbolique, les fichiers seront également supprimés de Dropbox
Gregology
2
Dans la communauté Dropbox, il a été dit à maintes reprises que Dropbox ne prend pas en charge les liens symboliques et déconseille fortement de l'utiliser. Si vous contactez le support client Dropbox, il vous demandera de supprimer tout lien symbolique avant de continuer. Bien sûr, les gens peuvent toujours l'utiliser, mais ce n'est pas un comportement prévu par Dropbox et peut être dangereux (perdre des fichiers), problématique (avoir des fichiers dupliqués synchronisés involontairement, qui est le problème à résoudre dans cette question), ainsi comme problèmes de performances de synchronisation, etc.
Vicon
@Vicon, les liens symboliques fonctionnent de manière transparente pour de nombreuses opérations: les programmes qui lisent ou écrivent dans des fichiers nommés par un lien symbolique se comporteront comme s'ils fonctionnaient directement sur le fichier cible
Gregology
1
Cette méthode a bien fonctionné pour moi pendant longtemps dans les systèmes de fichiers ext4. Je n'ai aucun sentiment de danger car je n'interagis jamais avec les fichiers Dropbox dans Dropbox. Il réussit à relier mes systèmes Linux et tablettes Android. Cependant, je remarque que ce lien indique que mes conseils sont obsolètes help.dropbox.com/installs-integrations/sync-uploads/symlinks
pauljohn32
7

La meilleure façon de le faire est de stocker les fichiers dans le dossier dropbox 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 empêche Dropbox de devenir confus et de dissocier tout ce qui est un lien à l'intérieur, car vous avez toutes les choses à l'intérieur et à la place, lorsque vous les voulez ailleurs, vous les liez dans Dropbox. La règle de base est de ne pas avoir de liens symboliques n'importe où dans le dossier dropbox ... les avoir en dehors du dossier dropbox et vous n'aurez aucun problème.

J'ai Dropbox sur plusieurs machines Ubuntu et tous mes principaux dossiers de premier niveau sont stockés dans Dropbox.

JamesC
la source
Pourquoi Dropbox serait-il confus? Et comment Dropbox modifierait-il les liens symboliques? Les liens symboliques sont automatiquement résolus par le système de fichiers
Gregology
6

dropbox suivra les liens sym vers les répertoires, mais il rompra un lien (sym ou dur) vers un fichier et le remplacera par un fichier.

brad80242
la source
2

TL; DR: Vous trouverez ci-dessous 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 voulez pas que DropBox copie à plusieurs reprises les mêmes fichiers vers différents dossiers dans la DropBox hiérarchie simplement parce que vous voulez les voir à partir de différents endroits (c.-à-d. les chemins de dossier).

Contexte

Plus d'une fois, j'ai été brûlé par la duplication de dossiers DropBox si je crée des liens symboliques (liens symboliques) dans la hiérarchie des dossiers DropBox, au point même de remplir mon compte. Comme beaucoup l'ont remarqué sur le Web, il n'y a pas de véritable solution pour le manque de DropBox de traiter correctement les liens symboliques, ce qui est regrettable car il ne leur serait pas difficile de le faire.

solution de contournement

Une solution de contournement que j'utilise, cependant, pour obtenir le comportement équivalent des liens symboliques au sein de la hiérarchie DropBox --- ce que d'autres appellent souvent des "liens symboliques internes" --- sans que DropBox ne duplique tout, consiste à créer l'équivalent d'un fichier de raccourci Windows (c'est-à-dire , 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 au 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, bien d'autres).

Exemple

Par exemple, je lis des techniques Python avancées 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 les lire tous les deux 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 Python.desktopdossier sous /home/morse/Desktopavec 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

(Note: Assurez - vous d'adapter la Exec=nautilus ...partie si vous utilisez un gestionnaire de fichiers autre que Nautilus, et bien sûr , vous voulez adapter Name=, Icon=et la partie de chemin de la Exec=ligne pour chaque « symlink » 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 qu'il ouvre le dossier approprié --- mais seulement un petit fichier texte (par exemple, Python. bureau) est synchronisé avec DropBox et mes autres systèmes (par opposition à tous les contenus éventuellement dupliqués partout par DropBox).

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

Sommaire

En résumé, alors, je disposerai toujours des fichiers réels quelque part dans DropBox --- dans cet exemple, /home/morse/lib/active/GoodReader/Books/Python--- mais j'aurai également un "raccourci" de bureau sur tous mes systèmes basés sur Linux pour lesquels je ont également DropBox configuré.

Bien sûr, cette solution de contournement ne fonctionne pas au niveau de la ligne de commande, comme le ferait un véritable lien symbolique.

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

Doug Morse
la source
C'est génial! Je n'ai pas vu de solution pour les liens symboliques internes jusqu'à présent! Et c'est super soigné. Merci d'avoir fait ma journée! Je dois ajouter qu'il devrait être assez simple de créer un script de ligne de commande, qui analyse un fichier .desktop et ouvre le fichier ou le dossier qui est lié par un lien symbolique, bien que vous ne puissiez pas "cd" dans le répertoire directement.
Praveen
0

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 seul principe. 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 que Dropbox ne traitera pas comme un lien et de l'enregistrer dans Dropbox. La troisième méthode est presque aussi directe que la copie de vos liens directement sur votre Dropbox - en fait beaucoup plus rapide que la copie de 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, aux disques durs externes, aux documents fréquemment utilisés, etc. Ils sont tous dans mon répertoire personnel et sur le bureau et je le trouve pratique pour en avoir une copie Dropbox à utiliser pour d'autres installations ou lorsque je fais une mise à niveau dist (c'est-à-dire lorsque je réinstalle après avoir essayé de mettre à niveau dist;).

1ère voie

Vous créez un répertoire appelé MyLinks (par exemple, dans Documents) et vous y copiez tous les liens symboliques de votre maison; si vous avez des liens symboliques dans d'autres répertoires, créez des sous-répertoires dans MyLinks et copiez-y vos liens symboliques. Par exemple, si les liens que vous souhaitez enregistrer se trouvent à la maison et dans le bureau, copiez les liens d'accueil dans MyLinks, créez-y un répertoire appelé Bureau et copiez-y les liens du bureau. Ouvrez ensuite 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 tar, sinon Ubuntu Archive Manager refuserait de l'ouvrir.) Si vous faites cela, faites juste attention à 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. (Soit dit en passant, un tel comportement serait le bienvenu dans la plupart des cas, surtout si l'on vise la portabilité, mais ce n'est pas le cas si l'on veut enregistrer les liens symboliques en tant que liens symboliques.)

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

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

2ème voie

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

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

Le point unique après "trouver" signifie le répertoire courant: ouvrez le Terminal dans votre répertoire personnel (comme par défaut). Vous pouvez sûrement ajouter un chemin au fichier tar et vous pouvez lancer la commande à partir d'un autre répertoire qui n'est pas à la maison: remplacez le "." avec le chemin d'accès à votre domicile / 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, faites un clic droit dessus et "extrayez ici". Cependant, avant de commencer à préfixer tous les noms de vos liens symboliques, jetez un œil à l'option suivante.

3ème voie (et meilleure)

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

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

L'inconvénient est que vous y obtenez TOUS vos liens, y compris des liens symboliques mozilla ou hplip que vous ne saviez même pas avoir. Pour éviter cela et pour copier tous et seulement les liens symboliques d'une liste spécifiée de répertoires sans récursivité , vous écrivez la liste après "find" dans la commande ci-dessus. Disons que vous souhaitez enregistrer les liens de la maison / utilisateur et du bureau; tu peux écrire

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

"-maxdepth 1" est pour empêcher la découverte de se reproduire à travers la maison. Vous pouvez ajouter un chemin vers 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 en tant qu'alias à .bashrc ou à .bash_aliases dans votre répertoire personnel (.bash_aliases est un moyen très pratique pour collecter vos alias et, pourquoi pas, les enregistrer dans Dropbox ...). Créez simplement un nouveau fichier vide appelé .bash_aliases dans votre répertoire personnel (c'est-à-dire / home / user), ouvrez-le avec un éditeur de texte et écrivez-y 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 dans la commande ci-dessus n'est pas absolu, le fichier tar doit être dans home / user), faites un clic droit et extrayez.

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

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

archie
la source