Wie funktionieren symbolische Links in Dropbox?


20

Ich habe einige Links zu Dateien in einem Ordner erstellt. Als ich diesen Ordner zu Dropbox hinzugefügt habe, enthielten die Links doppelte Kopien der verknüpften Dateien. Hattest du dieses Problem? Verstehst du was passiert? Gibt es eine lösung

Um diese Frage klarer zu machen: In der Spalte "Typ" des Dateimanagers wurde vor dem Herstellen einer Verbindung zu Dropbox angezeigt, dass Link_to_notes ein Link ist, und die Größe betrug 32 Byte. Nach dem Herstellen der Verbindung zu Dropbox wurde Link_to_notes als einfaches Textdokument angezeigt. Die Größe der Notizen-Datei betrug 18,7 kB.


2
Da Dropbox eine plattformübergreifende Lösung ist, ist wahrscheinlich jedes andere Verhalten noch verwirrender. Wie würde es sich verhalten, wenn Sie Ihren Ordner mit einem Windows-Computer synchronisieren?
Sergey

Seit Mitte 2019 folgt Dropbox nicht mehr den Symlinks
eri0o

Nach dem aktuellen Stand funktionieren Symlinks nicht mehr und es ist scheiße.
30.

Antworten:


15

DropBox folgt symbolischen Links und behandelt sie als Verzeichnisse. Es ist sehr nützlich, um ein Backup zu erstellen, ohne dass Sie Dateien und Verzeichnisse in Ihr DropBox-Verzeichnis verschieben müssen.

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

Dies könnte ein gefährliches Verhalten sein. Wenn ich zum Beispiel den Link aus dem Dropbox-Verzeichnis lösche, gibt es möglicherweise ein Szenario, in dem ich versehentlich auch meine ursprünglichen Dateien oder Ordner lösche?
Vicon

@ Vicon, das ist kein gefährliches Verhalten, das ist erwartetes Verhalten. Aber ja, um klar zu sein, wenn Sie den symbolischen Link entfernen, werden die Dateien auch aus Dropbox entfernt
Gregology

2
In der Dropbox-Community wurde immer wieder festgestellt, dass Dropbox keine symbolischen Links unterstützt und nachdrücklich davon abrät, sie zu verwenden. Wenn Sie sich an den Dropbox-Kundensupport wenden, werden Sie aufgefordert, alle symbolischen Links zu entfernen, bevor Sie fortfahren. Sicher, die Leute können es immer noch verwenden, aber dies ist kein von Dropbox beabsichtigtes Verhalten und kann gefährlich sein (Verlust von Dateien), problematisch (unbeabsichtigte Synchronisierung von Dateien - das ist das Problem, das in dieser Frage gelöst werden soll) B. beim Synchronisieren von Leistungsproblemen usw.
Vicon

@Vicon, symbolische Verknüpfungen funktionieren für viele Vorgänge transparent: Programme, die Dateien lesen oder in Dateien schreiben, die durch eine symbolische Verknüpfung benannt sind, verhalten sich so, als würden sie direkt auf die Zieldatei
angewendet

1
Diese Methode hat bei mir in ext4-Dateisystemen schon lange gut funktioniert. Ich habe kein Gefühl von Gefahr, weil ich niemals mit Dropbox-Dateien in Dropbox interagiere. Es gelingt mir, meine Linux-Systeme und Android-Tablets miteinander zu verbinden. Allerdings stelle
pauljohn32

7

Der beste Weg, dies zu tun, ist, die Dateien im Dropbox-Ordner zu speichern und von außen mit ihnen zu verknüpfen ...

Also erstelle ~ / Dropbox / Documents und symlink:

ln -s ~/Dropbox/Documents ~/Documents

Dadurch wird verhindert, dass Dropbox verwirrt wird und Verknüpfungen zu Verknüpfungen aufgehoben werden, da alle Elemente vorhanden sind. Wenn Sie sie an einer anderen Stelle haben möchten, verknüpfen Sie sie in Dropbox. Die Grundregel ist, dass es im Dropbox-Ordner keine Symlinks gibt. Wenn Sie diese außerhalb des Dropbox-Ordners haben, ist dies kein Problem.

Ich habe Dropbox auf mehreren Ubuntu-Rechnern und habe alle meine wichtigsten Top-Level-Ordner tatsächlich in Dropbox gespeichert.


Warum sollte Dropbox verwirrt werden? Und wie würde Dropbox symbolische Links verändern? Symbolische Verknüpfungen werden vom Dateisystem automatisch aufgelöst
Gregology

6

dropbox folgt sym-Links zu Verzeichnissen, unterbricht jedoch einen Link (entweder sym oder hard) zu einer Datei und ersetzt ihn durch eine Datei.


2

TL; DR: Unten ist eine Art und Weise Verhalten ganz ähnlich wie symbolische Links zu erhalten, an der grafischen Benutzeroberfläche (GUI) Ebene nur, was besonders hilfreich ist , wenn man nicht DropBox wiederholt die gleichen Dateien in verschiedenen Ordnern innerhalb der DropBox kopieren will Hierarchie, nur weil Sie sie von verschiedenen Orten (dh Ordnerpfaden) anzeigen möchten.

Hintergrund

Mehr als einmal wurde ich von DropBox beim Duplizieren von Ordnern gebrannt, wenn ich symbolische Links (Symlinks) in der DropBox-Ordnerhierarchie erstellte, bis mein Konto voll war. Wie viele im Internet bemerkt haben, gibt es keine wirkliche Lösung dafür, dass DropBox symbolische Links nicht richtig behandelt, was bedauerlich ist, da es für sie nicht schwer sein würde, dies zu tun.

Umgehung

Eine Abhilfemaßnahme, die ich jedoch verwende, um das entsprechende Verhalten von Symlinks in der DropBox-Hierarchie zu erreichen - was andere häufig als "interne Symlinks" bezeichnen -, ohne dass DropBox alles dupliziert, besteht darin, das Äquivalent einer Windows-Verknüpfungsdatei zu erstellen (d. H eine .lnk-Datei im MS-Ökosystem). Dazu erstelle ich eine .desktop-Datei, die den Dateimanager meines Systems unter dem gewünschten Pfad öffnet. Daher funktioniert diese Problemumgehung nur auf der GUI-Ebene und nur für XDG-kompatible Systeme (z. B. Ubuntu, GNOME-basierte Systeme usw.).

Beispiel

Zum Beispiel lese ich in fortgeschrittenen Python-Techniken für einen neuen Job, den ich annehme, und die PDFs, die ich lese, werden in meinem DropBox-Ordner für die GoodReader-App (iOS) gespeichert, damit ich sie beide auf meinem Desktop lesen kann und mit meinen mobilen Geräten. Anstatt einen Drilldown zu diesem Ordner ( /home/morse/lib/active/GoodReader/Books/Python) durchführen zu müssen, erstelle ich einfach einen Python.desktopOrdner /home/morse/Desktopmit folgendem Inhalt:

#!/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

(Hinweis: Achten Sie darauf , die Anpassung Exec=nautilus ...Teil , wenn Sie einen Dateimanager andere als Nautilus verwenden, und natürlich werden Sie anpassen möchten Name=, Icon=und Pfadabschnitt der Exec=Linie für jede „Symlink“ Sie wollen erstellen.)

Auf meinem Desktop wird ein Ordner mit dem Namen Python angezeigt, der sich wie ein symbolischer Link verhält. Das heißt, ich doppelklicke darauf und es wird der entsprechende Ordner geöffnet. Es wird jedoch nur eine kleine Textdatei (z. B. Python) angezeigt. Desktop) wird mit DropBox und meinen anderen Systemen synchronisiert (im Gegensatz zu allen Inhalten, die irgendwann überall von DropBox dupliziert werden).

Wie bei anderen .desktop-Dateien müssen die Berechtigungen so festgelegt werden, dass die Datei sowohl lesbar als auch ausführbar ist (z. B. chmod 700 Python.desktopoder chmod 755 Python.desktop), damit das angegebene Symbol angezeigt wird und ein Doppelklick darauf ausgeführt werden kann.

Zusammenfassung

Zusammenfassend habe ich dann immer die tatsächlichen Dateien irgendwo in DropBox verfügbar - in diesem Beispiel -, /home/morse/lib/active/GoodReader/Books/Pythonaber ich habe auch eine Desktop-Verknüpfung dazu für alle meine Linux-basierten Systeme, für die ich habe auch DropBox konfiguriert.

Natürlich funktioniert diese Problemumgehung nicht auf der Befehlszeilenebene, wie es ein echter Symlink tun würde.

Dies scheint jedoch eine neuartige Problemumgehung auf der GUI-Ebene zu sein, die ich an keiner anderen Stelle gesehen habe. Ich bin also zuversichtlich, dass dieser Ansatz für andere von Nutzen sein kann.


Das ist Genie! Bisher habe ich keine Lösung für interne Symlinks gesehen! Und das ist super ordentlich. Danke, dass du meinen Tag gemacht hast! Ich sollte hinzufügen, dass es ziemlich einfach sein sollte, ein Befehlszeilenskript zu erstellen, das eine .desktop-Datei analysiert und die verknüpfte Datei oder den verknüpften Ordner öffnet, obwohl Sie möglicherweise nicht direkt in das Verzeichnis "cd" können.
Praveen

0

Komprimieren Sie Ihre Links und speichern Sie die komprimierte Datei in Dropbox

Die vorherigen Antworten sind erschöpfend und klar. Ich schlage nur drei Problemumgehungen vor, die auf einem einzigen Prinzip basieren. Der dritte sieht schwieriger aus, ist aber sehr effizient. Die Idee ist: Komprimieren Sie Ihre Symlinks in eine TAR-Datei, die Dropbox nicht als Link behandelt, und speichern Sie sie in Dropbox. Der dritte Weg ist fast so direkt wie das direkte Kopieren Ihrer Links auf Ihre Dropbox - eigentlich viel schneller als das Kopieren mehrerer Links nacheinander.

Ich habe ungefähr zwanzig symbolische Links, die ich normalerweise in meiner Lubuntu-Installation verwende, z. B. für den schnellen Zugriff auf in Dropbox gespeicherte Bash-Skripte, auf externe Festplatten, auf häufig verwendete Dokumente usw. Sie befinden sich alle in meinem Heimverzeichnis und auf dem Desktop, und ich finde sie Es ist praktisch, eine Dropbox-Kopie davon für andere Installationen oder bei einem Dist-Upgrade (dh bei einer Neuinstallation nach dem Versuch, ein Dist-Upgrade durchzuführen) zu haben.

1. Weg

Sie erstellen ein Verzeichnis mit dem Namen MyLinks (z. B. in Documents) und kopieren alle Ihre Home-Symlinks in dieses Verzeichnis. Wenn Sie Symlinks in anderen Verzeichnissen haben, erstellen Sie Unterverzeichnisse in MyLinks und kopieren Sie Ihre Symlinks in diese Verzeichnisse. Wenn sich die Links, die Sie speichern möchten, zu Hause und auf dem Desktop befinden, kopieren Sie die Home-Links in MyLinks, erstellen Sie ein Verzeichnis mit dem Namen Desktop und kopieren Sie die Desktop-Links in das Verzeichnis. Öffnen Sie dann ein Terminal-CD-Dokument (sofern dies das Verzeichnis ist, in dem sich MyLinks befindet) und erstellen Sie eine tar-Datei:

tar -cvf MyHomeLinks.tar MyHomeLinks

(Denken Sie daran, dem Dateinamen die Erweiterung ".tar" hinzuzufügen, da Ubuntu Archive Manager sonst das Öffnen verweigert.) Wenn Sie dies tun, achten Sie nur darauf, die Option -h (--dereference) nicht zu tar hinzuzufügen würde sich genau wie Dropbox verhalten und die komprimieren Zieldateien anstelle der Symlinks . (Übrigens wäre ein solches Verhalten in den meisten Fällen zu begrüßen, insbesondere wenn man Portabilität anstrebt, aber nicht, wenn man die Symlinks als Symlinks speichern möchte.)

Die TAR-Datei würde auch Links enthalten, die vorübergehend beschädigt sind, z. B. Links zu externen Festplatten, die derzeit nicht eingebunden sind - was in Ordnung ist.

