Comment changer le répertoire Dropbox sur un serveur GNU / Linux sans tête?

21

J'ai installé Dropbox 2.0.0 via une ligne de commande sur mon serveur domestique (Ubuntu Server 12.04) à utiliser pour les sauvegardes automatisées hors site, mais je ne peux pas modifier le répertoire que le démon Dropbox maintient synchronisé.

J'ai essayé ce qui suit:

La documentation officielle dit d'utiliser l'application de bureau, ce qui n'est pas applicable dans ma situation. Cependant, j'ai installé l'application de bureau sur mon ordinateur de bureau et changé l'emplacement du dossier par défaut, mais je ne trouve pas où cette modification est stockée dans le répertoire ~ / .dropbox / afin que je puisse effectuer la même modification sur le serveur.

Cette page (et plusieurs autres) recommande l’utilisation d’ un script Python . En regardant le script, il ouvre une base de données SQLite appelée ~ / .dropbox / dropbox.db, qui n'existe pas sur mon installation Dropbox, ce qui me porte à croire que le script est obsolète.

Ce fil de discussion suggère d'insérer manuellement la ligne requise dans la base de données config.db, ce que j'ai fait, mais cela ne faisait aucune différence. J'ai vérifié le même fichier de base de données sur mon ordinateur de bureau et il ne dispose pas de la clé dropbox_path. Je suppose donc que les informations de ce fil sont également obsolètes pour la version 2.0.

J'ai essayé de lancer l'assistant de configuration de l'interface graphique de Dropbox sur SSH avec transfert X11, comme suggéré dans l'une des réponses, mais le binaire doit détecter l'absence d'installation X11 locale et démarre à la place un démon en ligne de commande, qui ne fournit aucun moyen de changez l'option dont j'ai besoin.

J'utilise actuellement un lien symbolique, comme suggéré comme réponse, mais ceci est un kludge . Je voudrais savoir la bonne façon de faire le changement.

Comment changer le répertoire Dropbox sur un serveur GNU / Linux sans tête?

Mise à jour: j'ai abandonné Dropbox et commencé à utiliser Copy . Leurs outils et leur support Linux sont de loin supérieurs à Dropbox. Je laisse cette question ici au cas où quelqu'un, un jour, pourrait y répondre.

xx
la source
En dépit de ma réponse, s’il s’agit de votre serveur domestique, pourquoi ne pas simplement y connecter un écran, y apporter des modifications et l’enlever à nouveau?
Terdon
@terdon, il n'y a pas de X11 pour exécuter l'application de bureau Dropbox.
xx
Ah, OK, d'accord, essayez ma réponse alors, ça devrait marcher. Mon serveur sans tête à la maison a réellement X, il n’est tout simplement pas démarré par défaut et aucun écran n’est connecté, c’est pourquoi j’ai demandé. J'ai testé ma réponse sur un vrai serveur sans tête et sans X11 et cela a fonctionné. Le transfert X11 utilise le locale serveur X et n'a pas besoin d'être un en cours d' exécution sur la machine distante.
Terdon
De meilleures options maintenant que Copy est parti? "La copie a été abandonnée le 1er mai 2016. En tant qu'ancien utilisateur de Copy, nous pensons que vous aimerez Trove." - essayé ça?
Xen2050

Réponses:

10

Vous pouvez simplement créer un lien symbolique vers ~/Dropbox

ln -s <dir-that-you-want-to-sync> ~/Dropbox
Aditya
la source
3
La question demande: "Comment puis-je changer le répertoire Dropbox ...", la liaison symbolique n'est pas la réponse.
xx
4
Mais il s’occupe de la raison pour laquelle vous voulez changer le répertoire Dropbox, cf. Problème XY
Aditya
Réellement. Je pense que cela ne fonctionnera pas, je me souviens d'avoir eu des problèmes avec les liens symboliques ne fonctionnant pas avec Dropbox.
Terdon
3
Symlinking fonctionne, et c'est ce que j'utilisais avant de poser cette question, mais c'est un Kludge. Je suis venu ici pour trouver la bonne façon de faire le changement. Je mettrai à jour la question pour refléter cela.
xx
Cela ne fonctionne pas si vous devez déplacer votre dossier Dropbox hors de votre répertoire personnel, par exemple si vous souhaitez que d'autres utilisateurs puissent accéder au contenu de votre dossier Dropbox. La solution d'Ikandar ci-dessous a fonctionné pour moi, dans cette situation.
jesse.r
6

