如何在无头GNU / Linux服务器上更改Dropbox目录?


22

我已经通过命令行在家庭服务器(Ubuntu Server 12.04)上安装了Dropbox 2.0.0,以用于非现场自动备份,但是我无法更改Dropbox守护程序保持同步的目录。

我尝试了以下方法:

官方文档说要使用桌面应用程序,这不适用于我的情况。但是,我将台式机应用程序安装在台式机上,并更改了默认文件夹位置,但是在〜/ .dropbox /目录中找不到此更改的存储位置,因此可以在服务器上进行相同的更改。

此页面(以及其他几个页面)推荐使用Python脚本来完成这项工作。查看该脚本,它将打开一个名为〜/ .dropbox / dropbox.db的SQLite数据库,该数据库在我的Dropbox安装中不存在,这使我认为该脚本已过期。

这个论坛主题建议我在config.db数据库中手动插入所需的行,但这没什么区别。我在台式机上检查了相同的数据库文件,但它没有dropbox_path项,因此我认为该线程中的信息对于版本2.0也已过期。

正如答案之一所示,我曾尝试通过SSH使用X11转发来启动Dropbox GUI配置向导,但是该二进制文件必须检测到缺少本地X11安装,并且它会启动命令行守护程​​序,而它无法提供更改我需要的选项。

我现在使用的一个符号,作为建议作为一个答案,但是这是一个杂牌。我想知道进行更改的正确方法。

如何在无头GNU / Linux服务器上更改Dropbox目录?

更新:我放弃了Dropbox并开始使用Copy。他们的Linux工具和支持远远优于Dropbox。我将这个问题留在这里,以备将来某人可以回答。


尽管我的回答是正确的,但是如果这是您的家庭服务器,为什么不将屏幕连接到它,进行更改并再次将屏幕移开呢?
2013年

@terdon,没有X11来运行Dropbox桌面应用程序。
2013年

嗯,好的,很公平,然后尝试我的回答,应该可以。我的家用无头服务器实际上有X,默认情况下它没有启动,并且没有屏幕连接,这就是我问的原因。我在一个真正的无头,无X11的服务器上测试了我的答案,并且工作正常。X11转发使用本地 X服务器,不需要一台就可以在远程计算机上运行。
2013年

现在复制消失了,还有更好的选择吗?“复制已于2016年5月1日终止。作为以前的复制用户,我们认为您会喜欢Trove。” -试过了吗?
Xen2050

Answers:


11

您可以创建一个符号链接到 ~/Dropbox

ln -s <dir-that-you-want-to-sync> ~/Dropbox

3
该问题询问“如何更改Dropbox目录...”,符号链接不是答案。
2013年

4
但是,需要注意的原因,您要改变的Dropbox目录,参 XY问题
Aditya

其实。我认为这行不通,我记得在符号链接无法使用Dropbox时遇到麻烦。

3
符号链接确实有效,这是我在问这个问题之前所使用的,但是它是Kludge。我来这里是为了找到进行更改的正确方法。我将更新问题以反映这一点。
2013年

如果您需要将Dropbox文件夹移出主目录,例如,如果希望其他用户能够访问Dropbox文件夹的内容,则此方法不起作用。在这种情况下,下面的ikandar解决方案对我有用。
jesse.r

6

所以这是我的把戏:

首先,我删除在主文件夹中创建的所有相关文件夹

rm -rf ~/.dropbox-dist

我还删除了Dropbox的默认文件夹:

rm -rf ~/Dropbox

因此,我通过如下定义HOME env var重新安装了dropbox守护程序:

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

接下来,通过运行手动启动dropboxd守护程序:

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

然后等待直到完成。


1
以我的经验,您还需要删除〜/ .dropbox,否则第4步将抱怨该计算机已被链接,并且不允许您在/ data / other_folder中进行操作。
jesse.r

谢谢,这对我有用。注意事项:1.请记住您的数据将/data/other_folder/Dropbox保留在其中2. 将在其中创建其他一些点文件other_folder,例如,当启动浏览器进行初始登录时。您可以稍后尝试清除它们。3.您必须在HOME=...每次启动Dropbox时使用。(.dropbox*在一切正常后,我尝试将文件夹移到我的真实家中,但是这破坏了设置。)
joeytwiddle

