Можно ли посмотреть, что сейчас синхронизирует dropboxd?

Можно ли посмотреть, что сейчас синхронизирует dropboxd?

Скрипт 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

Если у вас 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 file status -aизруководство по клиенту dropbox 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 "."
    

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

  • | grep 'syncing'

Поиск строки «синхронизация».

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

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

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

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

Для получения более подробной информации следует dropbox.pyвыполнить отладку с помощью pdb(отладчика Python)отладчик питона.

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

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

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

    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.

Второе редактирование и четвертое редактирование- не будет работать, пока Dropbox не начнет поддерживать собственные закрытые ключи.

Ответ от службы поддержки Dropbox:

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

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

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

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

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

Ответ от службы поддержки Dropbox:

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

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

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

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

Связанный контент