Jak działają dowiązania symboliczne w Dropbox?

20

Zrobiłem kilka linków do plików w folderze. Kiedy dodałem ten folder do Dropbox, łącza zawierały zduplikowane kopie plików, z którymi się łączy. Czy miałeś ten problem? Czy rozumiesz co się dzieje? Czy jest jakieś rozwiązanie?

Aby wyjaśnić to pytanie: w kolumnie „typ” menedżera plików, przed połączeniem się z Dropbox, Link_to_notes był łączem, a jego rozmiar wynosił 32 bajty. Po połączeniu z Dropbox Link_to_notes okazał się dokumentem tekstowym, a jego rozmiar wynosił 18,7 kB, czyli rozmiar pliku notatek.

użytkownik119046
źródło
2
Ponieważ Dropbox jest rozwiązaniem wieloplatformowym, każde inne zachowanie byłoby prawdopodobnie jeszcze bardziej zagmatwane - jak by się zachowało, gdybyś zsynchronizował folder z komputerem z systemem Windows?
Siergiej
Od połowy 2019 roku Dropbox nie korzysta już z dowiązań symbolicznych
eri0o
W chwili obecnej pisania dowiązania symboliczne nie działają i są do bani.
Jus12

Odpowiedzi:

15

DropBox podąża za dowiązaniami symbolicznymi i traktuje je jak katalogi. Jest to bardzo przydatne do tworzenia kopii zapasowych bez konieczności przenoszenia plików i katalogów do katalogu DropBox.

$ ln -s ~/Documents/ ~/Dropbox/Documents
Gregologia
źródło
To może być niebezpieczne zachowanie. Na przykład, jeśli usunę łącze z katalogu Dropbox, czy jest jakikolwiek scenariusz przypadkowego usunięcia moich oryginalnych plików lub folderów?
Vicon
@Vicon, to nie jest niebezpieczne zachowanie, to oczekiwane zachowanie. Ale tak, dla jasności, jeśli usuniesz symboliczny link, pliki zostaną również usunięte z Dropbox
Gregology
2
W społeczności Dropbox wielokrotnie powtarzano, że Dropbox nie obsługuje dowiązań symbolicznych i zdecydowanie odradza korzystanie z niego. Jeśli skontaktujesz się z obsługą klienta Dropbox, poprosi Cię o usunięcie wszelkich dowiązań symbolicznych przed kontynuowaniem. Oczywiście ludzie nadal mogą z niego korzystać, ale nie jest to zachowanie zamierzone przez Dropbox i może być niebezpieczne (utrata plików), problematyczne (nieumyślna synchronizacja zduplikowanych plików, co jest problemem, który należy rozwiązać w tym pytaniu), a także jako problemy z synchronizacją wydajności itp.
Vicon
@Vicon, dowiązania symboliczne działają transparentnie dla wielu operacji: programy, które odczytują lub zapisują pliki nazwane dowiązaniem symbolicznym będą zachowywać się tak, jakby działały bezpośrednio na pliku docelowym
Gregology
1
Ta metoda działała dla mnie dobrze od dłuższego czasu w systemach plików ext4. Nie mam poczucia zagrożenia, ponieważ nigdy nie wchodzę w interakcje z plikami Dropbox w Dropbox. Udało mi się połączyć moje systemy Linux i tablety z Androidem. Zauważam
pauljohn32,
7

Najlepszym sposobem na to jest przechowywanie plików w folderze dropbox i dowiązanie do nich z zewnątrz ...

Utwórz ~ / Dropbox / Documents i dowiązanie symboliczne:

ln -s ~/Dropbox/Documents ~/Documents

Zapobiega to pomyłkom Dropbox i odłączaniu czegokolwiek, co jest linkiem w środku, ponieważ masz wszystkie rzeczy w środku, a zamiast tego, gdy chcesz je gdzie indziej, łączysz się z nimi w Dropbox. Podstawowa zasada jest taka, że ​​nie ma żadnych dowiązań symbolicznych w folderze dropbox ... trzymaj je poza folderem dropbox, a nie będziesz mieć problemu.

Mam Dropbox na kilku maszynach Ubuntu i wszystkie moje główne foldery najwyższego poziomu są faktycznie przechowywane w Dropbox.

JamesC
źródło
Dlaczego Dropbox miałby się mylić? Jak Dropbox zmieniłby linki symboliczne? Łącza symboliczne są automatycznie rozstrzygane przez system plików
Gregology
6

dropbox będzie podążał za linkami sym do katalogów, ale przerwie link (sym lub hard) do pliku i zastąpi go plikiem.

brad80242
źródło
2

TL; DR: Poniżej znajduje się sposób, aby uzyskać zachowanie dość podobne do dowiązań symbolicznych, tylko na poziomie graficznego interfejsu użytkownika (GUI), co jest szczególnie pomocne, jeśli nie chcesz, aby DropBox wielokrotnie kopiował te same pliki do różnych folderów w DropBox hierarchia tylko dlatego, że chcesz wyświetlić je z różnych miejsc (np. ścieżek folderów).

tło

Niejednokrotnie byłem nagrywany przez duplikaty folderów DropBox, jeśli utworzę dowiązania symboliczne (dowiązania symboliczne) w hierarchii folderów DropBox, nawet do momentu wypełnienia mojego konta. Jak wielu zauważyło w Internecie, nie ma prawdziwej poprawki na brak właściwego traktowania linków symbolicznych przez DropBox, co jest niefortunne, ponieważ nie byłoby to dla nich trudne.

Obejście

Jednak jedno obejście, którego używam, aby osiągnąć równoważne zachowanie dowiązań symbolicznych w hierarchii DropBox --- to, co inni często określają jako „wewnętrzne dowiązania symboliczne” --- bez kopiowania wszystkiego przez DropBox, polega na utworzeniu odpowiednika pliku skrótu Windows (tj. , plik .lnk w ekosystemie MS). Robię to, tworząc plik .desktop, który otwiera menedżera plików mojego systemu na pożądaną ścieżkę. Zatem to obejście działa tylko na poziomie GUI i tylko dla systemów zgodnych z XDG (np. Ubuntu, systemy oparte na GNOME, wiele innych).

Przykład

Na przykład czytam zaawansowane techniki Pythona do nowej pracy, którą wykonuję, a czytane przeze mnie pliki PDF są przechowywane w folderze DropBox aplikacji GoodReader (iOS), dzięki czemu mogę je odczytać na pulpicie i na moich urządzeniach mobilnych. Zamiast przechodzenia do tego folderu ( /home/morse/lib/active/GoodReader/Books/Python), po prostu tworzę Python.desktopfolder /home/morse/Desktopz następującą zawartością:

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

(Uwaga: Pamiętaj, aby dostosować Exec=nautilus ...część, jeśli używasz innego menedżera plików Nautilus niż, i oczywiście będziemy chcieli, aby dostosować Name=, Icon=i część ścieżki do Exec=linii dla każdego „dowiązania symbolicznego”, który chcesz utworzyć.)

Dzięki temu widzę na pulpicie folder o nazwie Python, który działa jak łącze symboliczne --- to znaczy, klikam go dwukrotnie i otwiera odpowiedni folder --- ale tylko mały plik tekstowy (np. Python. desktop) zostaje zsynchronizowany z DropBox i moimi innymi systemami (w przeciwieństwie do wszystkich treści, które ostatecznie są kopiowane wszędzie przez DropBox).

Podobnie jak w przypadku innych plików .desktop, uprawnienia muszą być ustawione w taki sposób, aby plik był zarówno czytelny, jak i wykonywalny (np. chmod 700 Python.desktopLub chmod 755 Python.desktop), aby wskazana ikona była wyświetlana, a także dwukrotne kliknięcie, aby cokolwiek zrobić.