4

这是Linux应用程序的真正缺点。在旧版本中,您可以修改设置文件。在最新版本中,似乎唯一的解决方案是$HOME在Dropbox启动之前更改变量。

假设我们希望“ Dropbox”文件夹出现在中/foo/bar

  1. 将Dropbox安装到 /foo/bar/.dropbox-dist
  2. 从以下位置下载Python脚本来控制Dropbox: Linux Dropbox页面。
  3. 在下面的脚本中 import os添加一行:os.environ["HOME"] = "/foo/bar"
  4. 通过控制脚本开始控制的Dropbox现在认为/foo/bar/是您的/home/username/

这意味着现在使用控制脚本时,它会寻找/foo/bar/.dropbox-dist/dropbox要执行的守护程序。配置文件将写入/foo/bar/.dropbox/。该/foo/bar/Dropbox/文件夹将用于文件同步。


很棒的提示!帮助很大。与它配对以ln -s ~/dropbox.py /usr/local/bin/dropbox减少打字!
克里斯·麦克奈特

这对我很有用,尽管当我尝试停止Dropbox时,我收到一条消息,说Dropbox isn't responding!。看起来它确实停止了。有点奇怪
ohruunuruus

有趣的是,在执行python脚本之前在/usr/local/bin其中设置一个脚本HOME(而不是使用来修改脚本本身os.environ["HOME"])似乎已经解决了这一问题。
ohruunuruus

0

如果您可以ssh访问有问题的计算机,则可以dropbox在无头服务器上启动桌面应用程序,并将其显示在本地计算机上:

  1. 使用X11端口转发连接到服务器

    ssh -Y user@server
    
  2. 现在启动Dropbox应用,它应该会出现在您的本地屏幕上

    ~/.dropbox-dist/dropbox
    

    可能需要一段时间,具体取决于您的网络连接。如果您没有收到错误消息,请不要放弃。当我从Debian盒子连接到没有运行X服务器的远程Ubuntu服务器时,我可以确认这是可行的。几秒钟后,第二个Dropbox图标出现在本地任务栏上,我可以从那里访问/修改远程Dropbox安装的选项。

现在,自从我使用Dropbox 1.6.18以来,一些细节可能会发生变化,但是基本知识应该是相同的。如果应用程序的名称或位置发生了变化,这就是我找出启动Dropbox桌面应用程序需要执行的命令的方式:

  1. 获取当前正在运行的进程的列表

    top -cbd .10 -n 1 | sort > no_drop.txt
    
  2. 启动Dropbox应用程序(右键单击任务栏中的Dropbox图标,然后选择“首选项...”)并重复

    top -cbd .10 -n 1 | sort > drop.txt
    
  3. 比较文件以找到相关命令

    diff drop.txt no_drop.txt
    

1
没有GUI应用程序可以转发,只有Dropbox的Dropbox守护程序可以转发。
2013年

你有没有尝试topdiff欺骗我建议?在本地计算机上启动该应用程序,必须启动某些程序,因此有一个命令。如果在新版本中,唯一的命令是守护程序,则启动该守护程序,它仍将出现在任务栏上。
2013年

在我的台式机上,运行〜/ dropbox-dist / dropbox将启动GUI配置向导。在服务器上,通过启用X11转发的ssh连接,〜/ dropbox-dist / dropbox启动一个守护进程,该守护进程指示我进入特定的URL以“链接此计算机”。服务器和桌面都使用完全相同的存档来安装保管箱文件。在归档文件中,只有两个可执行文件是dropbox和dropboxed,后者只是一个用于设置LD_LIBRARY_PATH并启动前者的shell脚本。
2013年

嗯,我的远程服务器被链接。如果我没记错的话,我必须lynx在远程计算机上(始终使用X11转发)启动图形浏览器(无法执行),并使用该浏览器链接计算机。尝试这样做,然后~/dropbox-dist/dropbox再次启动。至少我们已经确认它可以工作,您提到的守护程序是图形化的,并且显示在本地屏幕上,对吗?因此,将服务器链接到帐户后,您应该能够按照我的答案中的说明进行配置。
2013年