Alors voici mon astuce:

D'abord, je supprime tous les dossiers liés créés dans mon dossier personnel.

rm -rf ~/.dropbox-dist

J'ai aussi supprimé le dossier par défaut de Dropbox:

rm -rf ~/Dropbox

J'ai ensuite réinstallé le démon dropbox en définissant HOME Env var comme suit:

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

Ensuite, démarrez manuellement le démon dropboxd en exécutant:

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

Alors attendez jusqu'à la fin.

Ikandars
la source
1
D'après mon expérience, vous devez également supprimer ~ / .dropbox, sinon l'étape 4 se plaindra du fait que l'ordinateur est déjà lié et ne vous laissera pas continuer dans / data / other_folder.
jesse.r
Merci, cela a fonctionné pour moi. Mises en garde: 1. N'oubliez pas que vos données vivront /data/other_folder/Dropbox2. Elles créeront d'autres fichiers de points à l'intérieur other_folder, par exemple, lors du lancement de votre navigateur pour la connexion initiale. Vous pouvez essayer de les éliminer plus tard. 3. Vous devez utiliser HOME=...chaque fois que vous démarrez Dropbox. (J'ai essayé de déplacer les .dropbox*dossiers dans ma vraie maison après que tout a fonctionné, mais cela vient de briser la configuration.)
joeytwiddle
4

C'est une véritable lacune de l'application Linux. Dans les versions plus anciennes, vous pouvez modifier le fichier de paramètres. Dans la version la plus récente, il semble que la seule solution consiste à modifier la $HOMEvariable avant le démarrage de Dropbox.

Disons que nous voulons que le dossier 'Dropbox' apparaisse dans /foo/bar.

  1. Installez Dropbox pour /foo/bar/.dropbox-dist.
  2. Téléchargez le script Python pour contrôler Dropbox à partir de la page Linux Dropbox .
  3. Dans ce script, import osajoutez ci-dessous une ligne:os.environ["HOME"] = "/foo/bar"
  4. Dropbox contrôlé / démarré via le script de contrôle pense maintenant qu’il /foo/bar/est votre /home/username/.

Cela signifie que lorsque le script de contrôle est utilisé, il cherche maintenant /foo/bar/.dropbox-dist/dropboxà exécuter le démon. Les fichiers de configuration seront écrits dans /foo/bar/.dropbox/. Le /foo/bar/Dropbox/dossier sera utilisé pour la synchronisation de fichiers.

John Doe
la source
Excellent conseil! Beaucoup aidé. Associez cela avec ln -s ~/dropbox.py /usr/local/bin/dropboxpour moins de frappe!
Chris McKnight
Cela fonctionne très bien pour moi, même si, lorsque j'essaie d'arrêter Dropbox, un message s'affiche Dropbox isn't responding!. On dirait que ça s'arrête quand même. Un peu étrange.
ohruunuruus
Chose intéressante, créer un script dans /usr/local/bincet ensemble HOMEavant d'exécuter le script python (plutôt que de modifier le script lui-même avec os.environ["HOME"]) semble avoir nettoyé cela.
ohruunuruus
0

Si vous avez sshaccès à la machine en question, vous pourrez peut-être lancer l' dropboxapplication de bureau sur le serveur sans tête et la faire afficher sur votre machine locale:

  1. Connectez-vous au serveur à l'aide du transfert de port X11

    ssh -Y user@server
    
  2. Maintenant, lancez l'application Dropbox, elle devrait apparaître sur votre écran local

    ~/.dropbox-dist/dropbox
    

    Cela peut prendre un certain temps en fonction de votre connexion réseau. N'abandonnez pas si vous ne recevez pas un message d'erreur. Je peux confirmer que cela a fonctionné lorsque je me suis connecté depuis ma machine Debian à un serveur Ubuntu distant qui n'exécutait aucun serveur X. Après quelques secondes, une seconde icône Dropbox est apparue sur ma barre des tâches locale et je pouvais accéder / modifier les options de l’installation Dropbox distante à partir de là.

