2012-04-08 5 views
2

Ich schreibe ein Skript, um Dateien aus einem bestimmten Ordner in meiner Dropbox zu verschieben, wenn sie mit der Synchronisierung fertig sind.Python, Ubuntu: Erhebe ein Ereignis, wenn Dropbox fertig ist Synchronisieren?

Zum Beispiel möchte ich einen Ordner namens "TrashBackup" haben, sobald ich Sachen hineinlege (nachdem die Synchronisierung abgeschlossen ist), nimmt mein Server es auf und verschiebt es aus Dropbox an einen anderen Ort im Dateisystem (Letztendlich lösche ich es von meinem Laptop).

Ich habe pyinotify verwendet, aber das Problem ist, dass ich nicht weiß, wie es zu wissen ist, wenn es synchronisiert wird. Ich könnte am Ende bewegen, bevor eine möglicherweise wirklich große Datei nicht übertragen wird.

Ich habe überlegt, einen Timer zu setzen, um zu sehen, wann das letzte Mal, dass Dateien geändert wurden, und wenn es mehr als 20 Minuten dann gehen Sie voran und Dropbox. Aber es scheint wie eine hackaround. Auch wenn ich 1GB-Dateien übertragen würde, könnte ich mein Glück je nach Dropbox-Geschwindigkeit und meiner lokalen Bandbreitenauslastung versuchen.

Vielleicht sollte ich den .dropbox.cache-Ordner überwachen? Irgendwelche Ideen?

+0

Wie wäre es mit der Dropbox-API? – Acorn

Antwort

2

Warum nicht versuchen, die Dropbox CLI zu verwenden? Es gibt mehrere Methoden, die sich für Sie als nützlich erweisen sollten.

Um Ihr spezifisches Ziel zu erreichen, kann ich mir zwei nützliche Befehle vorstellen: dropbox status und dropbox filestatus. Erstere gibt "Inaktiv" zurück, wenn die Synchronisierung abgeschlossen ist. Letzteres gibt den Synchronisierungsstatus einer oder mehrerer Dateien zurück.

+0

Ich denke, es wird funktionieren, danke! (Ich werde prüfen, ob es im Leerlauf ist, nachdem ein Ereignis abgeschlossen ist, und wenn das der Fall ist, werde ich die Dateien verschieben.) Ich werde warten, ob es noch andere Möglichkeiten gibt. – Andre

+0

Großartig! Ich würde in Erwägung ziehen, eine neue Methode innerhalb von 'dropbox.py' zu erstellen, die auf der Methode' filestatus' basiert. Auf diese Weise können Sie alle möglichen Fälle abdecken (z. B. existiert das Verzeichnis nicht oder Dropbox läuft nicht). Dann könntest du etwas "abstürzen", indem du 'python dropbox.py trashbackup

' nennst. Lass mich wissen wie es geht! –

0

Sie könnten die API (/metadata: https://www.dropbox.com/developers/reference/api#metadata) verwenden, um gelegentlich diesen Ordner abzurufen (z. B. alle 5-10 Minuten), um zu sehen, ob etwas Neues vorhanden ist, und falls dies der Fall ist, führen Sie die Verschiebung wie gewünscht aus. Der Vorteil der API besteht in diesem Fall darin, dass die Datei erst nach der Synchronisierung angezeigt wird. (Die Überwachung von .dropbox.cache wird nicht empfohlen.)

Verwandte Themen