3

Скрипт dropbox.py для dropboxd в linux даст текущий статус:

$ dropbox.py status 
Syncing (2,656 files remaining)
Uploading 2,656 files...  

Или статус определенного файла или текущей папки:

$ dropbox.py filestatus 
Camera Uploads:     up to date 
Customer Shares:    syncing

Но есть ли способ узнать, какие файлы действительно передаются сейчас?

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

Заметка

$ ls -l /proc/7857/fd

Где 7857 - это pid dropbox, файлы в синхронизированном пути не отображаются.

Обратите внимание, что требование остановки dropboxd и повторного выполнения с помощью отладчика не показывает, что передается сейчас. Остановка и запуск демона приводит к переиндексации и возобновлению синхронизации. Это, вероятно, приведет к тому, что передается другой набор файлов.

Какие-либо предложения?

1 ответ1

2

Если вы используете Linux, это довольно просто. Во время процесса синхронизации вы можете сделать:

find $HOME/dropbox_sync_dir -type f -exec dropbox.py file status -a '{}' \; | grep 'syncing'

Объясняя детали:

  • find <path> -type f -exec dropbox.py ... '{}' \;

Запускает dropbox.py для каждого файла или ниже текущего каталога.

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

Больше на страницах поиска человека

  • Состояние файла dropbox.py -a из руководства для клиента dropbox.py file status -a linux:

    dropbox file status  [-l] [-a] [FILE]…
    
    Prints the current status of each FILE.
    
      Options:
    
       -l or --list prints out information in a format similar to the native Linux command ls.
       -a or --all do not ignore entries starting with "."
    

    Псевдонимы включают стат.

  • | grep 'syncing'

Ищет строку синхронизации.

Обратите внимание: что конец .py не должен быть обязательным, должен быть псевдоним, поэтому достаточно просто написать dropbox .

Первое редактирование - повторное редактирование из-за комментария Пола о dropboxd (daemon) против dropbox.py.

Это остается наиболее вероятным способом выяснить, что передается.

Я постараюсь отладить его сам, когда закончу свои отложенные задачи.

dropbox.py должен быть отлажен с помощью pdb (отладчик python), чтобы узнать больше об отладчике python.

Наконец, после комментариев Павла, я понял, в чем суть проблемы. Он хочет увидеть текущий доступный файл или, что еще лучше, файл , передаваемый клиентом синхронизации Dropbox.

  • Вы можете найти все файлы, используемые клиентом dropbox:

    ls -thal /proc/`pgrep dropbox`/fd | egrep -v 'socket:|pipe:|anon_inode|/dev/'
    
  • Если вы ничего не видите, значит, что-то не так с клиентом. Я бы порекомендовал выполнять strace.

    To monitor your dropboxd script with output save into output.txt file:
    `strace -o output.txt dropboxd`
    
    To monitor only system calls you could enter:
    `strace -e open dropboxd`
    
  • Если вы хотите пойти еще глубже, вы можете подключить отладчик, например, gdb к вашему сеансу strace .

    Если вы не знакомы с этим процессом, вы можете проверить, например, этот хороший пост о Unix strace и gdb .

Просто быстрая помощь:

Когда вы начинаете трассировку с: strace dropboxd (pid будет 501), тогда вы присоединяетесь к нему следующим образом:

$ gdb --quiet
(gdb) attach 501
  • Если ничего не помогает, вы можете использовать другие способы синхронизации вашего Dropbox:

Например, используйте другой клиент Cli, такой как dbxcli.

Second Edit & Forth Edit - не будет работать, пока dropbox не будет поддерживать собственные закрытые ключи.

Ответ от поддержки Dropbox:

Dropbox не поддерживает создание ваших собственных закрытых ключей.

Мне пришло в голову, что должна быть возможность проверить, что передается, даже через инструмент мониторинга сети, такой как wireshark .

Так как клиент Dropbox использует SSL/TSL (или AES) Архитектура безопасности Dropbox, и у вас должен быть ключ для проверки.

Для получения подробной информации о том, как использовать wireshare вы можете проверить https://wiki.wireshark.org/SSL или настроить этот пример для своего случая. Анализ трафика приветствия клиента SSL/TLS. Если у вас есть сертификат dropbox, вы можете импортировать его в wireshark, чтобы увидеть, что происходит. (Подробную информацию о безопасности Dropbox можно найти в техническом описании безопасности Dropbox.

Третий Edit & Forth edit - подробности о расшифровке SSL/TSL. (не будет работать, пока Dropbox не будет поддерживать собственные закрытые ключи.)

Ответ от поддержки Dropbox:

Dropbox не поддерживает создание ваших собственных закрытых ключей.

Во втором разделе редактирования я предложил, чтобы вы могли просматривать трафик SSL через wireshark. Поскольку Пол подумал, что я предлагаю вам на самом деле взломать DH key exchange , что при нынешних знаниях невозможно, я бы хотел исправить это.

Я пытаюсь предложить, что если вы используете аутентификацию RSA и RSA для Dropbox Business , вы можете попробовать использовать dropboxd with RSA key (демон dropboxd является закрытым исходным кодом, я не могу проверить исходный код, если функциональность есть). и, вероятно, лучшее решение - спросить у dropbox.com напрямую).

Если это возможно, только затем импортируйте RSA key в wireshark, чтобы увидеть, что в данный момент передается.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .