Jak zmienić katalog Dropbox na bezgłowym serwerze GNU / Linux?

22

Zainstalowałem Dropbox 2.0.0 za pomocą wiersza poleceń na moim serwerze domowym (Ubuntu Server 12.04), aby używać go do automatycznych kopii zapasowych poza witryną, ale nie mogę zmienić katalogu, w którym demon Dropbox zachowuje synchronizację.

Próbowałem następujące:

Oficjalni doktorzy mówią, aby korzystać z aplikacji komputerowej, co nie ma zastosowania w mojej sytuacji. Jednak zainstalowałem aplikację komputerową na komputerze i zmieniłem domyślną lokalizację folderu, ale nie mogę znaleźć, gdzie ta zmiana jest przechowywana w katalogu ~ / .dropbox /, więc mogę dokonać tej samej zmiany na serwerze.

Ta strona (i kilka innych) zaleca skrypt Python do wykonania tego zadania. Patrząc na skrypt, otwiera bazę danych SQLite o nazwie ~ / .dropbox / dropbox.db, która nie istnieje w mojej instalacji Dropbox, co prowadzi mnie do wniosku, że skrypt jest nieaktualny.

Ten wątek forum sugeruje ręczne wstawienie wymaganego wiersza do bazy danych config.db, co zrobiłem, ale nie miało to znaczenia. Sprawdziłem ten sam plik bazy danych na komputerze stacjonarnym i nie ma on klucza dropbox_path, więc przypuszczam, że informacje w tym wątku są również nieaktualne dla wersji 2.0.

Próbowałem uruchomić kreatora konfiguracji Dropbox GUI przez SSH z przekazywaniem X11, jak zasugerowano w jednej z odpowiedzi, ale plik binarny musi wykryć brak lokalnej instalacji X11 i zamiast tego uruchamia demona wiersza poleceń, co nie zapewnia żadnych możliwości zmień opcję, której potrzebuję.

Obecnie używam dowiązania symbolicznego, jak sugerowano jako odpowiedź, ale to kludge . Chciałbym znać prawidłowy sposób wprowadzenia zmiany.

Jak zmienić katalog Dropbox na bezgłowym serwerze GNU / Linux?

Aktualizacja: Porzuciłem Dropbox i zacząłem używać Copy . Ich narzędzia i wsparcie dla systemu Linux są znacznie lepsze niż Dropbox. Zostawiam to pytanie tutaj, na wypadek, gdyby ktoś kiedyś mógł na nie odpowiedzieć.

xx
źródło
Niezależnie od mojej odpowiedzi, jeśli jest to twój serwer domowy, dlaczego po prostu nie podłączysz do niego ekranu, nie wprowadzisz zmian i nie odbierzesz go ponownie?
terdon
@terdon, Nie ma X11 do uruchomienia aplikacji komputerowej Dropbox.
XX
Ach, OK, w porządku, wypróbuj moją odpowiedź, to powinno zadziałać. Mój domowy serwer bezgłowy faktycznie ma X, po prostu nie jest uruchamiany domyślnie i nie ma podłączonego ekranu, dlatego zapytałem. Testowałem jednak odpowiedź na prawdziwym bezgłowym serwerze bez X11 i działało. Przekazywanie X11 korzysta z lokalnego serwera X i nie wymaga go do działania na zdalnym komputerze.
terdon
Czy są jakieś lepsze opcje po zniknięciu Copy? „Kopiowanie zostało przerwane 1 maja 2016 roku. Jako były użytkownik Copy uważamy, że spodoba ci się Trove”. - próbowałeś tego?
Xen2050

Odpowiedzi:

11

Możesz po prostu utworzyć dowiązanie symboliczne do ~/Dropbox

ln -s <dir-that-you-want-to-sync> ~/Dropbox
Aditya
źródło
3
Pytanie brzmi: „Jak mogę zmienić katalog Dropbox ...”, dowiązanie symboliczne nie jest odpowiedzią.
XX
4
Ale dba o powód, dla którego chcesz zmienić katalog Dropbox, por. Problem XY
Aditya
Tak właściwie. Myślę, że to nie zadziała, pamiętam problemy z dowiązaniami symbolicznymi, które nie działają z Dropbox.
terdon
3
Symlinkowanie działa i używałem go przed zadaniem tego pytania, ale jest to Kludge. Przybyłem tutaj, aby znaleźć właściwy sposób dokonania zmiany. Zaktualizuję pytanie, aby to odzwierciedlić.
XX
Nie działa to, jeśli musisz przenieść folder Dropbox z katalogu domowego, np. Jeśli chcesz, aby inni użytkownicy mieli dostęp do zawartości folderu Dropbox. Rozwiązanie ikandar poniżej działało dla mnie w tej sytuacji.
jesse.r
6

Oto moja sztuczka:

Najpierw usuwam wszystkie powiązane foldery utworzone w folderze domowym

rm -rf ~/.dropbox-dist

Usuwam również domyślny folder Dropbox:

rm -rf ~/Dropbox

Następnie ponownie zainstalowałem demona Dropbox, definiując HOME env var w następujący sposób:

HOME=/data/other_folder dropbox.py start -i

Następnie uruchom ręcznie demona dropboxd, uruchamiając:

HOME=/data/other_folder /data/other_folder/.dropbox-dist/dropboxd

Następnie poczekaj na zakończenie.

ikandars
źródło
1
Z mojego doświadczenia wynika, że ​​musisz także usunąć ~ / .dropbox, w przeciwnym razie krok 4 będzie narzekał na połączenie komputera już i nie pozwoli ci przejść dalej w / data / other_folder.
jesse.r
Dzięki, to zadziałało dla mnie. Ostrzeżenia: 1. Pamiętaj, że twoje dane będą żyły w /data/other_folder/Dropbox2. Stworzy to w środku kilka innych plików dot other_folder, na przykład podczas uruchamiania przeglądarki w celu pierwszego logowania. Możesz spróbować wyczyścić je później. 3. Musisz używać przy HOME=...każdym uruchomieniu Dropbox. (Próbowałem przenieść .dropbox*foldery do mojego prawdziwego domu po tym, jak wszystko działało, ale to po prostu zepsuło konfigurację.)
joeytwiddle
4

To prawdziwa wada aplikacji Linux. W starszych wersjach można zmodyfikować plik ustawień. W najnowszej wersji wydaje się, że jedynym rozwiązaniem jest zmiana $HOMEzmiennej przed uruchomieniem Dropbox.

Powiedzmy, że chcemy, aby pojawił się folder „Dropbox” /foo/bar.

  1. Zainstaluj Dropbox w /foo/bar/.dropbox-dist.
  2. Pobierz skrypt Python do sterowania Dropbox ze strony Linux Dropbox .
  3. W tym skrypcie poniżej import osdodaj wiersz:os.environ["HOME"] = "/foo/bar"
  4. Dropbox kontrolowany / uruchamiany za pomocą skryptu sterującego teraz myśli, że /foo/bar/należy do Ciebie /home/username/.

Oznacza to, że podczas korzystania ze skryptu sterującego szuka teraz /foo/bar/.dropbox-dist/dropboxwykonania demona. Pliki konfiguracyjne zostaną zapisane /foo/bar/.dropbox/. /foo/bar/Dropbox/Katalog będzie używany do synchronizacji plików.

nieznany z nazwiska
źródło
Doskonała wskazówka! Bardzo mi pomógł. Połącz to z, ln -s ~/dropbox.py /usr/local/bin/dropboxaby mniej pisać!
Chris McKnight,
Działa to dla mnie świetnie, ale kiedy próbuję zatrzymać Dropbox, pojawia się komunikat Dropbox isn't responding!. Wygląda na to, że to się jednak kończy. Trochę dziwny.
ohruunuruus
Co ciekawe, tworzenie skryptu w /usr/local/bintych zestawach HOMEprzed wykonaniem skryptu python (zamiast modyfikowania samego skryptu os.environ["HOME"]) wydaje się, że to wyczyściło.
ohruunuruus
0

Jeśli masz sshdostęp do danego komputera, możesz być w stanie uruchomić dropboxaplikację komputerową na serwerze bezgłowym i wyświetlić ją na komputerze lokalnym:

  1. Połącz się z serwerem za pomocą przekierowania portów X11

    ssh -Y user@server
    
  2. Teraz uruchom aplikację Dropbox, powinna pojawić się na ekranie lokalnym

    ~/.dropbox-dist/dropbox
    

    W zależności od połączenia sieciowego może to chwilę potrwać. Nie poddawaj się, jeśli nie pojawi się komunikat o błędzie. Mogę potwierdzić, że zadziałało, gdy podłączyłem się ze swojego komputera Debian do zdalnego serwera Ubuntu, na którym nie działał serwer X. Po kilku sekundach na moim lokalnym pasku zadań pojawiła się druga ikona Dropbox i stamtąd mogłem uzyskać dostęp / zmodyfikować opcje zdalnej instalacji Dropbox.

Teraz niektóre szczegóły mogą ulec zmianie, ponieważ korzystam z Dropbox 1.6.18, ale podstawy powinny być takie same. W przypadku zmiany nazwy lub lokalizacji aplikacji, w ten sposób dowiedziałem się, jakie polecenie muszę wykonać, aby uruchomić aplikację komputerową Dropbox:

  1. Uzyskaj listę aktualnie uruchomionych procesów

    top -cbd .10 -n 1 | sort > no_drop.txt
    
  2. Uruchom aplikację Dropbox (kliknij prawym przyciskiem myszy ikonę Dropbox na pasku zadań i wybierz „Preferencje ...”) i powtórz

    top -cbd .10 -n 1 | sort > drop.txt
    
  3. Porównaj pliki, aby znaleźć odpowiednie polecenie

    diff drop.txt no_drop.txt
    
terdon
źródło
1
Nie ma aplikacji GUI do przekazania, tylko dropboxd, demon Dropbox.
XX
Czy spróbuj topi diffoszukać zasugerowałem? Uruchom aplikację na komputerze lokalnym, coś musi zostać uruchomione, dlatego jest polecenie. Jeśli w nowej wersji jedynym poleceniem jest demon, a następnie uruchom go, nadal będzie pojawiał się na pasku zadań.
terdon
Na moim komputerze stacjonarnym uruchomienie ~ / dropbox-dist / dropbox uruchamia kreatora konfiguracji GUI. Na serwerze przez połączenie ssh z X11 dalej ~ / dropbox-dist / dropbox uruchamia demona, który instruuje mnie, abym udał się pod konkretny adres URL w celu „połączenia tego komputera”. Zarówno serwer, jak i komputer używają dokładnie tego samego archiwum, aby zainstalować pliki dropbox. W archiwum jedynymi dwoma plikami wykonywalnymi są dropbox i dropboxd, później jest to tylko skrypt powłoki, aby ustawić LD_LIBRARY_PATH i uruchomić pierwszy.
XX
Hmm, mój zdalny serwer nie zostały połączone. Jeśli dobrze pamiętam, musiałem uruchomić przeglądarkę graficzną ( lynxnie mogłem tego zrobić) na zdalnej maszynie (zawsze używając przekazywania X11) i połączyć maszynę za pomocą tej przeglądarki. Spróbuj to zrobić, a następnie uruchom ~/dropbox-dist/dropboxponownie. Przynajmniej potwierdziliśmy, że działa, wspomniany demon jest graficzny i jest wyświetlany na ekranie lokalnym, prawda? Dlatego po połączeniu serwera ze swoim kontem powinieneś być w stanie skonfigurować go zgodnie z opisem w mojej odpowiedzi.
terdon
Zostało to połączone, właśnie usunąłem konfigurację z ~ / .dropbox, aby zacząć od zera. „wspomniany demon jest graficzny i jest wyświetlany na ekranie lokalnym, prawda?” Nie, nie jest graficzny, gdy jest uruchamiany na serwerze. Musi wykryć nieobecność X11 i przejść do trybu tylko wiersza poleceń, mimo że przekazywanie X11 jest włączone.
XX
0

TechRepublic ma stronę - Skonfiguruj Dropbox na serwerze Linux bez graficznego interfejsu użytkownika - który twierdzi, że rozwiązał ten problem:

… Dostępne są narzędzia GUI do zarządzania Dropbox i skonfigurowania go dla [Linux, Windows i OS X]. Ale co się stanie, jeśli chcesz połączyć komputer z systemem Linux, który nie ma GUI? Przy odrobinie pracy możliwe jest uruchomienie Dropbox bez GUI, co pozwala zsynchronizować pliki z serwerami, które działają bez głowy lub w których konto użytkownika może nie być zalogowane przez cały czas.

    ︙

Aby rozpocząć:

# mkdir -p /tmp/dropbox
# cd /tmp/dropbox
# curl -OL http://dl.getdropbox.com/u/6995/dbmakefakelib.py
# curl -OL http://dl.dropbox.com/u/637552/Dropbox/dbreadconfig.py
# curl -L -o dropbox.tar.gz http://www.dropbox.com/download?plat=lnx.x86_64

Użyj, plat=lnx.x86jeśli chcesz 32-bitowego klienta. Tworzy to tymczasowy katalog dla naszych plików instalacyjnych Dropbox i pobiera dwa niezbędne skrypty Pythona: dbmakefakelib.py który tworzy fałszywe kopie pośredniczące bibliotek GUI, aby uruchomić demona dropboxd i dbreadconfig.pyktóry wyświetla informacje o konfiguracji Dropbox .

Zdecyduj, który użytkownik będzie uruchamiał klienta Dropbox; może to być użytkownik dedykowany lub zwykły użytkownik. Możesz również mieć więcej niż jedną instancję Dropbox działającą w systemie, więc możesz zdecydować się skonfigurować ją dla wielu użytkowników (chociaż każdy użytkownik może uruchomić tylko jedną instancję Dropbox). W tym przykładzie utworzymy specjalnego użytkownika „dropbox”, który uruchomi tego klienta Dropbox.

# su - dropbox
$ cd ~/
$ tar xvzf /tmp/dropbox/dropbox.tar.gz
$ cd .dropbox-dist
$ python /tmp/dropbox/dbmakefakelib.py
dropboxd ran for 15 seconds without quitting - success?

Skrypt dbmakefakelib.py wymaga gcc, więc musisz mieć gcc zainstalowany w systemie. Spowoduje to utworzenie fałszywych kopii bibliotek GUI, aby uruchomić Dropboxd. Na koniec widać, że uruchomił dropboxd; naciśnij Ctrl+, Caby wyjść ze skryptu. dropboxd powinien nadal działać w tle:

$ ps ax | grep dropboxd
24001 pts/0    S      0:00 sh -c { /home/dropbox/.dropbox-dist/dropboxd; } 2>&1

Teraz, gdy Dropbox działa, musimy połączyć go z istniejącym kontem:

$ cd ~/
$ python /tmp/dropbox/dbreadconfig.py
host_id = 0bd9c5a15458fbc31f85e892faa7dac4
schema_version = 6

Chwyć identyfikator hosta z góry. Zaloguj się do interfejsu internetowego Dropbox, a po zalogowaniu ręcznie odwiedź ten adres URL:

https://www.dropbox.com/cli_link?host_id= [HOST_ID]

Zamień [HOST_ID]na host_id, który wyprowadza dbreadconfig.py. Gdy to zrobisz, witryna Dropbox powie ci, że udało Ci się połączyć nowy komputer. Przejdź do ustawień konta, a następnie Moje komputery, a zobaczysz nowy komputer na liście.

Jeśli nie zabiłeś procesu dropboxd, który rozpoczął dbmakefakelib.py, przekonasz się, że już pobiera pliki z Dropbox do ~ / Dropbox / w tle.

Aby uruchomić demona dropboxd w tle podczas rozruchu, możesz dodać następujące elementy do skryptu inicjującego /etc/rc.d/rc.local:

daemon —user dropbox /bin/sh -c "/home/dropbox/.dropbox-dist/dropboxd&"

To uruchomi dropboxd w tle z uprawnieniami użytkownika, dla którego jest zainstalowany (w tym przypadku użytkownikiem jest „dropbox”). Jeśli chcesz zrobić skrypt systemowy dla całego systemu, odwiedź wiki Dropbox, gdzie znajduje się kilka przykładów, w tym skryptów dla Fedory / Red Hat i Debian / Ubuntu. Zawiera także przykłady konfiguracji Dropboksa działającego pod daemontools DJB.

Scott
źródło
Dziękujemy MestreLion ⁠⁠ za opublikowanie tego linku .
Scott
0

Właśnie trafiłem na ten sam problem i udało mi się go rozwiązać

  1. Odłączanie konta za pośrednictwem internetowego interfejsu Dropbox:

    https://blogs.dropbox.com/dropbox/2014/10/how-to-unlink-a-device-from-your-dropbox/

  2. Usuwanie ~/.dropboxkatalogu dla uruchomionego użytkownika dropboxd.

    rm -r ~/.dropbox
    
  3. Może być konieczne wyczyszczenie ~/Dropboxkatalogu.

Pierwszy krok może nie być konieczny, ale już to zrobiłem przed usunięciem ~/.dropbox, co ostatecznie pozwoliło mi go ponownie skonfigurować.

Pamiętaj, aby cdprzejść do katalogu, w którym chcesz być folderem głównym Dropbox. Potem zadziałało dobrze.

Ben M.
źródło
Cześć, witamy w SuperUser. Czy potrafisz rozwinąć swoją odpowiedź? W szczególności bardziej szczegółowo przeanalizuj, co użytkownik powinien zrobić?
Service Manager
0

Miałem ten sam problem. Chciałem użyć Dropbox do zsynchronizowania dużego dodatkowego dysku twardego na serwerze Ubuntu. Zrobiłem to, że utworzyłem dowiązanie symboliczne z dodatkowego dysku twardego do mojego katalogu domowego przed instalacją Dropbox

ln -s /mnt/disks/sdb /home/marc/Dropbox

Zainstaluj Dropbox tylko po wykonaniu powyższego kroku.

W ten sposób Dropbox w katalogu głównym jest dowiązaniem symbolicznym, a prawdziwy folder to miejsce, z którego kiedykolwiek dowiązałeś symbolicznie.

Marcus Trenton
źródło