streszczenie

Podsumowując, zawsze będę mieć rzeczywiste pliki dostępne gdzieś w DropBox --- w tym przykładzie /home/morse/lib/active/GoodReader/Books/Python--- ale będę też miał „skrót” na pulpicie do wszystkich moich systemów opartych na systemie Linux, dla których ja skonfigurowano także DropBox.

Oczywiście to obejście nie działa na poziomie wiersza poleceń, tak jak zrobiłoby to prawdziwe dowiązanie symboliczne.

To powiedziawszy, wydaje się to nowatorskim obejściem na poziomie GUI, którego nie widziałem gdzie indziej. Mam nadzieję, że takie podejście przyda się innym.

Doug Morse
źródło
To jest genialne! Do tej pory nie widziałem rozwiązania dla wewnętrznych dowiązań symbolicznych! I to jest bardzo miłe. Dziękuję za zrobienie mojego dnia! Powinienem dodać, że tworzenie wiersza polecenia, który analizuje plik .desktop i otwiera plik lub folder, który jest dowiązaniem symbolicznym, powinno być dość proste, chociaż może nie być możliwe bezpośrednie „cd” do katalogu.
Praveen
0

Skompresuj linki i zapisz skompresowany plik w Dropbox

Poprzednie odpowiedzi są wyczerpujące i jasne. Sugeruję tylko trzy obejścia oparte na jednej zasadzie. Trzeci wygląda na trudniejszy, ale jest bardzo wydajny. Chodzi o to: skompresuj dowiązania symboliczne do pliku tar, którego Dropbox nie będzie traktował jako link, i zapisz go w Dropbox. Trzeci sposób jest prawie tak bezpośredni, jak kopiowanie linków bezpośrednio do Dropbox - w rzeczywistości znacznie szybsze niż kopiowanie kilku linków jeden po drugim.

Mam około dwudziestu dowiązań symbolicznych, których zwykle używam w mojej instalacji Lubuntu, np. W celu szybkiego dostępu do skryptów bash zapisanych w Dropbox, zewnętrznych dysków twardych, często używanych dokumentów itp. Wszystkie znajdują się w moim domowym katalogu i na pulpicie, i znajduję to wygodne jest posiadanie ich kopii Dropbox do użycia w innych instalacjach lub podczas przeprowadzania aktualizacji (to znaczy, gdy instaluję ponownie po próbie aktualizacji;).

1. sposób

Tworzysz katalog o nazwie MyLinks (powiedzmy w Dokumentach) i kopiujesz do niego wszystkie domowe dowiązania symboliczne; jeśli masz dowiązania symboliczne w innych katalogach, utwórz podkatalogi w MyLinks i skopiuj do nich swoje dowiązania symboliczne. Na przykład, jeśli łącza, które chcesz zapisać, znajdują się w domu i na pulpicie, skopiuj łącza domowe do MyLinks, utwórz katalog o nazwie Desktop i skopiuj do niego łącza Desktop. Następnie otwórz Terminal, Dokumenty cd (pod warunkiem, że jest to katalog, w którym znajduje się MyLinks) i utwórz plik tar:

tar -cvf MyHomeLinks.tar MyHomeLinks

(Pamiętaj, aby dodać rozszerzenie „.tar” do nazwy pliku tar, w przeciwnym razie Menedżer archiwum Ubuntu odmówi jej otwarcia.) Jeśli to zrobisz, uważaj, aby nie dodać opcji -h (--ereferencja) do tar, ponieważ zachowałby się dokładnie jak Dropbox i kompresował pliki docelowe zamiast dowiązań symbolicznych. (Nawiasem mówiąc, takie zachowanie byłoby mile widziane w większości przypadków, zwłaszcza jeśli ktoś dąży do przenoszenia, ale nie jest tak, jeśli chce się zapisać dowiązania symboliczne jako dowiązania symboliczne.)

