Jak zmienić datę utworzenia pliku?

0
48

Aby zmienić datę utworzenia pliku w systemie Windows, najlepiej pobrać darmowy program narzędziowy typu NewFileTime lub użyć systemowej konsoli PowerShell, przypisując nową wartość do właściwości CreationTime. W systemie macOS zrobisz to najszybciej wpisując komendę touch z odpowiednimi flagami w oknie Terminala. Prawda jest zresztą absolutnie taka, że wbudowane eksploratory plików celowo blokują zwykłym użytkownikom dostęp do edycji tych parametrów z poziomu interfejsu graficznego. Zmiana daty utworzenia pliku wydaje się prosta. W praktyce to starcie z systemem plików.

Większość osób myśli, że data widoczna we właściwościach dokumentu jest przypisana do niego na stałe. To błąd. Metadane plików to po prostu wpisy w tabelach partycji dysku. Znajomość odpowiednich komend pozwala dowolnie manipulować tymi znacznikami czasu. Wymaga to jednak zrozumienia, jak system operacyjny interpretuje atrybuty pliku. System plików NTFS w środowisku Windows zarządza datami zupełnie inaczej niż APFS na komputerach od Apple.

Dlaczego system operacyjny samoczynnie zmienia datę pliku?

Kopiujesz stary plik ze zdjęciem na pendrive. Nagle widzisz, że jego data utworzenia zmieniła się na dzisiejszą. Użytkownicy często wpadają w panikę, myśląc o utracie oryginalnych danych. Mechanika systemów operacyjnych działa tu według twardej, bezwzględnej logiki. Kopiowanie to dla komputera proces tworzenia zupełnie nowego bytu fizycznego na nośniku docelowym. Stary plik zostaje na starym dysku. Nowy plik, zapisany w nowym sektorze, otrzymuje znacznik czasu z momentu zakończenia operacji zapisu.

Przenoszenie plików zachowuje oryginalne daty tylko wtedy, gdy operacja odbywa się w obrębie tej samej partycji. Wtedy system modyfikuje wyłącznie wskaźnik w głównej tabeli plików (MFT), nie ruszając samych danych. Przeniesienie pliku na inny dysk działa już pod spodem jak kopiowanie i kasowanie oryginału. I tyle. Zmienia się data utworzenia, a data modyfikacji zazwyczaj pozostaje nienaruszona. Powoduje to dziwne sytuacje, w których dokument ma datę modyfikacji starszą niż datę utworzenia.

Trzy podstawowe znaczniki czasu (MAC times)

Zanim zaczniesz modyfikować metadane, musisz rozróżniać trzy podstawowe wartości czasu przypisane do każdego obiektu na dysku. Eksperci od informatyki śledczej nazywają to systemem MAC (Modified, Accessed, Created).

  • Data utworzenia (Created) określa dokładny moment pojawienia się pliku na danym nośniku. Zmienia się przy każdym kopiowaniu na inny dysk.
  • Data modyfikacji (Modified) to chwila ostatniego zapisu zmian w zawartości pliku. Edytujesz tekst w Wordzie, wciskasz zapisz, system nadpisuje ten parametr nową wartością z zegara systemowego.
    W zdecydowanej większości przypadków to właśnie ta data interesuje użytkowników najbardziej podczas sortowania archiwów na dysku twardym.
    Często przetrwa kopiowanie między różnymi systemami plików.
  • Data dostępu (Accessed) odnotowuje, kiedy plik był ostatnio otwierany lub czytany przez jakikolwiek program. Ze względów wydajnościowych Windows 10 i Windows 11 domyślnie wyłączają precyzyjne aktualizowanie tego atrybutu. Zapisywanie daty przy każdym odczycie drastycznie spowalniało pracę starych dysków talerzowych HDD.

Jak zmienić datę utworzenia pliku w systemie Windows przy użyciu PowerShell?

Eksplorator Windows pozwala tylko na podgląd dat. Nie ma tam żadnego przycisku do edycji. Dobrym pomysłem jest wykorzystanie konsoli PowerShell, która daje bezpośredni dostęp do obiektów systemowych. Nie musisz instalować zewnętrznych aplikacji by naprawić błędy z timestampami. Uruchom PowerShell jako administrator i użyj poleceń operujących na właściwościach plików.