Maintenant, certains détails peuvent changer depuis que j'utilise Dropbox 1.6.18 mais les bases devraient être les mêmes. Au cas où le nom ou l'emplacement de l'application aurait changé, voici comment j'ai découvert la commande à exécuter pour lancer l'application de bureau Dropbox:

  1. Obtenir la liste des processus en cours d'exécution

    top -cbd .10 -n 1 | sort > no_drop.txt
    
  2. Lancez l’application Dropbox (cliquez avec le bouton droit sur l’icône Dropbox dans la barre des tâches et choisissez "Préférences ..."), puis répétez

    top -cbd .10 -n 1 | sort > drop.txt
    
  3. Comparez les fichiers pour trouver la commande appropriée

    diff drop.txt no_drop.txt
    
terdon
la source
1
Il n'y a pas d'application graphique à transférer, seulement dropboxd, le démon Dropbox.
xx
Avez - vous essayé le topet difftruc que je suggère? Lancez l'application sur votre ordinateur local. Quelque chose doit être lancé. Il y a donc une commande. Si, dans la nouvelle version, la seule commande est le démon, lancez-le, il apparaîtra toujours dans votre barre des tâches.
Terdon
Sur mon ordinateur de bureau, l'exécution de ~ / dropbox-dist / dropbox lance un assistant de configuration d'interface graphique. Sur le serveur, via la connexion SSH avec le transfert X11, ~ / dropbox-dist / dropbox lance un démon qui me demande d’aller vers une URL spécifique pour "relier cette machine". Le serveur et le bureau utilisent exactement la même archive pour installer les fichiers dropbox. Dans l'archive, les deux seuls fichiers exécutables sont dropbox, et dropboxd, le dernier étant simplement un script shell permettant de définir LD_LIBRARY_PATH et de lancer l'ancien.
xx
Hmm, mon serveur distant a été lié. Si je me souviens bien, je devais lancer un navigateur graphique ( lynxje ne pouvais pas le faire) sur la machine distante (toujours en utilisant le transfert X11) et lier la machine à l'aide de ce navigateur. Essayez de faire cela, puis lancez à ~/dropbox-dist/dropboxnouveau. Au moins, nous avons confirmé que cela fonctionne, le démon que vous avez mentionné est graphique et affiché sur votre écran local, n'est-ce pas? Par conséquent, une fois que vous avez lié votre serveur à votre compte, vous devriez pouvoir le configurer comme décrit dans ma réponse.
Terdon
C'était lié, je viens de supprimer la configuration de ~ / .dropbox pour recommencer à zéro. "Le démon que vous mentionnez est graphique et affiché sur votre écran local, n'est-ce pas?" Non, ce n'est pas graphique lorsqu'il est exécuté sur le serveur. Il doit détecter l'absence de X11 et passer en mode ligne de commande uniquement, même si le transfert X11 est activé.
xx
0

C'est peut-être ce que vous cherchez:

Configurer Dropbox sur un serveur Linux sans interface graphique

Je m'excuse d'avoir simplement jeté une URL au lieu de décrire les procédures décrites ici. Je suis au travail et je ne peux pas en dire plus pour le moment. Plus tard, je peux développer la réponse, je ne veux tout simplement pas perdre cette URL précieuse avec votre solution.

MestreLion
la source
0

TechRepublic a une page - Configurer Dropbox sur un serveur Linux sans interface graphique - qui prétend résoudre ce problème:

… Il existe des outils graphiques fournis pour gérer Dropbox et le configurer pour [Linux, Windows et OS X]. Mais que se passe-t-il si vous souhaitez lier un ordinateur Linux qui n'a pas d'interface graphique? Il est possible, avec un peu de travail, de faire fonctionner Dropbox sans interface graphique, ce qui vous permet de synchroniser des fichiers avec des serveurs sans tête ou sur lesquels un compte d'utilisateur peut ne pas être connecté en permanence.

    ︙

Pour commencer:

# 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

