Byenow – A command-line Windows utility for faster folder removal
iobureau.com
iobureau.com
I've been using this internally for several months. For local deletes YMMV. There seem to be some sort of central lock in the NTFS driver, so the speed up comes from being faster with scanning and generally idling less. For freshly mounted fast drives you may see a speed up of 1.5-2.5 times, but in other cases it will be just 10-20%.
However for remote deletes this tool is really great. Due to the network latency, single-threaded deletes will spend most of their time idle - a request needs to get there and then back before the next one can be fired. But using threads allows to have multiple requests "in flight", forming a queue if needed, so the remote end is always doing something. A typical speed up for a LAN is around 2x, and for VPN links this should be even higher.
In any case, AMA.
If they aren't opened in FILE_SHARE_DELETE mode, then they will in fact be locked against deletion... because that's exactly what file's current user wanted. Force-deleting a file in this case is not the wisest thing to do.
[1] https://docs.microsoft.com/en-us/windows/win32/api/fileapi/n..., Ctrl-F for FILE_SHARE_DELETE
In any case, since ages one does not need special tools, resource monitor listing of open handles is enough.
The underlying behavior is correct though - people with open handles have the priority unless they have explicitly stated that deleting a file while they use it is OK.
[1] https://docs.microsoft.com/en-us/sysinternals/downloads/proc...
> The source is incomplete, because it depends on several libraries that are not a part of this distribution. However, with an exception of simple_work_queue, these libraries are simple Win32 API wrappers and their functionality should be fairly obvious from their usage.
Just curious - if they're trivial wrappers - why not share them?
It takes time to prep a public release. Review the sources, comment them, check formatting, add docs, legalese, build instructions, etc. I really don't like publishing stuff that's not in a proper order.
Second is that a public release needs to be maintained and this complicates our own workflow. We can, in theory, do a release and then abandon it, but it doesn't seem like a right thing to do.
Pretty much the only criteria is to remove friction from fast paths and add some where safeguards are needed.
This utility would have been a godsend a couple months ago when I had millions of XML files to delete on one of our server (12 years of accumulation). It took several days (it's an old Windows 2003 server with SCSI disks I think).
Can a tool solve that problem? (I guess powershell remote scripts could?)
If the network round trip time is 1second and the time to delete the directory with 1000 files is 1 second when done on the local drive, then I want the delete on the network share to be 2 seconds not 2000 or 4000 seconds.
For scanning - you'll get the list of content in chunks. The size of a chunk depends on the size of the buffer you provide. For smaller folders it'll normally fit in a single request.
Is that how .+n[i|u]x's unlink command works? IIRC you can unlink a directory.
If that's true, how does MS's WSL handle unlink?
Why doesn't Windows del work like that, surely at the physical layer the drive is only removing allocation entries?
To remove a directory on Linux you have to empty it out (recursively, using unlink(2) on files and rmdir(2) on empty directories) and then rmdir(2) the top level directory.
So not a single system call.
There's also "del /f /s /q" to delete just files, followed by "rmdir /q /s" to delete just folders; and there's also "robocopy /mir" with an empty folder as a source. From what I've seen straight "rmdir" is the fastest of these three.
If you want to bypass that step you need to use the Shift + Del keys and for that scenario Windows even warns you the action you are request is a permanent delete.
And it was spectacular. I'm amazed at the speed at which it clears out an entire folder.
Another nice touch is if I ask it to delete a folder and that folder is open in a command prompt somewhere, it just goes ahead and deletes it's contents cleanly.
Excellent piece of software.