Saya memiliki direktori, yang berisi ~ 3 juta file dalam subdirektori tertentu pada server Windows 2008. Menghapus file secara manual melalui SHIFT + DEL pada direktori root membutuhkan waktu lama. Apakah ada cara lain untuk melakukan penghapusan dengan cara yang lebih cepat ?
windows
file-management
Cfinley
sumber
sumber
Jawaban:
PERINGATAN: jika Anda memiliki symlink ke direktori maka
del
akan menghapus direktori aktual dan bukan symlink. Berhati-hatilah dengan ini dan jangan jalankan perintah ini kecuali Anda tahu tidak ada symlink di dalam direktori target.Saya secara teratur perlu menghapus banyak file dan direktori dari drive terenkripsi WinXP, biasanya sekitar 22 GB dari 500.000 file dalam 45.000 folder.
Menghapus dengan Windows Explorer adalah sampah karena membuang banyak waktu untuk menghitung file. Saya biasanya memindahkan barang yang perlu saya hapus ke C: \ stufftodelete dan memiliki file batch deletestuff.bat
rmdir /s/q C:\stufftodelete
. Ini dijadwalkan untuk berjalan di malam hari, tetapi kadang-kadang saya harus menjalankannya di siang hari agar semakin cepat semakin baik.Berikut ini adalah hasil dari tes waktu cepat sampel kecil 5,85 MB dari 960 file dalam 303 folder. Saya menjalankan metode 1 diikuti oleh metode 2, lalu mengatur ulang direktori tes.
Metode 1 menghapus file dan struktur direktori dalam satu pass:
Metode 2 memiliki pass pertama untuk menghapus file dan output ke nul untuk menghindari overhead penulisan ke layar untuk setiap file menghanguskan. Lulus kedua kemudian membersihkan struktur direktori yang tersisa:
Berikut ini adalah hasil pengujian lain menggunakan 404 MB dari 19.521 file di 3.243 folder:
Jadi tidak banyak di dalamnya, mungkin terlalu dekat untuk menilai pada satu tes.
Sunting: Saya telah menguji ulang dengan lebih banyak data, ini adalah kasus khas bagi saya: 28,3 GB dari 1.159.211 file di 146.918 folder:
Wow, metode 2 hampir tiga kali lebih cepat daripada metode 1! Saya akan memperbarui deletestuff.bat saya!
sumber
del
akan menghapus direktori aktual dan bukan symlink. Berhati-hatilah dengan ini dan jangan jalankan perintah ini kecuali Anda tahu tidak ada symlink di dalam direktori target.Jika Anda harus menghapus pohon direktori besar secara teratur, pertimbangkan untuk menyimpan root dari pohon direktori itu pada partisi yang terpisah, kemudian cukup memformatnya kapan pun Anda perlu menghapus semuanya. Jika Anda perlu mengotomatisasi ini, Anda dapat menggunakan perintah DOS ini:
di mana Z: adalah partisi 'volatil' Anda. Catatan: partisi harus tidak memiliki label. Saya membuat blog tentang ini di sini .
sumber
Pada prompt perintah (Mulai -> Jalankan ->
cmd
):sumber
Selain menyalin / memindahkan file dengan sangat cepat (menggunakan API sendiri), TeraCopy dapat menghapus file dan juga sangat cepat. Sejak menemukan TeraCopy saya tidak menggunakan komputer tanpa menginstalnya (jika saya akan menyalin / memindahkan / menghapus).
Installer yang sama menginstal edisi x64 tetapi untuk menggunakannya Anda harus memaksanya secara manual.
Beta yang saya rekomendasikan untuk versi stabil: http://blog.codesector.com/2010/09/22/teracopy-2-2-beta-3/
sumber
Saya melakukan file kelelawar yang melakukan hal yang sama.
itu berfungsi dalam dua langkah, satu, itu mencoba untuk menghapus file. Dan yang kedua adalah mencoba mengambil kepemilikan atas file-file tersebut. y harus diubah sesuai dengan lokal Anda (singkatan yes dalam bahasa Inggris). Jika gagal tugas (misalnya jika gagal karena izin) maka Anda harus menjalankannya lagi. Namun, ronde kedua tidak akan mencoba untuk menghapus file yang dihapus di ronde pertama, sehingga bisa sangat cepat.
Bagaimana cara menggunakannya. Simpan sebagai delfolder.bat dalam rute jalur (misalnya c: \ windows), lalu jalankan sebagai
di mana foldername adalah nama folder
Dalam pengujian saya, menghapus 123'000 file membutuhkan waktu 3 menit (sata 7200rpm). YAY!
sumber
%1
skrip, tetapi"%~1"
. Dengan cara ini, jika argumen telah diloloskan dengan tanda kutip, itu dikutip dan dikutip ulang. Jika belum lulus dengan kutipan, itu dikutip.Menggunakan kode di bawah ini biasanya berfungsi dengan baik untuk saya.
sumber
rsync
di Linux. Bahkan di sini lebih cepatrmdir
?del /f/q/s
+rmdir /s/q
. Jika dir_to_wipe Anda memiliki junktions untukc:\some_important_dir
Anda, pada akhirnya akan kehilangan data Anda.Gunakan perintah rd / s dari command prompt.
sumber
Solusi praktis terbaik mungkin adalah memindahkan folder keluar dari suatu tempat (misalnya Recycle Bin) dan kemudian mulai menghapusnya. Itu akan memakan waktu lama, tetapi setidaknya itu akan keluar dari jalan.
Saya cukup yakin waktu yang diperlukan untuk menghapus semua file tersebut merupakan persyaratan yang melekat pada tugas tersebut, bukan inefisiensi dalam implementasi penghapusan.
sumber
Instal Cygwin dan gunakan rm -r . Tapi itu mungkin berlebihan.
sumber
rd /q /s
...rm
benar-benar secepat cmd.exe builtinrd
? Karena emulasi cygwin dari antarmuka posix agak lambat karena perlu melakukan beberapa pekerjaan ekstra, iturm
sebenarnya tidak menghargai.rm -rf
. Sekitar 10 menit di saya dibatalkan dan kembali kedel /f/s/q
karena di bawah Cygwin, penggunaan disk hanya 50%. Di bawahdel
, penggunaan disk dipatok pada 100%. Jadi saya pikir itu harus dihapus lebih cepat. Penggunaan CPU adalah <1% untuk kedua metode. Saya tidak yakin pada nomor file karena saya menutup Windows File Deleter setelah menghabiskan 10 menit menghitung.Apakah Anda mengaktifkan pembuatan nama file pendek? Jika demikian, apakah Anda benar-benar membutuhkannya? Menghapus file hanyalah operasi metadata. Jadi, jika Anda memiliki dua kali jumlah nama untuk dihapus, jumlah pekerjaan secara signifikan lebih tinggi.
sumber
Sudahkah Anda mencoba salah satu dari kedua aplikasi ini?
Pastikan untuk mengatur jumlah timpa ke 0 jika Anda ingin kinerja tercepat. Lakukan ini dengan mengeklik opsi lalu ubah nilainya di bagian bawah dialog.
Masukkan jalur untuk menghapus di bidang Sumber dan kemudian klik Hapus.
Aplikasi ini tidak meletakkan file di tempat sampah. Gunakan dengan hati-hati.
sumber
Ini disediakan untuk melengkapi dan menambah langkah-langkah yang diambil dalam jawaban yang disebutkan sebelumnya.
Dua metode yang diberikan di atas tampaknya cukup efektif, tetapi untuk menentukan kinerjanya akan sulit kecuali jika disatukan dengan kondisi yang sama persis:
Kemudian jalankan konfigurasi melalui File Batch dan gunakan Powershell Cmdlet untuk login dan mengukur kinerjanya.
Berikut ini adalah beberapa folder sampel (dinamai sebagai ukuran total) yang saya coba tetapi tidak bisa mendapatkan kinerja / hasil konklusif.
r.bat
rd.bat
Powershell:
sumber
Jawaban dari Hugo adalah yang tercepat tetapi tidak menghapus file sistem atau tersembunyi di pass pertama, jadi jika Anda menginginkan solusi yang lebih lengkap gunakan parameter / a:
Tentang file BAT oleh Magallanes , berhati-hatilah dengan takeown dan icacls, menyebabkan hardlink berbagi izin dan pemilik yang sama, jadi jika ada hardlink tak jenuh dalam folder yang ingin Anda hapus, menggunakan takeown dan icacl akan mengubah izin dan pemilik file di luar folder.
Dengan menggunakan alat ln.exe, Anda dapat membuat daftar semua file yang di-hardlink di dalam folder dan mengetahui apakah mereka di-hardlink ke file di luar folder (hardlink tidak jenuh):
sumber
Menghapus folder lebih cepat daripada menghapus banyak file.
Jadi jika Anda lebih suka menggunakan mouse daripada command prompt, Anda dapat membuat direktori, memindahkan file di sana dan menghapusnya (dengan Shift + Del seperti yang Anda katakan).
sumber