Apakah mungkin untuk memiliki file yang memiliki tanggal modifikasi sebelum tanggal pembuatannya? Tindakan apa yang akan menyebabkan peristiwa ini terjadi?
Apakah mungkin untuk memiliki file yang memiliki tanggal modifikasi sebelum tanggal pembuatannya? Tindakan apa yang akan menyebabkan peristiwa ini terjadi?
Jawaban:
Pertimbangkan arsip .tar yang diekstrak. Biasanya file yang diekstrak akan memiliki cap waktu modifikasi terakhir yang ditetapkan dari konten arsip (yang biasanya di masa lalu kecuali jika Anda seorang penjelajah waktu). Sejauh menyangkut filesystem, file-file ini baru saja dibuat.
Ada juga utilitas untuk mengubah waktu modifikasi file yang ada, di Linux misalnya ini adalah perintah sentuh .
cp -p
dan hal-hal yang meniru suka rcp -p
dan scp -p
, serta rsync
dengan -t
atau -a
, mengambil modtime dari sumbernya.
Jika Anda membuat file dari awal, itu akan membuat waktu pembuatan "sekarang", dan tanggal modifikasi "sekarang". Sekarang bayangkan menyalin file ini ke drive lain. Windows akan menjaga waktu modifikasi, tetapi waktu penciptaan file yang akan ditetapkan untuk waktu yang Anda menyalin file ke drive yang (yaitu saat berkas dibuat pada yang drive). Sederhana seperti itu.
Ini sebenarnya benar:
Di Windows, sangat mudah untuk mengatur (memalsukan, jika Anda mau) waktu yang dibuat dan dimodifikasi file. Anda tidak perlu mengubah jam komputer; Anda bahkan tidak memerlukan akses admin lokal. Yang Anda butuhkan hanyalah akses tulis ke file yang dimaksud.
Untuk mengatur waktu pembuatan file dengan PowerShell menggunakan SetCreationTime
:
[System.IO.File]::SetCreationTime("C:\path\to\file.ext", (Get-Date "8/8/2088"))
Untuk mengatur waktu terakhir yang dimodifikasi menggunakan SetLastWriteTime
:
[System.IO.File]::SetLastWriteTime("C:\path\to\file.ext", (Get-Date "7/4/1776"))
Di Linux, Anda dapat dengan mudah mengubah waktu file terakhir yang dimodifikasi dengan -d
bendera touch
, seperti yang ditunjukkan dalam jawaban Tanya Ubuntu ini . Sebenarnya tidak ada gagasan tentang tanggal pembuatan untuk file pada sistem file Linux ( bacaan lebih lanjut di Unix & Linux ).
Yang paling penting untuk diperhatikan di sini adalah waktu modifikasi file tidak terlalu spesial - disimpan seperti data lainnya. Tidak ada cara untuk mengetahui kapan data sebenarnya ditulis terakhir, atau dibaca.
Dari sini, kita dapat melihat bahwa selalu mungkin (tidak termasuk media tulis-sekali seperti CD) untuk pergi dan secara langsung memodifikasi bit pada drive yang menyimpan waktu modifikasi terakhir, atau bahkan waktu pembuatan.
Secara lebih praktis, ini juga dapat dilakukan dari dalam sistem operasi umum, seperti yang dicatat oleh jawaban lain. Di Windows, ini disediakan oleh SetFileTime
fungsi WinAPI , dan Anda dapat melakukannya dengan utime
di Linux. Alat-alat suka touch
membangun di atas API ini.
Penggunaan sah yang paling umum untuk API ini adalah dalam menjaga waktu modifikasi, misalnya saat menyalin file, mengekstraknya dari arsip, dll.
Dalam pengalaman saya adalah ketika satu atau lebih komputer telah digunakan untuk memodifikasi file dan salah satunya memiliki waktu sistem yang salah. Tiga penyebab paling umum untuk kesalahan waktu sistem, tanpa urutan tertentu adalah: