
El script dropbox.py para dropboxd en Linux proporcionará el estado actual:
$ dropbox.py status
Syncing (2,656 files remaining)
Uploading 2,656 files...
O estado de un archivo específico o carpeta actual:
$ dropbox.py filestatus
Camera Uploads: up to date
Customer Shares: syncing
Pero, ¿hay alguna manera de ver qué archivos se están transfiriendo realmente en este momento?
La razón por la que pregunto es que Dropbox ha estado bloqueado durante días sincronizándose pero no progresa. Sospecho que está atascado en algún archivo extrañamente grande o corrupto, y si pudiera identificarlo, podría eliminarlo o ignorarlo.
Nota
$ ls -l /proc/7857/fd
Donde 7857 es el pid de Dropbox, no se muestra ningún archivo en la ruta sincronizada.
Tenga en cuenta que requerir la detención de dropboxd y volver a ejecutarlo con un depurador no revelaría lo que se está transfiriendo.ahora. Detener e iniciar el demonio da como resultado una reindexación y un reinicio de la sincronización. Esto probablemente provocaría que se transfiriera un conjunto diferente de archivos.
¿Alguna sugerencia?
Respuesta1
Si estás en Linux es bastante fácil. Durante el proceso de sincronización puedes hacer:
find $HOME/dropbox_sync_dir -type f -exec dropbox.py file status -a '{}' \; | grep 'syncing'
Detalles explicativos:
find <path> -type f -exec dropbox.py ... '{}' \;
Se ejecuta dropbox.py
en cada archivo o debajo del directorio actual.
Observe que las llaves están entre comillas simples para protegerlas de la interpretación como puntuación de script de shell. El punto y coma está igualmente protegido mediante el uso de una barra invertida, aunque en ese caso también se podrían haber utilizado comillas simples.
Más enhombre encontrarpaginas
dropbox.py file status -a
desde elmanual del 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 "."
Los alias incluyen estadística.
| grep 'syncing'
Busca la cadena 'sincronización'.
Nota: que el final .py no debería ser obligatorio, debería haber un alias, por lo que escribir dropbox
debería ser suficiente.
Primera edición- reedición debido al comentario de Paul sobre dropboxd (daemon) vs. dropbox.py.
Ésta sigue siendo la forma más probable de averiguar qué se está transfiriendo.
Intentaré depurarlo yo mismo cuando termine mis tareas pendientes.
Se dropbox.py
debe depurar mediante pdb
(el depurador de Python) para obtener más información endepurador de Python.
Finalmente, después de los comentarios de Paul, entendí dónde está el meollo del problema. El quiere ver elarchivo actualmente accedidoo mejorel que esta siendo transferidopor el cliente de sincronización de Dropbox.
Puede encontrar todos los archivos utilizados por el cliente de Dropbox utilizado actualmente:
ls -thal /proc/`pgrep dropbox`/fd | egrep -v 'socket:|pipe:|anon_inode|/dev/'
Si no puede ver nada, significa que probablemente algo anda mal con el cliente. recomendaría realizarrastro.
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`
Si desea profundizar aún más, puede adjuntar undepuradorpor ejemplo ,
gdb
a sustrace
sesión.Si no estás familiarizado con este proceso puedes consultar, por ejemplo, este bonitocorreosobre Unix
strace
ygdb
.
Sólo una ayuda rápida:
Cuando comienza su seguimiento con: strace dropboxd
(ejecutar pid sería 501), luego lo adjunta de la siguiente manera:
$ gdb --quiet
(gdb) attach 501
- Si todo lo demás falla, puedes utilizar otras formas de sincronizar tu Dropbox:
Por ejemplo, utilice un cliente cli diferente comodbxcli.
Segunda edición y cuarta edición- no funcionará hasta que Dropbox admita claves privadas propias.
Respuesta del soporte de Dropbox:
Dropbox no admite la creación de tus propias claves privadas.
Se me ocurrió que debería ser posible comprobar lo que se transfiere incluso mediante una herramienta de monitoreo de red como wireshark
.
Dado que el cliente de Dropbox utiliza SSL/TSL (o AES)La arquitectura de seguridad de Dropboxy deberías tener la clave para comprobarlo.
Para obtener detalles sobre cómo utilizarlo, wireshare
puede consultar https://wiki.wireshark.org/SSL
o ajustar este ejemplo a su caso.Analizar el tráfico de saludo del cliente SSL/TLS. Si tiene un certificado de Dropbox, puede importarlo a Wireshark para ver qué está sucediendo. (Para obtener detalles de seguridad de Dropbox, puedes consultarDocumento técnico sobre seguridad de Dropbox.
Tercera edición y cuarta edición- detalles sobre el descifrado SSL/TSL. (No funcionará hasta que Dropbox admita sus propias claves privadas).
Respuesta del soporte de Dropbox:
Dropbox no admite la creación de tus propias claves privadas.
En la segunda sección de edición, sugerí que pudieras ver el tráfico SSL a través de Wirehark. Dado que Paul ha pensado que estoy sugiriendo que en realidad deberías hackear el archivo DH key exchange
, lo cual no es posible con el conocimiento actual, me gustaría rectificarlo.
Lo que estoy tratando de sugerir es que si estás usandoDropbox empresarial RSAy autenticación RSA, podría intentar usar dropboxd with RSA key
(el demonio dropboxd es de código cerrado, no puedo verificar el código fuente si la funcionalidad está ahí y probablemente la mejor solución sea preguntar directamente a dropbox.com).
Si eso es posible, solo entonces importe el RSA key
archivo atiburón de alambrepara ver lo que se está transfiriendo actualmente.