
Скрипт 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
впроводная акулачтобы увидеть, что в данный момент передается.