
Das Skript dropbox.py für dropboxd unter Linux gibt den aktuellen Status an:
$ dropbox.py status
Syncing (2,656 files remaining)
Uploading 2,656 files...
Oder Status einer bestimmten Datei oder des aktuellen Ordners:
$ dropbox.py filestatus
Camera Uploads: up to date
Customer Shares: syncing
Aber gibt es eine Möglichkeit zu sehen, welche Datei(en) gerade tatsächlich übertragen werden?
Der Grund für meine Frage ist, dass Dropbox seit Tagen beim Synchronisieren festhängt, aber nicht weiterkommt. Ich vermute, es hängt an einer seltsam großen oder beschädigten Datei fest, und wenn ich sie identifizieren könnte, könnte ich sie entfernen/ignorieren.
Notiz
$ ls -l /proc/7857/fd
Wobei 7857 die PID von Dropbox ist, werden keine Dateien im synchronisierten Pfad angezeigt.
Beachten Sie, dass das Anhalten von dropboxd und die erneute Ausführung mit einem Debugger nicht offenlegen würde, was übertragen wirdJetzt. Das Anhalten und Starten des Daemons führt zu einer Neuindizierung und einem erneuten Start der Synchronisierung. Dies würde wahrscheinlich dazu führen, dass ein anderer Satz von Dateien übertragen wird.
Irgendwelche Vorschläge?
Antwort1
Wenn Sie Linux verwenden, ist es ganz einfach. Während des Synchronisierungsvorgangs können Sie Folgendes tun:
find $HOME/dropbox_sync_dir -type f -exec dropbox.py file status -a '{}' \; | grep 'syncing'
Erklärende Einzelheiten:
find <path> -type f -exec dropbox.py ... '{}' \;
Läuft dropbox.py
auf jeder Datei oder unterhalb des aktuellen Verzeichnisses.
Beachten Sie, dass die Klammern in einfache Anführungszeichen eingeschlossen sind, um zu verhindern, dass sie als Shell-Skript-Interpunktion interpretiert werden. Das Semikolon ist auf ähnliche Weise durch die Verwendung eines Backslashs geschützt, obwohl in diesem Fall auch einfache Anführungszeichen verwendet werden hätten können.
Mehr zuMann findenSeiten
dropbox.py file status -a
von demDropbox-Linux-Client-Handbuch: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 "."
Zu den Aliasnamen gehört „stat“.
| grep 'syncing'
Sucht nach der Zeichenfolge „Synchronisierung“.
Hinweis: Die Endung .py ist nicht zwingend erforderlich. Es sollte ein Alias vorhanden sein. Das Schreiben von „einfach“ dropbox
sollte daher ausreichen.
Erste Bearbeitung– erneute Bearbeitung aufgrund von Pauls Kommentar zu Dropboxd (Daemon) vs. Dropbox.py.
Dies bleibt der wahrscheinlichste Weg, um herauszufinden, was übertragen wird.
Ich werde versuchen, es selbst zu debuggen, wenn ich meine ausstehenden Aufgaben erledigt habe.
Das dropbox.py
Debuggen sollte über pdb
(den Python-Debugger) erfolgen, für weitere Informationen siehePython-Debugger.
Nach Pauls Kommentaren habe ich endlich verstanden, wo der Kern des Problems liegt. Er möchte dieaktuell aufgerufene Dateioder noch besserderjenige, der übertragen wirddurch den Dropbox-Synchronisierungsclient.
Sie können alle vom aktuell genutzten Dropbox-Client verwendeten Dateien finden:
ls -thal /proc/`pgrep dropbox`/fd | egrep -v 'socket:|pipe:|anon_inode|/dev/'
Wenn Sie nichts sehen können, bedeutet das, dass wahrscheinlich etwas mit dem Client nicht stimmt. Ich würde empfehlen,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`
Wenn Sie noch tiefer gehen möchten, können Sie einDebuggerzB
gdb
zu deinerstrace
Sitzung.Wenn Sie mit diesem Prozess nicht vertraut sind, können Sie zum Beispiel diesen nettenPostüber Unix
strace
undgdb
.
Nur eine kurze Hilfe:
Wenn Sie Ihre Ablaufverfolgung mit Folgendem starten strace dropboxd
(die laufende PID wäre 501), schließen Sie sie folgendermaßen an:
$ gdb --quiet
(gdb) attach 501
- Wenn alles andere fehlschlägt, können Sie Ihre Dropbox auf andere Weise synchronisieren:
Verwenden Sie beispielsweise einen anderen CLI-Client wiedbxcli.
Zweite Bearbeitung und vierte Bearbeitung- funktioniert nicht, solange Dropbox eigene private Schlüssel unterstützt.
Antwort vom Dropbox-Support:
Dropbox unterstützt nicht die Erstellung eigener privater Schlüssel.
Mir ist aufgefallen, dass es möglich sein sollte, sogar über ein Netzwerküberwachungstool wie zu überprüfen, was übertragen wird wireshark
.
Da der Dropbox-Client SSL/TSL (oder AES) verwendetDie Dropbox-Sicherheitsarchitekturund Sie sollten den Schlüssel zur Überprüfung haben.
Einzelheiten zur Verwendung wireshare
können Sie in diesem Beispiel prüfen https://wiki.wireshark.org/SSL
oder an Ihren Fall anpassen.SSL/TLS-Client Hello-Verkehr analysieren. Wenn Sie ein Dropbox-Zertifikat haben, können Sie es in Wireshark importieren, um zu sehen, was passiert. (Sicherheitsdetails für Dropbox finden Sie unterWhitepaper zur Dropbox-Sicherheit.
Dritte Bearbeitung und vierte Bearbeitung- Details zur SSL/TSL-Entschlüsselung. (funktioniert nicht, solange Dropbox eigene private Schlüssel unterstützt.)
Antwort vom Dropbox-Support:
Dropbox unterstützt nicht die Erstellung eigener privater Schlüssel.
Im zweiten Editierabschnitt habe ich vorgeschlagen, dass man den SSL-Verkehr per Wireshark einsehen kann. Da Paul meinte, ich würde vorschlagen, man solle den eigentlich hacken DH key exchange
, was nach aktuellem Kenntnisstand nicht möglich ist, möchte ich das gerne richtigstellen.
Ich möchte Ihnen sagen, dass Sie, wenn SieDropbox Business RSAund RSA-Authentifizierung könnten Sie versuchen, Folgendes zu verwenden dropboxd with RSA key
(der Daemon Dropboxd ist Closed Source, ich kann den Quellcode nicht überprüfen, ob die Funktionalität vorhanden ist, und die beste Lösung besteht wahrscheinlich darin, dropbox.com direkt zu fragen).
Wenn das möglich ist, importieren Sie RSA key
dieWiresharkum zu sehen, was aktuell übertragen wird.