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

x-x*_*x-x 26 linux dropbox

我已通过家庭服务器 (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 安装,并改为启动命令行守护程​​序,这无法提供更改我需要的选项。

我目前正在使用符号链接,作为答案的建议,但这是一个kludge。我想知道进行更改的正确方法。

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

更新:我已经放弃 Dropbox 并开始使用Copy。他们的 Linux 工具和支持远远优于 Dropbox。我把这个问题留在这里,以防有一天有人可以回答。

Adi*_*tya 10

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

ln -s <dir-that-you-want-to-sync> ~/Dropbox
Run Code Online (Sandbox Code Playgroud)

  • 问题是“我如何更改 Dropbox 目录...”,符号链接不是答案。 (5认同)
  • 但它会处理您想要更改 Dropbox 目录的 _reason_,参见。[XY 问题](http://meta.stackexchange.com/q/66377) (5认同)
  • 符号链接确实有效,这是我在问这个问题之前使用的,但它是一个 Kludge。我来这里是为了找出进行更改的正确方法。我将更新问题以反映这一点。 (3认同)

ika*_*ars 9

所以这是我的诀窍:

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

rm -rf ~/.dropbox-dist
Run Code Online (Sandbox Code Playgroud)

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

rm -rf ~/Dropbox
Run Code Online (Sandbox Code Playgroud)

然后我通过像这样定义 HOME env var 重新安装了 dropbox 守护进程:

HOME=/data/other_folder dropbox.py start -i
Run Code Online (Sandbox Code Playgroud)

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

HOME=/data/other_folder /data/other_folder/.dropbox-dist/dropboxd
Run Code Online (Sandbox Code Playgroud)

然后等它完成。


小智 6

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

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

  1. 将 Dropbox 安装到/foo/bar/.dropbox-dist.
  2. Linux Dropbox页面下载 Python 脚本以控制 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/文件夹将用于文件同步。


ter*_*don 0

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

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

    ssh -Y user@server
    
    Run Code Online (Sandbox Code Playgroud)
  2. 现在启动 Dropbox 应用程序,它应该出现在您的本地屏幕上

    ~/.dropbox-dist/dropbox
    
    Run Code Online (Sandbox Code Playgroud)

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

现在,由于我使用的是 Dropbox 1.6.18,一些细节可能会发生变化,但基础知识应该是相同的。如果应用程序的名称或位置发生更改,我可以通过以下方式找到启动 Dropbox 桌面应用程序所需执行的命令:

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

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

    top -cbd .10 -n 1 | sort > drop.txt
    
    Run Code Online (Sandbox Code Playgroud)
  3. 比较文件找到相关命令

    diff drop.txt no_drop.txt
    
    Run Code Online (Sandbox Code Playgroud)

  • 没有 GUI 应用程序可以转发,只有 dropboxd(Dropbox 守护进程)。 (2认同)