Plik tar zawierałby również łącza, które są tymczasowo uszkodzone, takie jak łącza do zewnętrznych dysków twardych, które nie są obecnie montowane - co jest w porządku.

Zapisz plik tar w Dropbox. Gdy potrzebujesz z powrotem łączy, skopiuj plik tar do katalogu w systemie plików (nie w Dropbox), rozpakuj go (wystarczy kliknąć prawym przyciskiem myszy i wybrać „Wyodrębnij tutaj”) i skopiuj swoje dowiązania symboliczne z powrotem do lokalizacji, w których chcesz .

2. sposób

Jeśli dowiązania symboliczne, które chcesz zapisać, mają jednoznaczny przedrostek (taki jak „MySl” ...), możesz bardzo szybko utworzyć swój plik tar w ten sposób (niepotrzebne spacje dodawane w celu uniknięcia błędów):

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

Pojedyncza kropka po „znajdź” oznacza bieżący katalog: otwórz Terminal w swoim katalogu domowym (domyślnie). Z pewnością możesz dodać ścieżkę do pliku tar i wydać polecenie z innego katalogu, który nie jest w domu: zamień „.” ze ścieżką do domu / użytkownika. Nie ma potrzeby tworzenia katalogów pracy, tak jak MyLinks powyżej. Przywracanie dowiązań symbolicznych jest również szybkie: skopiujesz plik tar do swojego domu, kliknij go prawym przyciskiem myszy i „wypakuj tutaj”. Zanim jednak zaczniesz prefiksować wszystkie nazwy dowiązań symbolicznych, spójrz na następną opcję.

3. sposób (i najlepszy)

Bardzo szybkim sposobem na zebranie wszystkich twoich dowiązań symbolicznych w pliku tar jest: otwarcie terminala w twoim domu / użytkowniku (co jest domyślne, gdy otwierasz terminal) i:

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

Wadą jest to, że zawiera WSZYSTKIE linki, w tym niektóre dowiązania symboliczne mozilla lub hplip, o których nawet nie wiedziałeś, że je masz. Aby tego uniknąć i skopiować wszystkie i tylko dowiązania symboliczne z określonej listy katalogów bez rekurencji , piszesz listę po „find” w powyższym poleceniu. Powiedz, że chcesz zapisać linki z domu / użytkownika i pulpitu; Możesz pisać

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

„-maxdepth 1” ma zapobiec znalezieniu się rekurencji przez dom. Możesz dodać ścieżkę do pliku tar, jeśli chcesz. Alternatywnie:

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

Jeśli jesteś leniwy i chcesz tego często używać, możesz dodać go jako alias do .bashrc lub .bash_aliases w swoim katalogu domowym (.bash_aliases to bardzo wygodny sposób na zbieranie aliasów i, dlaczego nie, zapisanie ich w Dropbox ...). Po prostu stwórz nowy pusty plik o nazwie .bash_aliases w swoim katalogu domowym (czyli / home / user), otwórz go za pomocą edytora tekstu i napisz w nim następujący wiersz:

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

Zamień katalogi po „find” na wybrane przez siebie i „save_symlinks” na wybraną nazwę polecenia. Aby przywrócić, otwórz menedżera plików (jeśli ścieżka do katalogów w powyższym poleceniu nie jest bezwzględna, plik tar musi znajdować się w katalogu domowym / użytkownik), kliknij prawym przyciskiem myszy i rozpakuj.

Jeśli to zrobisz, życie będzie łatwiejsze. Wszystko co musisz zrobić to:

ZAPISZ: wpisz save_symlinks w terminalu, zapisz plik tar w swoim domu do Dropbox; PRZYWRÓĆ: skopiuj plik z Dropbox do katalogu domowego, kliknij go prawym przyciskiem myszy i wybierz „wyodrębnij tutaj”.

Archie
źródło