
O script dropbox.py para dropboxd no Linux fornecerá o status atual:
$ dropbox.py status
Syncing (2,656 files remaining)
Uploading 2,656 files...
Ou status de um arquivo específico ou pasta atual:
$ dropbox.py filestatus
Camera Uploads: up to date
Customer Shares: syncing
Mas existe uma maneira de ver quais arquivos estão realmente sendo transferidos no momento?
A razão pela qual pergunto é que o Dropbox está travado há dias na sincronização, mas não está progredindo. Suspeito que ele esteja preso em algum arquivo estranhamente grande ou corrompido e, se eu pudesse identificá-lo, poderia removê-lo/ignorá-lo.
Observação
$ ls -l /proc/7857/fd
Onde 7857 é o pid do dropbox, nenhum arquivo no caminho sincronizado é mostrado.
Observe que exigir a interrupção do dropboxd e a reexecução com um depurador não revelaria o que está sendo transferidoagora. Parar e iniciar o daemon resulta na reindexação e no reinício da sincronização. Isso provavelmente faria com que um conjunto diferente de arquivos fosse transferido.
Alguma sugestão?
Responder1
Se você estiver no Linux é bem fácil. Durante o processo de sincronização você pode fazer:
find $HOME/dropbox_sync_dir -type f -exec dropbox.py file status -a '{}' \; | grep 'syncing'
Explicando detalhes:
find <path> -type f -exec dropbox.py ... '{}' \;
Executa dropbox.py
em todos os arquivos ou abaixo do diretório atual.
Observe que as chaves estão entre aspas simples para protegê-las da interpretação como pontuação de script de shell. O ponto e vírgula é protegido de forma semelhante pelo uso de uma barra invertida, embora aspas simples também possam ter sido usadas nesse caso.
Mais sobrehomem encontrarPáginas
dropbox.py file status -a
demanual do cliente 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 "."
Os aliases incluem estatísticas.
| grep 'syncing'
Procura pela string 'sincronização'.
Nota: para que o final .py não seja obrigatório, deve haver um alias, portanto, escrever apenas dropbox
deve ser suficiente.
Primeira edição- reeditar devido ao comentário de Paul sobre dropboxd (daemon) vs. dropbox.py.
Esta continua a ser a forma mais provável de descobrir o que está a ser transferido.
Tentarei depurá-lo sozinho quando terminar minhas tarefas pendentes.
O dropbox.py
deve ser depurado via pdb
(o depurador python) para obter mais informações emdepurador python.
Finalmente, depois dos comentários de Paulo, entendi onde está o cerne da questão. Ele quer ver oarquivo atualmente acessadoou melhor aindaaquele que está sendo transferidopelo cliente de sincronização do dropbox.
Você pode encontrar todos os arquivos usados pelo cliente dropbox usado atualmente:
ls -thal /proc/`pgrep dropbox`/fd | egrep -v 'socket:|pipe:|anon_inode|/dev/'
Se você não consegue ver nada, significa que provavelmente algo está errado com o cliente. Eu recomendaria realizartraço.
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`
Se você quiser ir ainda mais fundo, você pode anexar umdepuradorpor exemplo,
gdb
para suastrace
sessão.Se você não está familiarizado com este processo você pode verificar, por exemplo, este simpáticopublicarsobre unix
strace
egdb
.
Apenas uma ajuda rápida:
Quando você inicia seu rastreamento com: strace dropboxd
(a execução do pid seria 501), anexe-o da seguinte maneira:
$ gdb --quiet
(gdb) attach 501
- Se tudo mais falhar, você pode usar outras maneiras de sincronizar sua caixa de depósito:
Por exemplo, use um cliente CLI diferente, comodbxcli.
Segunda edição e quarta edição- não funcionará até que o dropbox suporte chaves privadas próprias.
Resposta do suporte do dropbox:
O Dropbox não oferece suporte à criação de suas próprias chaves privadas.
Ocorreu-me que deveria ser possível verificar o que é transferido mesmo através de uma ferramenta de monitoramento de rede como o wireshark
.
Como o cliente dropbox está usando SSL/TSL (ou AES)A arquitetura de segurança do Dropboxe você deve ter a chave para verificar.
Para detalhes de como usar wireshare
você pode verificar https://wiki.wireshark.org/SSL
ou ajustar este exemplo ao seu casoAnalise o tráfego de Olá do cliente SSL/TLS. Se você tiver um certificado dropbox, poderá importá-lo para o wireshark para ver o que está acontecendo. (Para detalhes de segurança da caixa de depósito, você pode verificarArtigo de segurança do Dropbox.
Terceira edição e quarta edição- detalhes sobre a descriptografia SSL/TSL. (não funcionará até que o dropbox suporte chaves privadas próprias).
Resposta do suporte do dropbox:
O Dropbox não oferece suporte à criação de suas próprias chaves privadas.
Na segunda seção de edição, sugeri que você pudesse visualizar o tráfego SSL via wireshark. Como Paul pensou que estou sugerindo que você realmente deveria hackear o DH key exchange
, o que não é possível com o conhecimento atual, gostaria de retificá-lo.
O que estou tentando sugerir é que se você estiver usandoempresa de caixa de depósito RSAe autenticação RSA, você poderia tentar usar o dropboxd with RSA key
(o daemon dropboxd é de código fechado, não consigo verificar o código fonte se a funcionalidade está lá e provavelmente a melhor solução é perguntar diretamente ao dropbox.com).
Se isso for possível, só então importe o RSA key
parawiresharkpara ver o que está sendo transferido atualmente.