2016-06-06 13 views
1

Ich versuche, ein Google-Laufwerk wie Backup-Programm mit Python, die auf eine Linux-Box sichert, die Sicherung an einem externen Ort tbd. Ich bin dabei ein paar interessante Programmier- und Computerherausforderungen begegnet.Zugriff auf "gesperrte" Dateien für Backup-Programm

Der, an dem ich gerade arbeite, hat mit "gesperrten" Dateien zu tun. Also was meine ich damit? Wenn Sie in Windows 7 eine .txt-Datei erstellen, können Sie sie im Editor (beliebiges Programm) öffnen und gleichzeitig in einem Python-Programm öffnen. Wenn Sie eine Änderung in der TXT-Datei vornehmen und die Änderung speichern, BEVOR Sie sie schließen, können Sie dennoch die Änderungen in Pythmin öffnen und sehen. Ändern Sie nun die Datei in eine DOCX-Windows-Datei und öffnen Sie sie mit Word 2007. Während sie in Word geöffnet ist, können Sie mit in Python nicht darauf zugreifen, bis der Benutzer sie schließt.

Nun, wenn Sie auf Google Drive, der Desktop installieren nicht nur die Web-Variante, können Sie eine .docx-Datei öffnen und ändern. Sobald Sie es speichern, aber vor dem Schließen Google Drive hat bereits die Datei synchronisiert.

Google Drive muss einen niedrigeren Zugriff auf die Datei haben als der einfache Befehl python file.open().

Also hier ist die Frage. Kennt jemand eine Möglichkeit, auf Dateien in Python zuzugreifen, so dass ich nicht auf den Benutzer warten muss, der die Datei schließt.

Edit 1: Lassen Sie mich weiter erklären. Sobald ich eine SQLite-Datenbank erstellt habe, die alle Dateien und Verzeichnisse enthält, werde ich dann die Funktion win32file.ReadDirectoryChangesW() verwenden, um auf Änderungen zu überwachen. Mein Problem rührt von der Tatsache her, dass beim Einrichten der Anwendung der ersten Installation/Ausführung alle Dateien und Dateien katalogisiert werden müssen, die in Windows Office geöffnet sind und nicht katalogisiert werden können. Gibt es einen Weg dahin?

+0

Aber was hast du bisher versucht? Hast du in die win32api geschaut? Haben Sie etwas wie [this] (http://blog.opensecurityresearch.com/2011/10/how-to-acquire-locked-files-from.html) oder andere Dinge gesucht? – Torxed

+0

haben Sie versucht, Word-Dateien über das Netzwerk oder lokal zu öffnen? Es ist ein großer Unterschied. – Stavinsky

+0

Dateien wurden lokal wie im normalen Betrieb des Sicherungsprogramms geöffnet. – NDEthos

Antwort

0

Viele Sicherungstools verwenden Momentaufnahmen. Dann kopieren sie die gesperrte Datei direkt aus dem Snapshot, anstatt sie direkt aus dem Dateisystem zu verarbeiten. Wenn Sie unter Windows sind, sollten Sie überprüfen, Windows VSS, siehe Microsoft documentation für weitere Details. Andernfalls, wenn das Dateisystem, auf dem Sie sich befinden, Snapshots unterstützt, überprüfen Sie auch dessen Dokumentation.

Third-Party-Tools

Sie können das subprocess Python-Modul Tools von Drittanbietern laufen, die Schnappschüsse für Sie brauchen.

Microsoft VSS

Falls Sie es selbst tun Sie Module aus dem Win32-API wie win32com Modul benötigen.

Es gibt auch auf Github ein Projekt, das die Arbeit zu tun scheint: pyshadowcopy

Filesystem Snapshot

Je nach Dateisystem-Funktionen, können Sie Python-Module oder Werkzeuge in dem Sie einen Schnappschuss machen finden.

Verwandte Themen