Guten Abend zusammen,
mit 'shutil.copy2' kopiere ich Dateien von der Festplatte des Computers auf eine USB-Platte. Die Funktion ist vorhanden, allerdings wird in den Eigenschaften der kopierten Datei als Erstelldatum das aktuelle Kopierdatum und nicht das ursprüngliche Erstelldatum der Datei angezeigt (so wie auf der Festplatte des Computers vermerkt ist). Ich verwende Windows 10 2004 und Python 3.5.1. Mit diesem Skript sollen Daten gesichert werden. Kann mir jemand sagen, woran das liegt und welche Auswirkungen das ggf. hat? Gibt es vielleicht eine andere Möglichkeit die Dateien so zu kopieren, dass auch das Erstelldatum und nicht nur das Geändertdatum gleich bleiben?
Vielen Dank und einen schönen Feiertag.
snowflake
Datum bei Kopieren einer Datei beibehalten
- noisefloor
- User
- Beiträge: 3882
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
AFAIK geht das nicht, also unter Win zumindest. Lt. roter Hinweisbox in der Python Doku geht unter Win auch der Besitzer der Datei verloren. Was für eine Datensicherung u.U. auch suboptimal ist. Da brauchst du wohl ein anderes Programm.
BTW: Python 3.5 ist seit September 2020 EOL. Du solltest auf ein neueres Python wechseln.
Gruß, noisefloor
AFAIK geht das nicht, also unter Win zumindest. Lt. roter Hinweisbox in der Python Doku geht unter Win auch der Besitzer der Datei verloren. Was für eine Datensicherung u.U. auch suboptimal ist. Da brauchst du wohl ein anderes Programm.
BTW: Python 3.5 ist seit September 2020 EOL. Du solltest auf ein neueres Python wechseln.
Gruß, noisefloor
Woran das liegt: Das ist ein Windows-Ding. Beim Kopieren wird die Creation-Time nicht mitkopiert. Also nie. Das liegt nicht an der Funktion in Python. Auch wenn du eine Datei im Explorer kopierst, wirst du das verhalten bemerken. Die Python-Dokumentaion zählt daher auch wie folgt auf: "Copy the permission bits, last access time, last modification time, and flags from src to dst." Keine Creation-Time.
Und den Hinweis aus dem Beitrag von Noisefloor nicht vergessen.
Grundsätzlich kannst du das aber nachbilden. Möchtest du auch den Owner der Datei behalten?
Und den Hinweis aus dem Beitrag von Noisefloor nicht vergessen.
Grundsätzlich kannst du das aber nachbilden. Möchtest du auch den Owner der Datei behalten?
Code: Alles auswählen
import shutil
import os.path
from ctypes import windll, wintypes, byref
def win_copy2(src, dst, follow_symlinks=True):
""" Uses shutil.copy2 but also set the creation time for
dst to the creation time of src.
Source: https://stackoverflow.com/questions/4996405/
"""
dst = shutil.copy2(src, dst, follow_symlinks=follow_symlinks)
creation_unix = os.path.getctime(src)
timestamp_base = int((creation_unix * 10000000) + 116444736000000000)
creation_windows = wintypes.FILETIME(timestamp_base & 0xFFFFFFFF,
+timestamp_base >> 32)
file_handle = windll.kernel32.CreateFileW(dst, 256, 0, None, 3, 128, None)
windll.kernel32.SetFileTime(file_handle, byref(creation_windows), None, None)
windll.kernel32.CloseHandle(file_handle)
return dst
Guten Morgen zusammen,
vielen Dank für die Rückmeldungen.
@noisefloor:
Viele Grüße
snowflake
vielen Dank für die Rückmeldungen.
@noisefloor:
Was meinst Du damit? Der Eigentümer wäre mir nicht so wichtig.Grundsätzlich kannst du das aber nachbilden. Möchtest du auch den Owner der Datei behalten?
Viele Grüße
snowflake
- noisefloor
- User
- Beiträge: 3882
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Wenn du eine Sicherung machst, dann aber alle Dateien dem Nutzer gehören, der die Sicherung gemacht hat, könnte es nach dem Rückspielen einer Sicherung halt passieren, dass der ursprüngliche Besitzer die Datei z.B. nicht mehr Editieren / Speichern kann. Was ungünstig wäre.
Gruß, noisefloor
Dateien haben einen Besitzer. Unter Linux sind daran auch Rechte gekoppelt. Bei Windows weiß ich das nicht genau, was da alles dran hängt, dazu benutze ich Windows zu wenig.Was meinst Du damit? Der Eigentümer wäre mir nicht so wichtig.
Wenn du eine Sicherung machst, dann aber alle Dateien dem Nutzer gehören, der die Sicherung gemacht hat, könnte es nach dem Rückspielen einer Sicherung halt passieren, dass der ursprüngliche Besitzer die Datei z.B. nicht mehr Editieren / Speichern kann. Was ungünstig wäre.
Gruß, noisefloor