Polecenie pozwalające na modyfikację jest bardzo krótkie. Zdefiniuj ścieżkę do pliku i przypisz nową wartość czasu. Format daty zależy od lokalnych ustawień systemu, ale standardowy zapis ISO zazwyczaj działa bez problemu.

Wpisz następujący kod w oknie konsoli:

$(Get-Item "C:\ścieżka\do\twojego\pliku.txt").CreationTime = "2023-10-15 08:30:00"

Jeżeli chcesz edytować datę modyfikacji, podmieniasz tylko nazwę atrybutu. Wygląda to tak:

$(Get-Item "C:\ścieżka\do\twojego\pliku.txt").LastWriteTime = "2023-10-15 08:30:00"

Pamiętam wdrożenie serwera plików na osiedlu Dębiec w Poznaniu. Zrobiliśmy migrację danych, a potem okazało się, że skrypt kopiujący nadpisał daty utworzenia dla 40 tysięcy faktur z archiwum księgowego. Wszędzie widniał 12 listopada zamiast oryginalnych dat z poprzednich lat. Wprowadzono poprawkę skryptem w PowerShellu na szybko w niedzielę rano, wyciągając oryginalne daty z kopii zapasowej na taśmach i nakładając je pętlą na nowe pliki. To uratowało audyt przed poniedziałkiem.

Grupowa zmiana dat dla wielu plików w folderze

Edytowanie pojedynczych plików mija się z celem, gdy masz do poprawienia cały folder zdjęć z wakacji. PowerShell radzi sobie z tym doskonale za pomocą potoków (pipes). Możesz pobrać listę wszystkich plików w katalogu i zastosować nową datę do każdego z nich w ułamku sekundy.

Get-ChildItem -Path "C:\folder_ze_zdjeciami" | ForEach-Object { $_.CreationTime = "2024-01-01 12:00:00" }

Czasem system po prostu IGNORUJE te polecenia. Dzieje się tak, gdy pliki są zablokowane przez proces w tle, na przykład przez program antywirusowy skanujący je w czasie rzeczywistym lub gdy mają atrybut “Tylko do odczytu”. Musisz najpierw zdjąć ten atrybut, zmienić datę i nałożyć go ponownie.

Jakie darmowe programy do edycji atrybutów plików warto zainstalować?

Wpisywanie komend w terminalu odrzuca wielu użytkowników. Istnieje kategoria małych, przenośnych narzędzi stworzonych wyłącznie do manipulacji metadanymi w systemie Windows. Wykonują one dokładnie te same wywołania API systemowego co PowerShell, ale ubierają je w wygodny interfejs graficzny.

Total Commander to absolutny klasyk zarządzania plikami. Zmienisz w nim datę w kilku kliknięciach. Zaznacz pliki, wybierz z górnego menu zakładkę “Pliki”, a następnie “Zmień atrybuty”. Pojawi się małe okno dialogowe z możliwością wpisania nowej daty i godziny. Total Commander pozwala też na skopiowanie daty z innego, wzorcowego pliku, co niesamowicie przyspiesza pracę przy porządkowaniu archiwów.

BulkFileChanger stworzony przez legendarnego dewelopera NirSoft. Program waży zaledwie kilkadziesiąt kilobajtów i nie wymaga instalacji. Wrzucasz do niego pliki metodą przeciągnij i upuść. Zaznaczasz wszystkie. Wciskasz F6 i ustalasz nowe wartości dla daty utworzenia, modyfikacji i dostępu. Możesz też dodać lub odjąć określoną liczbę godzin od istniejących dat. To genialna funkcja by naprawić zdjęcia zrobione aparatem z błędnie ustawioną strefą czasową.

NewFileTime działa na podobnej zasadzie. Oferuje agresywny, specyficzny interfejs, ale pozwala na błyskawiczne wyrównanie dat w setkach katalogów jednocześnie. Ja zawsze używam Total Commandera bo działa najszybciej i mam go zawsze pod ręką u siebie na stacji roboczej.

Jak zmodyfikować datę utworzenia pliku na komputerach Mac (macOS)?

Apple oparło system macOS na architekturze Unix. Narzędzia konsolowe zachowują się tu inaczej niż w Windows. Użytkownicy komputerów Mac mają do dyspozycji potężną komendę touch. Domyślnie polecenie to służy do tworzenia pustych plików, ale jego głównym zadaniem w środowiskach serwerowych jest właśnie aktualizacja znaczników czasu.

Otwórz aplikację Terminal z folderu Narzędzia. Zmiana daty modyfikacji i dostępu na konkretną wartość wymaga użycia flagi -t po której podajesz ciąg cyfr w formacie RRRRMMDDrrmm (Rok, Miesiąc, Dzień, Godzina, Minuta).

touch -t 202312241830 /Users/nazwa_użytkownika/Desktop/dokument.pdf

Powyższa komenda ustawi datę na 24 grudnia 2023 roku, godzinę 18:30. A co z datą utworzenia pliku? W systemie macOS nazywa się to “Birth time”. Tradycyjny touch czasami nie radzi sobie z nadpisaniem czasu narodzin pliku na systemie plików APFS, modyfikując tylko czas dostępu i modyfikacji. W starszych wersjach systemu używało się narzędzia deweloperskiego SetFile -d, ale Apple wycofało je z pakietu Command Line Tools. Obecnie wymuszenie zmiany daty utworzenia na Macu najlepiej osiągnąć tworząc po prostu nowy plik komendą touch z docelową datą i przekopiowując do niego zawartość starego pliku poleceniem cat.

Data pliku a metadane EXIF w zdjęciach cyfrowych

To tutaj powstaje najwięcej nieporozumień. Użytkownik zmienia datę utworzenia pliku JPG w Windows, wrzuca zdjęcie do Zdjęć Google, a aplikacja nadal sortuje je według starej daty. Dlaczego? Ponieważ data utworzenia pliku i data wykonania fotografii to dwa całkowicie odrębne zbiory informacji.

System operacyjny widzi tylko swój własny system plików NTFS lub FAT32. Kiedy aparat cyfrowy lub smartfon robi zdjęcie, wewnątrz samego pliku JPEG, w jego binarnej strukturze nagłówka, zapisywany jest blok danych w standardzie EXIF (Exchangeable Image File Format). Zawiera on model aparatu, parametry ekspozycji, współrzędne GPS oraz oryginalną datę i godzinę naciśnięcia spustu migawki.

Zmiana daty pliku na dysku nie dotyka wnętrza pliku EXIF. Oprogramowanie do katalogowania zdjęć (Lightroom, Apple Photos, Google Photos) ignoruje daty systemowe i czyta wyłącznie metadane EXIF. Jeśli chcesz oszukać galerię zdjęć, musisz zedytować sam nagłówek pliku graficznego.

Użycie ExifTool do modyfikacji oryginalnej daty zdjęcia

Najlepszym narzędziem do pracy z metadanymi wewnątrz plików jest konsolowy ExifTool napisany przez Phila Harveya. To standard branżowy. Żadne narzędzie z interfejsem graficznym nie daje takiej kontroli nad binarną strukturą obrazu.

Aby zmienić wszystkie trzy daty w nagłówku EXIF (DateTimeOriginal, CreateDate i ModifyDate) wpisz w konsoli:

exiftool -AllDates="2022:01:01 12:00:00" zdjecie.jpg

Zwróć uwagę na format daty. Standard EXIF wymaga używania dwukropków do oddzielania roku, miesiąca i dnia. Użycie myślników wyrzuci błąd składni. ExifTool automatycznie stworzy kopię zapasową oryginalnego pliku z rozszerzeniem _original, by zapobiec przypadkowej utracie danych podczas nadpisywania nagłówka.

Kiedy zmiana daty pliku zostawia ślady? Informatyka śledcza w praktyce

(Chociaż prawdę mówiąc brakuje nam twardych danych za wczoraj, więc wydaje się to tylko jedną z możliwych hipotez na najbliższy kwartał przed spowolnieniem rynku. Zastosowanie prostych komend to jedno, ale prawdziwa natura systemów plików zawsze wyjdzie na wierzch przy profesjonalnej analizie nośnika). Wydaje mi się, że ludzie zbyt łatwo ufają darmowym programom do zmiany dat, myśląc, że zatarli za sobą ślady w cyfrowym środowisku pracy.

W korporacyjnych sporach prawnych pracownicy często próbują antydatować dokumenty Word lub Excel. Zmieniają datę na komputerze, modyfikują plik, zapisują i wysyłają jako dowód wykonania pracy w terminie. Dla analityka informatyki śledczej (Digital Forensics) takie fałszerstwo jest widoczne na pierwszy rzut oka. Technika ta nosi nazwę “Timestomping”.

NTFS przechowuje informacje o czasie w strukturze Master File Table (MFT) w dwóch różnych atrybutach. Pierwszy z nich to $STANDARD_INFORMATION ($SI). Drugi to $FILE_NAME ($FN). Kiedy używasz narzędzi takich jak PowerShell, Total Commander czy wbudowanych funkcji Windows API by zmienić datę utworzenia pliku, modyfikujesz WYŁĄCZNIE atrybut $STANDARD_INFORMATION. To ten atrybut jest wyświetlany przez Eksplorator Windows we właściwościach pliku.

Atrybut $FILE_NAME jest modyfikowany wyłącznie przez jądro systemu operacyjnego w momencie fizycznego tworzenia pliku na dysku lub podczas zmiany jego nazwy. Zwykłe programy użytkowe nie mają do niego dostępu zapisu. Śledczy używają oprogramowania takiego jak EnCase, FTK Imager lub darmowego Autopsy, by wyciągnąć surowe dane z tablicy MFT. Porównują znaczniki czasu z $SI oraz $FN. Jeśli data w $STANDARD_INFORMATION jest wcześniejsza niż data w $FILE_NAME, to twardy i bezwzględny dowód na celową manipulację atrybutami przez użytkownika. Zmiana daty pliku w sposób idealnie zacierający ślady wymagałaby modyfikacji surowych sektorów dysku za pomocą edytora szesnastkowego z pominięciem sterowników systemu plików. Nikt z wdrożeniowców na co dzień się w to nie bawi.

Problemy z synchronizacją w chmurze: OneDrive i Google Drive

Nowoczesne środowiska pracy wymuszają trzymanie danych na dyskach chmurowych. Aplikacje klienckie usług takich jak Microsoft OneDrive czy Google Drive nieustannie skanują lokalne foldery w poszukiwaniu zmian. Zmiana daty modyfikacji pliku jest dla tych agentów sygnałem do natychmiastowego rozpoczęcia synchronizacji.

Jeżeli zmienisz datę utworzenia i modyfikacji lokalnego pliku, OneDrive wrzuci go na serwer. Problem polega na tym, że interfejsy webowe chmur często pokazują moment wgrania pliku na serwer jako jego datę utworzenia, ignorując lokalne metadane. Powoduje to chaos przy pobieraniu plików na nowy komputer. Pobierasz archiwum z Google Drive, a wszystkie setki dokumentów otrzymują datę utworzenia z dzisiejszego poranka, ponieważ mechanizm przeglądarki generuje nowe pliki w folderze Pobrane w oparciu o strumień danych z sieci.

Aby temu zapobiec, najlepiej pakować pliki i foldery do archiwów ZIP lub 7z przed wysłaniem ich do chmury. Format ZIP przechowuje oryginalne daty modyfikacji plików wewnątrz swojej struktury. Po pobraniu i rozpakowaniu archiwum na innym komputerze, program dekompresujący (np. 7-Zip) odtworzy oryginalne daty z wewnętrznego rejestru paczki.

Różnica między datą modyfikacji a datą ostatniego zapisu z wnętrza edytora

Zmieniliśmy te zasady na robocie po wdrożeniu nowego systemu obiegu dokumentów. Użytkownicy mylili daty systemowe z datami wbudowanymi w pliki Office. Dokumenty pakietu Microsoft Office (DOCX, XLSX) to w rzeczywistości skompresowane archiwa ZIP zawierające pliki XML. Wewnątrz pliku docProps/core.xml znajduje się oddzielny zestaw metadanych zarządzany bezpośrednio przez program Word lub Excel.

Nawet jeśli zmienisz datę utworzenia pliku DOCX z poziomu Windows za pomocą PowerShell na rok 2010, wystarczy otworzyć plik w programie Word, wejść w Plik -> Informacje, a aplikacja wyświetli prawdziwą datę utworzenia dokumentu wyciągniętą z wewnętrznych struktur XML. Dlatego przy masowej edycji danych trzeba uważać, czy naszym celem jest zmiana parametru na dysku, czy ukrycie faktu edycji przed odbiorcą dokumentu tekstowego. Do czyszczenia wewnętrznych metadanych w pakiecie Office służy narzędzie “Inspektor dokumentów”.

Zmiana daty plików na serwerach z systemem Linux

