Bir dosyanın kopyalandığı veya bir klasöre taşındığı tarihlere güvenmenin bir yolu yoktur. Windows dosya sistemlerinde, sürücülerde, ağ paylaşımlarında vb. Bunları korumayı başarır. Bir linux dosya sunucusunda bir şeyler yapabilir veya insanların FTP veya web tabanlı bir yükleme sistemi kullanarak dosyaları doğrudan kopyalamasını engelleyebilirsiniz.
İnsanların dosyaları yükledikten sonra değiştirememeleri konusunda sorun yaşıyorsanız, ayrı yükleme ve erişim klasörleriniz ve dosyaları bunlar arasında taşıyarak yeniden tarihlendiren bir komut dosyanız olabilir. Ancak, insanların dosyaları doğrudan değiştirmesini istediğiniz gibi görünüyor.
Yani basit, eğer biraz huysuzsa, tarihlerle uğraşmak olacaktır. İki senaryo yazardım:
Saatlik Tarih Değiştirici komut dosyası
Bir betiğin saatte bir kez, tercih ettiğiniz dilde çalıştırılmasını sağlayın:
- Son 20 yıl içinde değiştirilmiş bir dosyaya bakar.
- Böyle bir dosyayı bulduğunda, değiştirildiği tarihi bugün eksi 20 yıl olarak değiştirin.
Powershell'de şöyle görünecektir:
$path = "D:\test"
$today = Get-Date
$before = $today.AddDays(-7300) #356*20 days
Get-ChildItem -Recurse -Path $path | foreach {
if ($_.LastWriteTime -gt $before) {
Write-Host $_.Name
$_.LastWriteTime = $before
}
}
Bu komut dosyasını bugün (27 Mayıs) çalıştırmak, tüm dosyaların değiştirilme tarihini 1 Haziran 1994'e ayarlar - tam olarak 356 * 20 gün önce. Yalnızca $ önce değerinden daha yeni dosyaları değiştirdiği için geçmişte ayarlamış olduğu dosyalara dokunmaz.
Temizleme Betiği
Temizleme betiği her gece çalışır ve:
- Değiştirilme tarihi "20 yıl ve X gün önce" olan dosyaları ara
- Onları sil
Bu bölüm için komut dosyası yazmam - belirli bir tarihten daha eski dosyaları silmeyi başarabilecek birçok yardımcı program var, hangisini seçerseniz seçin. Önemli olan 7300 + X günlük dosyaları aramaktır, burada X en son değiştirilmelerinden bu yana saklamak istediğiniz gün sayısıdır.
Avantajları
Bunun diğer cevaplara göre birkaç avantajı vardır:
- Birisi dosyayı değiştirirse zamanlayıcı sıfırlanır.
- Dosyaları işaretlemek için NTFS alternatif akışlarına gerek yoktur (dosya taşınırken korunur, bu nedenle değiştirilen dosyanın erken silinmesine neden olabilir)
- Herhangi bir performans etkisi varsa minimum düzeyde olmalıdır. Bir veritabanı veya dosya adları ve / veya karma listesi tutmaya gerek yoktur.
- Komut dosyaları çalıştırılamazsa hiçbir şey korkunç şekilde kırılmaz. Tarihi güncellemek için servis veya sürekli çalışan bir program gerekmez. Sadece birkaç zamanlanmış görev. Yeni dosyaları izlemeye ve son değiştirilme zamanlarını şu an için güncellemeye dayanan çözümler, hizmet başarısız olursa veya yarış durumuna girerse yeni dosyaları silebilir.
Görebildiğim tek sorun, insanların en son 20 yıl önce değiştirilmiş bir dosyayı açılan klasöre kopyalayıp kopyalamaması. Bence çoğu senaryoda, bu çok fazla bir sorun değildir, ancak ortaya çıkabilir.