Wird 7zip in eine temporäre Datei extrahiert und die temporäre Datei dann in das eigentliche Ziel umbenannt?


1

Ich stelle diese Frage, weil ich in der Lage sein möchte, ein Archiv zu entpacken, das möglicherweise auch das Programm enthält, das 7zip aufruft, um das Archiv zu entpacken. Unter Linux / UNIX kann eine Datei gelöscht oder umbenannt werden, während sie verwendet wird. Unter Linux / UNIX kann sie jedoch nicht zum Schreiben geöffnet werden.

Antworten:


2

Die Antwort lautet ja und nein.

Mit dem Befehl extract für 7zip sollte keine temporäre Datei erstellt werden. Dies geschieht jedoch unter Windows, wenn Windows Explorer per Drag & Drop verwendet wird (aus der Dokumentation unter http://www.7-zip.org/faq.html , ctl-f search for temp).

Sie arbeiten jedoch unter Linux.

Um 100% sicher zu sein, dass dies unter Linux nicht passiert, habe ich ein großes Archiv erstellt und dann extrahiert und das Programm über strace ausgeführt:

strace -a88 - 7z und byob.7z 2> & 1

Ich sah nur die vorhandenen Dateien im aktuellen Arbeitsverzeichnis, die vor dem Überschreiben nicht verknüpft waren, und die einzigen Dateien, auf die zugegriffen wurde, waren Dateien im aktuellen Arbeitsverzeichnis.

Bitte testen Sie selbst, ob ich etwas verpasst habe.

Ich hoffe das hilft dir.


Ich habe das Gleiche getan, konnte aber nicht feststellen, ob der ursprüngliche Dateiname abgeschnitten wurde und einen Puffer nach dem anderen vergrößerte oder ob er in eine temporäre Datei entpackt und dann auf das Ziel verschoben / umbenannt wurde. Letzteres scheint eine bessere Programmierpraxis zu sein - wenn das Entpacken fehlschlägt, hätte es zumindest keine einwandfreie Datei zerstört.
Gary Stampa

0

Ihre Frage file1bezieht sich auf eine ausführbare Datei (oder ein Skript) , die einen Mechanismus aufruft, der eine neue Datei erstellt file1(an derselben Stelle).

Nach dem, was ich über Dateisysteme unter Unix verstehe, erfordert dies eine Sperrung, file1solange es geöffnet ist (zur Ausführung). In diesem Fall wird das Original file1durch den Clobber nicht mehr verknüpft, aber da es geöffnet ist, wird es nicht wirklich entfernt. Es belegt jedoch nicht mehr den Namen file1in diesem Verzeichnis. Das Neue file1wird an einem separaten Ort erstellt (unter Verwendung des richtigen Namens). Wenn das ältere file1Programm die Ausführung beendet und beendet, wird es gelöscht. Sie sollten jedoch mit dem neuen file1Vorhandenen belassen werden .

Einschränkung: Dies ist größtenteils eine Vermutung, die auf meinem Teilwissen basiert. Vielleicht wird es jemand hier mit mehr Dateisystemkonzepten bestätigen oder korrigieren. In der Zwischenzeit schlage ich vor, dass Sie diese Antwort nur als theoretische Antwort betrachten und Ihre Lösungen nicht ohne weitere experimentelle Überprüfung darauf gründen.


Ich habe in den 7zip-Dokumenten und anderswo gesucht, um zu sehen, ob es die Praxis des Programms war, eine temporäre Datei zu erstellen und sie in target umzubenennen. Selbst wenn es heute funktioniert, kann es sein, dass sie morgen keine Codeänderungen vornehmen. Ich gehe jetzt den Quellcode durch.
Gary Stampa
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.