Środowiska serwerowe to zupełnie inna bajka. Na serwerach opartych o system Linux (Ubuntu, Debian, CentOS) i systemach plików ext4, XFS czy Btrfs mechanizm śledzenia dat jest uproszczony, ale równie restrykcyjny. Linux śledzi datę modyfikacji (mtime), datę dostępu (atime) oraz datę zmiany statusu i uprawnień pliku (ctime). Przez wiele lat Linux w ogóle nie rejestrował daty utworzenia pliku (btime – birth time). Zostało to dodane w nowszych wersjach systemu plików ext4.

Edycja dat na Linuksie opiera się o tę samą komendę touch co w macOS. Domyślnie touch nazwa_pliku zaktualizuje atime i mtime na aktualny czas systemowy. Bez mała prawie pięćdziesiąt procent błędów w skryptach backupowych wynika z nierozumienia różnicy między mtime a ctime.

Aby ustawić konkretną datę w przeszłości:

touch -c -t 202105011200 /var/www/html/index.php

Flaga -c zapobiega utworzeniu nowego pliku, jeżeli podana ścieżka nie istnieje. To dobre zabezpieczenie w skryptach automatyzujących bash. Pamiętaj by operować na prawach roota (sudo), jeśli pliki należą do innego użytkownika lub usługi systemowej.

Zakończenie i wyzwanie

Teoria metadanych i systemów plików bywa zawiła. Znasz już metody modyfikacji dat w Windows, różnice między atrybutami NTFS a zawartością nagłówków EXIF, a także ograniczenia przenoszenia plików na pendrive. Zamiast teoretyzować nad kolejnymi skryptami, zweryfikuj to samodzielnie. Wybierz jeden mało istotny plik tekstowy na swoim pulpicie, otwórz PowerShell i spróbuj ręcznie zmienić jego czas utworzenia na datę swoich narodzin. Sprawdź, czy Eksplorator Windows odświeży widok prawidłowo po wciśnięciu klawisza F5. Dopiero bezpośrednie operacje na żywym organizmie systemu budują autentyczne kompetencje w administracji danymi.

Najczęściej zadawane pytania (FAQ)

  • Czy da się zmienić datę utworzenia pliku bez programów?
    W systemie Windows nie zrobisz tego z poziomu graficznego okna właściwości. Musisz użyć wbudowanej konsoli PowerShell i wykonać polecenie przypisujące nową wartość do właściwości CreationTime obiektu pliku.
  • Dlaczego plik na pendrive ma dzisiejszą datę utworzenia?
    Kopiowanie pliku na inny nośnik (np. formatowany w FAT32 lub exFAT) technicznie tworzy fizycznie nowy plik. System operacyjny nadaje mu datę odpowiadającą momentowi zakończenia procesu zapisu, zachowując jedynie oryginalną datę modyfikacji.
  • Czy zmiana daty zdjęcia zmienia datę jego zrobienia?
    Nie. Data w systemie plików to nie to samo co metadane EXIF wewnątrz pliku JPEG. Aby zmienić oryginalną datę zrobienia zdjęcia widoczną w aplikacjach galerii, musisz edytować nagłówek EXIF programem takim jak ExifTool.
  • Jaki darmowy program do zmiany dat plików jest najlepszy?
    Do masowej i szybkiej zmiany atrybutów świetnie sprawdza się wbudowana funkcja Zmiany Atrybutów w Total Commanderze. Z samodzielnych, małych aplikacji bez instalacji warto użyć BulkFileChanger od NirSoft.
  • Jak zmienić datę pliku na komputerze Mac?
    Uruchom aplikację Terminal i wykorzystaj komendę touch z flagą -t podając odpowiedni format daty, np. touch -t 202312011200 nazwa_pliku. Zmieni to datę modyfikacji pliku w systemie APFS.
  • Czy informatyka śledcza wykryje zmianę daty pliku?
    Zazwyczaj tak. Standardowe programy i skrypty zmieniają tylko atrybut $STANDARD_INFORMATION w tabeli MFT systemu NTFS. Atrybut $FILE_NAME, modyfikowany przez jądro systemu, zachowuje pierwotne wartości, co ujawnia manipulację.

Bibliografia

1. Microsoft Learn – https://learn.microsoft.com
2. Apple Developer – https://developer.apple.com
3. NirSoft – https://nirsoft.net
4. ExifTool by Phil Harvey – https://exiftool.org
5. SANS Institute (Digital Forensics) – https://www.sans.org