Utilisez-le plat=lnx.x86si vous voulez le client 32 bits. Cela crée un répertoire temporaire pour nos fichiers d'installation Dropbox, et télécharge deux scripts python nécessaires: dbmakefakelib.py ce qui crée de fausses copies de stub de bibliothèques d'interface graphique pour que le démon dropboxd démarre et dbreadconfig.pyqui affiche les informations de configuration de dropbox.

Décidez quel utilisateur exécutera le client Dropbox; Cela peut être un utilisateur dédié ou un utilisateur régulier. Vous pouvez également avoir plusieurs instances Dropbox en cours d'exécution sur le système. Vous pouvez donc choisir de la configurer pour plusieurs utilisateurs (bien que chaque utilisateur ne puisse exécuter qu'une seule instance Dropbox). Pour cet exemple, nous aurons créé une «liste déroulante» d’utilisateur spéciale qui exécutera ce client 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?

Le script dbmakefakelib.py nécessite gcc, vous devez donc l'avoir installé sur le système. Cela crée de fausses copies de stub des bibliothèques d'interface graphique afin que dropboxd puisse démarrer. À la fin, vous pouvez voir qu'il a lancé dropboxd; appuyez sur Ctrl+ Cpour quitter le script. dropboxd devrait toujours fonctionner en arrière-plan:

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

Maintenant que dropbox est en cours d'exécution, nous devons le lier à un compte existant:

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

Prenez le host_id d'en haut. Connectez-vous à l'interface Web de Dropbox et, une fois que vous vous êtes connecté, visitez manuellement cette URL:

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

Remplacez [HOST_ID]par l'id_hôte que dbreadconfig.py génère. Lorsque vous aurez terminé, le site Dropbox vous indiquera que vous avez lié avec succès un nouvel ordinateur. Allez dans les paramètres de votre compte, puis sur Mes ordinateurs et vous verrez le nouvel ordinateur répertorié.

Si vous n'avez pas arrêté le processus dropboxd que dbmakefakelib.py a démarré, vous constaterez qu'il télécharge déjà les fichiers de Dropbox vers ~ / Dropbox / en arrière-plan.

Pour démarrer le démon dropboxd en arrière-plan au démarrage, vous pouvez ajouter ce qui suit à votre script d'initialisation /etc/rc.d/rc.local:

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

Cela démarrera dropboxd en arrière-plan avec les privilèges de l'utilisateur pour lequel il est installé (dans ce cas, l'utilisateur est «dropbox»). Si vous souhaitez créer un script d’installation à l’échelle du système, visitez le wiki Dropbox où vous pouvez utiliser quelques exemples, notamment des scripts pour Fedora / Red Hat et pour Debian / Ubuntu. Il contient également des exemples sur la manière de configurer Dropbox sous les outils daemontools de DJB.

Scott
la source
Merci à MestreLion d’ avoir posté ce lien .
Scott
0

Je viens de frapper le même problème et a pu le résoudre en

  1. Dissocier le compte via l'interface utilisateur Web Dropbox:

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

  2. Suppression du ~/.dropboxrépertoire pour l'utilisateur en cours d'exécution dropboxd.

    rm -r ~/.dropbox
    
  3. Vous devrez peut-être nettoyer le ~/Dropboxrépertoire également.

La première étape n'est peut-être pas nécessaire, mais je l'avais déjà fait avant de la retirer ~/.dropbox, ce qui m'a finalement permis de la configurer à nouveau.

Pensez au cdrépertoire dans lequel vous voulez être votre dossier racine Dropbox. Cela a ensuite bien fonctionné pour moi.

Ben M
la source
Bonjour et bienvenue sur SuperUser. Pouvez-vous préciser votre réponse? Plus précisément, donnez-vous une analyse plus détaillée de ce que l'utilisateur doit faire?
Service Manager
0

J'ai eu le même problème. Je voulais utiliser Dropbox pour synchroniser un disque dur secondaire de grande taille sur un serveur Ubuntu. Ce que j'ai fait, c'est que j'ai créé un lien symbolique du disque dur secondaire vers mon répertoire de base avant d'installer Dropbox.

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

Installez Dropbox uniquement après avoir terminé l'étape ci-dessus.

De cette façon, la Dropbox dans le répertoire de base est le lien symbolique et le vrai dossier est d'où que vous veniez par lien symbolique.

Marc Trenton
la source