它被链接了,我只是从〜/ .dropbox删除配置,从头开始。“您提到的守护程序是图形的,并显示在本地屏幕上,对吗?” 不,在服务器上运行时不是图形的。尽管X11转发已启用,但它必须正在检测X11的缺失并进入仅命令行模式。
2013年


0

TechRepublic有一个页面- 在没有GUI的Linux服务器上设置Dropbox-声称可以解决此问题:

…提供了GUI工具来管理Dropbox并将其设置为[Linux,Windows和OS X]。但是,如果您要链接没有GUI的Linux计算机,会发生什么?通过一些工作,可以使Dropbox在不使用GUI的情况下运行,从而使您可以与无头运行的服务器或可能一直未登录用户帐户的服务器同步文件。

    ︙

开始:

# 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

使用plat=lnx.x86,如果你想在32位客户端。这将为我们的Dropbox安装文件创建一个临时目录,并下载两个必要的python脚本:dbmakefakelib.py 这将创建伪造的GUI库存根副本,以便dropboxd守护程序启动,并dbreadconfig.py显示dropbox配置信息。

确定哪个用户将运行Dropbox客户端;这可以是专用用户,也可以是普通用户。您还可以在系统上运行多个Dropbox实例,因此您可以选择为多个用户设置它(尽管每个用户只能运行一个Dropbox实例)。对于此示例,我们将创建一个特殊的用户“ dropbox”,它将运行此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?

dbmakefakelib.py脚本需要gcc,因此您必须在系统上安装gcc。这会创建GUI库的伪造的存根副本,以便dropboxed将开始。最后,您可以看到它已启动保管箱;按Ctrl+ C退出脚本。dropboxd应该仍在后台运行:

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

现在该保管箱正在运行,我们需要将其链接到现有帐户:

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

从上方抓取host_id。登录到Dropbox Web界面,登录后,手动访问以下URL:

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

替换[HOST_ID]为dbreadconfig.py输出的host_id。完成此操作后,Dropbox站点将告诉您您已成功链接新计算机。转到“帐户设置”,然后转到“我的电脑”,您将看到列出的新计算机。

如果尚未杀死dbmakefakelib.py启动的dropboxed进程,则将发现它已经在后台将文件从Dropbox下载到〜/ Dropbox /中。

要在启动时在后台启动dropboxd守护程序,可以将以下内容添加到/etc/rc.d/rc.local初始化脚本中:

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

这将在后台使用其安装用户的特权(在这种情况下,用户是“ dropbox”)以dropbox的形式开始。如果要执行系统范围内的初始化脚本,请访问Dropbox Wiki,其中有一些示例可供您使用,包括Fedora / Red Hat和Debian / Ubuntu的初始化脚本。它还提供了有关如何设置在DJB的daemontools下运行的Dropbox的示例。


由于去MestreLion ⁠⁠用于张贴此链接
斯科特(Scott)

0

我遇到了同样的问题,并能够通过以下方式解决

  1. 通过Dropbox网络用户界面取消帐户关联:

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

  2. 删除~/.dropbox正在运行的用户的目录dropboxd

    rm -r ~/.dropbox
    
  3. 您可能还需要清理~/Dropbox目录。

第一步可能没有必要,但是在删除之前我已经做过,~/.dropbox最终允许我再次进行设置。

请记住cd要成为您的Dropbox根文件夹的目录。然后对我来说很好。


您好,欢迎来到SuperUser。您能否详细说明答案?具体来说,深入了解用户需要做什么?
服务经理

0

我遇到过同样的问题。我想使用保管箱来同步ubuntu服务器上的大型辅助硬盘。我要做的是在安装保管箱之前创建了从辅助硬盘到主目录的符号链接

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

完成上述步骤后,才安装Dropbox。

这样,主目录中的Dropbox是符号链接,而实际文件夹是您进行符号链接的位置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.