Wie werden normalerweise die Dateien in den Papierkorb verschoben oder gelöscht?

510
Natesh bhat

Folgendes habe ich ausprobiert:

  • Wenn eine Datei gelöscht wird, wird sie in den Ordner "Papierkorb / Dateien" kopiert. Anschließend wird sie gelöscht und ihre Informationen werden im Papierkorb / in Nautilus gespeichert.
  • Also dachte ich, wenn ich die Datei nicht lesbar mache, wird sie möglicherweise nicht im Papierkorb angezeigt, da sie nicht kopiert werden kann. Aber als ich es ausprobierte, landete es immer noch im Müll.
  • Ich kam zu dem Schluss, dass die Datei direkt in das Papierkorbverzeichnis verschoben wird.

Hier ist meine Frage,

Ich versuche, dieses Verhalten durch Programmierung in Python nachzuahmen. Aber ich möchte zuerst einige Überprüfungen durchführen und dann die Datei in den Papierkorb kopieren, bevor Sie den Befehl rm ausführen.

Ich nehme die rm-Befehlszeichenfolge vom Benutzer, prüfe sie, kopiere die Datei in den Papierkorb und führe dann den rm-Befehl aus. Ich möchte die Datei nicht direkt in den Papierkorb verschieben. Wenn ich jedoch nur die Datei kopiere, wird mir der Fehler nur wegen der Leseberechtigung verweigert. Wie löse ich das? Irgendwelche Arbeit?

0
Um eine Datei zu kopieren, müssen Sie sie lesen können, aber um sie zu verschieben, benötigen Sie Schreibzugriff auf die Quell- und Zielverzeichnisse, ohne dass die zu verschiebende Datei gelesen werden muss. Sie können `os.remame ()` wie hier [https://stackoverflow.com/a/2491232/5164855] beschrieben verwenden. AFH vor 6 Jahren 0

2 Antworten auf die Frage

0
Kamil Maciorowski

Ich bin mit Python nicht vertraut. Ich verwende Standard-Unix-Befehle, um meine Gedanken zu veranschaulichen. Übersetzen Sie auf eigene Faust in Python.

Innerhalb eines einzigen Dateisystems, das vernünftig genug ist, mvsollte es atomar sein . Wenn Sie Dateien in zwei Schritten verschieben möchten, dh cp+ rm, müssen Sie sicherstellen cp, dass Sie erfolgreich waren rm. Bei Atomic mvbesteht keine Gefahr, dass die Datei völlig unverletzt ist oder "die Hälfte hier, die Hälfte dort".

Das Wechseln von einem Dateisystem zu einem anderen mit mvist wie cp+ rm; mvWartet, bis die Kopieraufgabe erfolgreich abgeschlossen ist, bevor die Verknüpfung mit der ursprünglichen Datei aufgehoben wird. Es können jedoch immer noch wenige Dinge schief gehen.

Wie AFH kommentierte:

Um eine Datei zu kopieren, müssen Sie sie lesen können, aber um sie zu verschieben, benötigen Sie Schreibzugriff auf die Quell- und Zielverzeichnisse, ohne dass die zu verschiebende Datei gelesen werden muss.

Wahr. Es gibt jedoch eine Möglichkeit, eine Datei innerhalb eines Dateisystems zu "kopieren", ohne sie zu lesen: Erstellen Sie einen Hardlink. Stellen Sie sicher, dass Sie den Unterschied verstehen .

Wenn Sie immer noch in zwei Schritten auf es zu tun bestehen, statt cp+ rmversuchen ln+ rmzuerst. Natürlich müssen Sie sicherstellen, dass lnSie vor Ihnen gearbeitet haben rm. Ein Versuch, eine geräteübergreifende Verknüpfung zu erstellen, schlägt fehl. In diesem Fall sollten Sie auf cp+ zurückgreifen rm(und ich denke, es gibt keine Möglichkeit, dies ohne das Lesen der Datei zu tun).

0
Austin Hemmelgarn

Es ist "nur" eine Umbenennung, wie im Kommentar hervorgehoben.

Es ist jedoch mehr als nur das Verschieben der Datei in den Papierkorb. Außerdem müssen Sie die Metadaten im entsprechenden Format an den entsprechenden Speicherort kopieren. Andernfalls funktioniert das Wiederherstellen der Datei nicht ordnungsgemäß. Weitere Informationen zum aktuellen Ablauf finden Sie in der FD.O / XDG-Papierkorbspezifikation . Beachten Sie, dass so ziemlich alles die optionale Unterstützung für das Ablegen eines Papierkorbverzeichnisses in das Stammverzeichnis von Wechseldatenträgern verwendet, um die Probleme zu vermeiden, die beim Versuch auftreten, Dateien in den Papierkorb zu werfen, auf die Sie keinen Lesezugriff haben, sich aber sonst auf diesem Dateisystem bewegen können.