Saya ingin membuat "Drop Folder" di drive bersama windows yang dapat diakses oleh semua orang. Saya ingin file dihapus secara otomatis jika mereka duduk di folder selama lebih dari X hari.
Namun, sepertinya semua metode yang saya temukan untuk melakukan ini, gunakan tanggal modifikasi terakhir, waktu akses terakhir, atau tanggal pembuatan file.
Saya mencoba menjadikan ini folder tempat pengguna dapat meletakkan file untuk dibagikan kepada seseorang. Jika seseorang menyalin atau memindahkan file ke sini, saya ingin jam mulai berdetak pada titik ini. Namun, tanggal modifikasi terakhir dan tanggal pembuatan file tidak akan diperbarui kecuali seseorang benar-benar memodifikasi file. Waktu akses terakhir terlalu sering diperbarui ... sepertinya hanya membuka direktori di windows explorer akan memperbarui waktu akses terakhir.
Adakah yang tahu solusi untuk ini? Saya berpikir bahwa katalogisasi hash file setiap hari dan kemudian berakhir file berdasarkan hash lebih tua dari tanggal tertentu mungkin menjadi solusi .... tetapi mengambil hash file dapat memakan waktu.
Setiap ide akan sangat dihargai!
Catatan:
Saya sudah melihat cukup banyak jawaban di sini ... melihat ke File Server Resource Monitor, skrip powershell, skrip batch, dll. Mereka masih menggunakan waktu akses terakhir, waktu modifikasi terakhir atau waktu pembuatan ... yang, seperti dijelaskan, tidak sesuai dengan kebutuhan di atas.
tmpwatch
.Jawaban:
Kami menggunakan kombinasi skrip PowerShell dan kebijakan. Kebijakan menentukan bahwa pengguna harus membuat folder di dalam share Drop_Zone dan kemudian menyalin file apa pun yang mereka inginkan ke folder itu. Ketika folder menjadi 7 hari (menggunakan CreationTime), skrip powershell akan menghapusnya.
Saya juga menambahkan beberapa logging ke skrip PowerShell sehingga kami dapat memverifikasi operasi itu dan menyalakan salinan bayangan hanya untuk menyimpan benar-benar tidak kompeten dari diri mereka sendiri.
Berikut ini skrip tanpa semua hal yang dicatat.
sumber
Jika Anda dapat mengasumsikan NTFS Anda bisa menulis kunci (Guid) ke aliran alternatif file. Ditambah tanggalnya, jadi pada dasarnya Anda bisa menyimpan database dalam file.
Informasi lebih lanjut dapat ditemukan di
http://blogs.technet.com/b/askcore/archive/2013/03/24/alternate-data-streams-in-ntfs.aspx
Pada dasarnya Anda dapat menyimpan konten tambahan dalam aliran terpisah yang diberi kode dengan nama khusus.
sumber
Anda bisa menggunakan IO.FileSystemWatcher, yang memungkinkan Anda untuk "menonton" folder untuk file baru yang dibuat. Inilah bagian-bagian yang Anda perlukan untuk membuat ini bekerja.
Variabel-variabel ini mengkonfigurasi jalur untuk ditonton dan filter untuk menyempurnakan file mana yang akan dilacak:
Ini mengatur parameter untuk folder untuk ditonton dan tindakan yang harus dilakukan ketika peristiwa terjadi. Pada dasarnya ini me-reset LastWriteTime pada setiap file seperti yang tertulis:
Acara dapat dibatalkan pendaftarannya jika perlu menggunakan ini:
Terakhir, Anda dapat menjalankan ini sekali sehari untuk membersihkan file lama:
Itu harus menjadi semua yang Anda butuhkan ...
sumber
Sudah lama tapi saya menyiapkan metode yang relatif lurus ke depan untuk mengatasi ini.
Saya akan menyentuh file yang ditambahkan ke direktori drop (dipantau melalui utilitas pemantauan sumber daya) dan mengatur tanggal modifikasi terakhir ke tanggal yang ditambahkan ke folder.
Saya kemudian dapat menggunakan tanggal modifikasi terakhir untuk membersihkan semua file yang perlu dihapus. Ini juga memiliki keuntungan bahwa jika seseorang benar-benar memperbarui file itu akan mengatur ulang hitungan mundur.
sumber
Tidak ada cara untuk mengandalkan tanggal kapan suatu file disalin atau dipindahkan ke folder. Windows mengelola untuk melestarikannya di seluruh sistem file, drive, jaringan berbagi, dll. Anda mungkin dapat menyelesaikan sesuatu dengan server file linux, atau mencegah orang dari menyalin file secara langsung dengan menggunakan FTP atau sistem upload berbasis web.
Jika Anda setuju dengan orang-orang yang tidak dapat memodifikasi file setelah mereka mengunggah, Anda dapat memiliki folder unggahan dan akses yang terpisah, dan skrip yang memindahkan file di antara mereka dan menentukan tanggal kembali. Tapi sepertinya Anda ingin orang dapat memodifikasi file secara langsung.
Jadi solusi sederhana, jika agak hacky, adalah mengacaukan tanggal. Saya akan menulis dua skrip:
Skrip Changer Tanggal Tiap Jam
Buat skrip dijalankan sekali dalam satu jam atau lebih, dalam bahasa pilihan Anda, bahwa:
Dalam PowerShell, akan terlihat seperti ini:
Menjalankan skrip ini hari ini (27 Mei), menetapkan tanggal modifikasi dari semua file menjadi 1 Juni 1994 - tepat 356 * 20 hari yang lalu. Karena hanya mengubah file yang lebih baru dari nilai $ before, itu tidak akan menyentuh file yang telah ditetapkan sebelumnya.
Skrip Pembersihan
Skrip pembersihan akan dijalankan setiap malam, dan:
Saya tidak akan menulis skrip untuk bagian ini - ada banyak utilitas yang dapat menangani menghapus file yang lebih tua dari tanggal yang ditentukan, pilih mana yang Anda suka. Bagian yang penting adalah mencari file yang berumur 7300 + X hari, di mana X adalah jumlah hari yang ingin Anda pertahankan sejak mereka terakhir dimodifikasi.
Keuntungan
Ini memiliki beberapa keunggulan dibandingkan jawaban lain di sini:
Satu-satunya masalah yang bisa saya lihat adalah apakah orang menyalin file yang terakhir diubah 20 tahun yang lalu ke folder drop. Saya pikir dalam sebagian besar skenario, itu tidak mungkin menjadi masalah besar, tetapi bisa muncul.
sumber
Anda dapat memformalkan penambahan file ke drop box melalui halaman web, yang memiliki "unggah" IFRAME. Pengguna kemudian dapat "memposting" file, yang memanggil pekerjaan PHP / ASP di server, yang mengambil file dan menempatkannya di lokasi kerutan. PHP / ASP dapat melakukan sejumlah operasi indeks / analisis.
sumber
Saya akan membuat skrip yang berjalan sebagai tugas yang dijadwalkan setiap lima menit dan melakukan dua hal.
sumber
Ada mekanisme yang ada untuk menandai file, bit Arsip. Sudah ada sejak awal DOS, dan hadir pada FAT dan NTFS.
Pada dasarnya, setiap file akan memiliki bit arsip yang ditetapkan secara default. Jika Anda melihat file dengan bit arsip di folder drop Anda, (1) hapus bit itu dan (2) atur tanggalnya menjadi hari ini. Jika Anda melihat file tanpa bit itu dan dengan tanggal <= 7 hari di masa lalu, hapuslah.
Jika pengguna menulis ke file saat berada di folder drop, bit arsipnya diatur lagi sehingga masa pakainya juga diatur ulang menjadi 7 hari. Ini berlaku file baru, setelah semua.
Anda sekarang dapat menggunakan FileSystemWatcher dengan aman. Masalah apa pun yang dimilikinya (seperti peristiwa duplikat, buffer overflow kehilangan informasi terperinci) tidak lagi menjadi masalah karena informasi yang relevan ada dalam metadata file.
sumber