Как изменить каталог Dropbox на безголовом сервере GNU / Linux?

22

Я установил Dropbox 2.0.0 через командную строку на своем домашнем сервере (Ubuntu Server 12.04), чтобы использовать его для автоматического резервного копирования за пределами сайта, но я не могу изменить каталог, который синхронизирует демон Dropbox.

Я пробовал следующее:

Официальные документы говорят использовать настольное приложение, которое не применимо в моей ситуации. Однако я установил настольное приложение на свой настольный компьютер и изменил расположение папки по умолчанию, но не могу найти, где это изменение хранится в каталоге ~ / .dropbox /, поэтому я могу сделать то же самое изменение на сервере.

На этой странице (и некоторых других) для выполнения этой работы рекомендуется использовать скрипт Python . Глядя на сценарий, он открывает базу данных SQLite с именем ~ / .dropbox / dropbox.db, которой нет в моей установке Dropbox, и это заставляет меня думать, что сценарий устарел.

Эта ветка форума предлагает вручную вставить нужную строку в базу данных config.db, что я и сделал, но это не имело никакого значения. Я проверил тот же файл базы данных на своем настольном компьютере, и у него нет ключа dropbox_path, поэтому я предполагаю, что информация в этой теме также устарела для версии 2.0.

Я попытался запустить мастер настройки графического интерфейса Dropbox через SSH с переадресацией X11, как предложено в одном из ответов, но двоичный файл должен обнаружить отсутствие локальной установки X11, и вместо этого он запускает демон командной строки, который не предоставляет средств для поменяй нужный мне вариант.

В настоящее время я использую символическую ссылку, как предлагается в качестве ответа, но это клудж . Я хотел бы знать правильный способ внесения изменений.

Как изменить каталог Dropbox на безголовом сервере GNU / Linux?

Обновление: я бросил Dropbox и начал использовать Копирование . Их инструменты и поддержка Linux намного превосходят Dropbox. Я оставляю этот вопрос здесь на случай, если кто-нибудь когда-нибудь сможет ответить на него.

хх
источник
Несмотря на мой ответ, если это ваш домашний сервер, почему бы вам просто не подключить к нему экран, не внести изменения и снова убрать экран?
Тердон
@terdon, X11 для запуска настольного приложения Dropbox нет.
XX
Ах, хорошо, достаточно честно, попробуйте мой ответ тогда, он должен работать. Мой домашний безголовый сервер на самом деле имеет X, по умолчанию он просто не запускается и экран не подключен, поэтому я и спросил. Я проверил свой ответ на реальном безголовом сервере без X11, и это сработало. Пересылка X11 использует локальный X-сервер и не требует, чтобы он работал на удаленной машине.
Тердон
Есть ли лучшие варианты теперь, когда Копия исчезла? «Копирование было прекращено 1 мая 2016 года. Как бывший пользователь Copy, мы думаем, что вам понравится Trove». - пробовал это?
Xen2050

Ответы:

11

Вы можете просто создать символическую ссылку на ~/Dropbox

ln -s <dir-that-you-want-to-sync> ~/Dropbox
Адитья
источник
3
Вопрос спрашивает: «Как я могу изменить каталог Dropbox ...», символическая ссылка не является ответом.
XX
4
Но он заботится о причине, по которой вы хотите изменить каталог Dropbox, ср. XY проблема
Адитья
На самом деле. Я думаю, что это не сработает, я помню проблемы с символическими ссылками, не работающими с Dropbox.
Terdon
3
Симлинкинг работает, и это то, что я использовал, прежде чем задавать этот вопрос, но это Kludge. Я пришел сюда, чтобы узнать правильный способ внести изменения. Я обновлю вопрос, чтобы отразить это.
XX
Это не работает, если вам нужно переместить папку Dropbox из вашей домашней директории, например, если вы хотите, чтобы другие пользователи имели доступ к содержимому вашей папки Dropbox. Приведенное ниже решение ikandar сработало для меня, для этой ситуации.
jesse.r
6

Итак, вот мой трюк:

Сначала я удаляю все связанные папки, созданные в моей домашней папке

rm -rf ~/.dropbox-dist

Я также удаляю папку Dropbox по умолчанию:

rm -rf ~/Dropbox

Затем я переустановил демон dropbox, определив HOME env var следующим образом:

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

Затем запустите демон dropboxd вручную, запустив:

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

Тогда подожди до конца.