Speichern Sie die tar-Datei in Ihrer Dropbox. Wenn Sie die Links zurück benötigen, kopieren Sie die TAR-Datei in ein Verzeichnis in Ihrem Dateisystem (nicht in Dropbox), extrahieren Sie sie (klicken Sie einfach mit der rechten Maustaste und wählen Sie "Hier extrahieren") und kopieren Sie Ihre symbolischen Links zurück an die gewünschten Speicherorte .

2. Weg

Wenn die Symlinks, die Sie speichern möchten, ein eindeutiges Präfix haben (z. B. "MySl" ...), können Sie Ihr Tarfile auf diese Weise sehr schnell erstellen (unnötige Leerzeichen hinzugefügt, um Fehler zu vermeiden):

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

Der einzelne Punkt nach "find" steht für das aktuelle Verzeichnis: Öffnen Sie das Terminal in Ihrem Home-Verzeichnis (standardmäßig). Sie können der TAR-Datei sicher einen Pfad hinzufügen und den Befehl von einem anderen Verzeichnis aus ausführen, das nicht zu Hause ist: Ersetzen Sie das "." mit dem Pfad zu Ihrem Zuhause / Benutzer. Es ist nicht erforderlich, Arbeitsverzeichnisse wie oben unter MyLinks zu erstellen. Das Wiederherstellen der Symlinks geht ebenfalls schnell: Sie kopieren die Tarfile in Ihr Zuhause, klicken mit der rechten Maustaste darauf und "hier extrahieren". Bevor Sie jedoch mit dem Präfix aller Namen Ihrer Symlinks beginnen, sehen Sie sich die nächste Option an.

3. Weg (und am besten)

Eine sehr schnelle Möglichkeit, alle Ihre Symlinks in einer TAR-Datei zu sammeln, ist: Öffnen Sie ein Terminal in Ihrem Zuhause / Benutzer (dies ist die Standardeinstellung, wenn Sie ein Terminal öffnen) und:

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

Der Nachteil ist, dass Sie ALLE Ihre Links darin erhalten, einschließlich einiger Mozilla- oder HPLIP-Symlinks, von denen Sie nicht einmal wussten, dass Sie sie haben. Um dies zu vermeiden und alle und nur die Symlinks aus einer angegebenen Verzeichnisliste ohne Rekursion zu kopieren , schreiben Sie die Liste nach "find" in den obigen Befehl. Angenommen, Sie möchten die Links von zu Hause / Benutzer und Desktop speichern. Du kannst schreiben

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

"-maxdepth 1" soll verhindern, dass ein Fund durch die Heimat zurückkehrt. Sie können einen Pfad zu tarfile hinzufügen, wenn Sie möchten. Alternative:

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

Wenn Sie faul sind und dies häufig verwenden möchten, können Sie es als Alias ​​zu .bashrc oder .bash_aliases in Ihrem Ausgangsverzeichnis hinzufügen (.bash_aliases ist eine sehr praktische Methode, um Ihre Aliase zu sammeln und, warum nicht, in zu speichern Dropbox ...). Erstellen Sie einfach eine neue leere Datei mit dem Namen .bash_aliases in Ihrem Ausgangsverzeichnis (d. H. / Home / user), öffnen Sie sie mit einem Texteditor und schreiben Sie die folgende Zeile hinein:

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

Ersetzen Sie die Verzeichnisse nach "find" durch die Ihrer Wahl und "save_symlinks" durch einen Befehlsnamen Ihrer Wahl. Öffnen Sie zum Wiederherstellen Ihren Dateimanager (wenn der Pfad zu den Verzeichnissen im obigen Befehl nicht absolut ist, muss sich die Tarfile in home / user befinden), klicken Sie mit der rechten Maustaste und extrahieren Sie sie.

Wenn Sie dies tun, ist das Leben einfacher. Alles was du tun musst, ist:

SPEICHERN: Geben Sie save_symlinks in das Terminal ein und speichern Sie die Datei in Ihrem Zuhause in Dropbox. WIEDERHERSTELLEN: Kopieren Sie die Datei von Dropbox in Ihr Ausgangsverzeichnis, klicken Sie mit der rechten Maustaste darauf und wählen Sie "Hier extrahieren".

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.