ikandars
источник
1
По моему опыту, вам также необходимо удалить ~ / .dropbox, иначе шаг 4 будет жаловаться на то, что компьютер уже подключен, и не позволит вам перейти в / data / other_folder.
jesse.r
Спасибо, это сработало для меня. Предостережения: 1. Помните, что ваши данные будут жить в /data/other_folder/Dropbox2. Он создаст несколько других файлов точек other_folder, например, когда он запустит ваш браузер для первоначального входа в систему. Вы можете попытаться выяснить это позже. 3. Вы должны использовать HOME=...каждый раз, когда вы запускаете Dropbox. (Я попытался переместить .dropbox*папки в свой настоящий дом после того, как все
заработало
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
Интересно, что создание сценария в /usr/local/binэтих наборах HOMEперед выполнением сценария python (а не изменение самого сценария с помощью os.environ["HOME"]), кажется, очистило это.
ohruunuruus
0

Если у вас есть sshдоступ к рассматриваемому компьютеру, вы можете запустить dropboxприложение для настольного компьютера на автономном сервере и отобразить его на локальном компьютере:

  1. Подключитесь к серверу, используя переадресацию портов X11

    ssh -Y user@server
    
  2. Теперь запустите приложение Dropbox, оно должно появиться на вашем локальном экране.

    ~/.dropbox-dist/dropbox
    

    Это может занять некоторое время в зависимости от вашего сетевого подключения. Не сдавайтесь, если не получите сообщение об ошибке. Я могу подтвердить, что это сработало, когда я подключился из своей коробки Debian к удаленному серверу Ubuntu, на котором не было X-сервера. Через несколько секунд на моей локальной панели задач появился второй значок 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
    
terdon
источник
1
Нет приложения с графическим интерфейсом для пересылки, только dropboxd, демон Dropbox.
XX
Ты пробовал topи diffтрюк, который я предложил? Запустите приложение на локальном компьютере, что-то должно быть запущено, поэтому есть команда. Если в новой версии единственной командой является демон, то запустите демон, он все равно будет отображаться на панели задач.
Тердон
На моем настольном компьютере запуск ~ / dropbox-dist / dropbox запускает мастер настройки графического интерфейса. На сервере через соединение ssh с включенной переадресацией X11 ~ / dropbox-dist / dropbox запускает демон, который указывает мне перейти на определенный URL-адрес, чтобы «связать эту машину». И сервер, и рабочий стол используют один и тот же архив для установки файлов Dropbox. В архиве только два исполняемых файла: dropbox и dropboxd, последний - просто скрипт оболочки для установки LD_LIBRARY_PATH и запуска первого.
XX
Хм, мой удаленный сервер уже был связан. Если я правильно помню, мне пришлось запустить графический браузер ( lynxне мог этого сделать) на удаленной машине (всегда с использованием пересылки X11) и связать машину с помощью этого браузера. Попробуйте сделать это и запустите ~/dropbox-dist/dropboxснова. По крайней мере, мы подтвердили, что это работает, упомянутый вами демон является графическим и отображается на вашем локальном экране, верно? Поэтому, как только вы подключите свой сервер к своей учетной записи, вы сможете настроить его, как описано в моем ответе.
Тердон
Это было связано, я просто удалил конфигурацию из ~ / .dropbox, чтобы начать с нуля. "упомянутый вами демон является графическим и отображается на вашем локальном экране, верно?" Нет, он не является графическим при запуске на сервере. Он должен обнаруживать отсутствие X11 и переходить в режим только командной строки, несмотря на то, что переадресация X11 включена.
XX
0

Это может быть то, что вы ищете:

Установите Dropbox на Linux-сервере без графического интерфейса

Я прошу прощения за простую передачу URL-адреса вместо описания процедур здесь. Я на работе и сейчас не могу рассказать подробнее Позже я могу расширить ответ, я просто не хочу потерять этот ценный URL с вашим решением.

MestreLion
источник
0

У TechRepublic есть страница - Настройка Dropbox на сервере Linux без графического интерфейса - которая претендует на решение этой проблемы:

… Для управления Dropbox и его настройки для [Linux, Windows и OS X] предусмотрены инструменты с графическим интерфейсом. Но что произойдет, если вы захотите связать компьютер с Linux без графического интерфейса? Немного поработав, можно заставить Dropbox работать без графического интерфейса, что позволяет синхронизировать файлы с серверами, которые работают без заголовка или в которых учетная запись пользователя может не войти в систему все время.

    ︙

Начать:

# 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, так что запускается dropboxd. В конце вы можете увидеть, что он запустил dropboxd; нажмите Ctrl+, Cчтобы выйти из сценария. dropboxd все еще должен работать в фоновом режиме:

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

Теперь, когда Dropbox запущен, нам нужно связать его с существующей учетной записью:

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

Возьмите host_id сверху. Войдите в веб-интерфейс Dropbox, и, как только вы вошли в систему, вручную перейдите по этому URL:

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

Замените [HOST_ID]на host_id, который выводит dbreadconfig.py. Когда вы это сделаете, сайт Dropbox сообщит вам, что вы успешно связали новый компьютер. Перейдите в настройки своей учетной записи, а затем «Мои компьютеры», и вы увидите новый компьютер в списке.

Если вы не убили процесс dropboxd, который запустил dbmakefakelib.py, вы обнаружите, что он уже загружает файлы из Dropbox в ~ / Dropbox / в фоновом режиме.

Чтобы запустить демон dropboxd в фоновом режиме при загрузке, вы можете добавить следующее в скрипт инициализации /etc/rc.d/rc.local:

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

Это запустит dropboxd в фоновом режиме с правами пользователя, для которого он установлен (в данном случае это «dropbox»). Если вы хотите сделать initscript для всей системы, посетите вики-сайт Dropbox, где есть несколько примеров, которые вы можете использовать, включая initscripts для Fedora / Red Hat и для Debian / Ubuntu. Здесь также есть примеры того, как настроить Dropbox, работающий под daemontools DJB.

Скотт
источник
Спасибо MestreLion ⁠⁠ за размещение этой ссылки .
Скотт
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

Я была такая же проблема. Я хотел использовать Dropbox для синхронизации большого вторичного жесткого диска на сервере Ubuntu. Я сделал символическую ссылку со вторичного жесткого диска на свой домашний каталог перед установкой dropbox

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

Устанавливайте Dropbox только после выполнения вышеуказанного шага.

Таким образом, Dropbox в домашнем каталоге - это символическая ссылка, а настоящая папка - там, где вы когда-либо находились.

Маркус Трентон
источник