[
- Flexible actions (delete/move duplicates)
- MD5 hash-based reliable identification
- Hash caching for faster repeated scans
- Support for saving/loading duplicate lists
- Progress tracking with detailed ETA calculations
- Timeout protection for corrupted/slow filesystems (3-second timeout)
- Preserves metadata - file permissions and timestamps
- Robust error handling - continues copying even if individual files fail
- Universal support - works with devices, folders, network shares, and individual files
- Ultra-fast method - delete entire folder and recreate (milliseconds)
- Standard fallback - file-by-file deletion with progress for restricted folders
- Metadata preservation - maintains original folder permissions and timestamps
- Smart error handling - works with system folders and access restrictions
- Universal compatibility - supports devices, folders, and network shares
- Confirmation guardrails -
wipealways asksType WIPE to continuebefore deleting. Add--force(or-y) to skip the prompt in automation. Dangerous targets - drive/share roots, reparse points (junctions/symlinks) and the system TEMP folder - always require interactive confirmation and are never bypassed by--force.
- High-speed secure data wiping to prevent recovery (4.7+ GB/s)
- Fill operations with parallel writing and automatic cleanup
- Batch processing for multiple targets
- Comprehensive operation history**
- Built-in duplicate detection - integrated into main application
- Multiple selection modes (oldest/newest/alphabetical)
- Flexible actions (delete/move duplicates)
- MD5 hash-based reliable identification
- Hash caching for faster repeated scans - the cache (
hash_cache.json) lives next to the executable and is read and written from the same location on every run. A cached hash is only reused when the file's size and modification time still match, so a changed file never produces a false duplicate match. - Save/load duplicate lists for batch processing
- Modular architecture with dedicated fileduplicates package
- High-speed secure data wiping to prevent recovery
- Fill operations with optimized buffer management
- Batch processing for multiple targets
- Comprehensive operation history with JSON logging
- Context-aware interruption - graceful cancellation supportthub.com/SerZhyAle/FileDO)](https://goreportcard.com/report/github.com/SerZhyAle/FileDO)
π Storage Testing β’ π Performance Analysis β’ π‘οΈ Security Wiping β’ π― Fake Capacity Detection β’ π Duplicate Management
Storage tools for the pleasantly paranoid - because some drives lie about their size, and you deserve proof.
# Check if USB/SD card is fake
filedo E: test del
# Test drive performance
filedo C: speed 100
# Secure wipe free space
filedo D: fill 1000 del
# Find and manage duplicate files
filedo C: check-duplicates
filedo D: cd old del
# Copy files with progress tracking
filedo folder C:\Source copy D:\Backup
filedo device E: copy F:\Archive
# Fast wipe folder contents
filedo folder C:\Temp wipe
filedo folder D:\Cache w
# Show device info
filedo C: info# Compare two folders and show summary + save report
filedo compare D:\Data E:\Backup
# Compare and delete (permanent, no confirmation)
filedo cmp D:\Data E:\Backup del source # delete in Source if also exists in Target
filedo cmp D:\Data E:\Backup del target # delete in Target if also exists in Source
filedo cmp D:\Data E:\Backup del old # delete older side (by mtime), equal time: skip
filedo cmp D:\Data E:\Backup del new # delete newer side (by mtime), equal time: skip
filedo cmp D:\Data E:\Backup del small # delete smaller side, equal size: skip
filedo cmp D:\Data E:\Backup del big # delete bigger side, equal size: skip
# Optional side qualifier (only apply when that side matches)
filedo cmp D:\Data E:\Backup del small source # only if smaller is on Source
filedo cmp D:\Data E:\Backup del big target # only if bigger is on Target
filedo cmp D:\Data E:\Backup del old target # only if older is on Target
filedo cmp D:\Data E:\Backup del new source # only if newer is on SourceNotes: matching by relative path, size-only equality; optional side qualifier for old/new/small/big; mtime used for old/new; Windows compare is case-insensitive; logs: compare_report_.log, delete_report__.log.
# Check folder by reading files; mark as damaged if initial read delay > 2.0s
filedo check F:\MovFlags mirror FILEDO_CHECK_* environment variables and have precedence. Use them after check <path>.
- General
--threshold <sec>(FILEDO_CHECK_THRESHOLD_SECONDS)--warmup <sec>(FILEDO_CHECK_WARMUP_SECONDS)--warmup-idle <sec>(FILEDO_CHECK_WARMUP_IDLE_RESET_SECONDS)--workers <int>(FILEDO_CHECK_WORKERS)--buf-kb <int>(FILEDO_CHECK_BUF_KB)--mode quick|balanced|deep(FILEDO_CHECK_MODE)--balanced-min-mb <int>(FILEDO_CHECK_BALANCED_MIN_MB)--min-mb <float>/--max-mb <float>(FILEDO_CHECK_MIN_MB/MAX_MB)--include-ext ".jpg,.png"/--exclude-ext ".bak,.tmp"
- Limits
--max-files <int>(FILEDO_CHECK_MAX_FILES)--max-seconds <float>(FILEDO_CHECK_MAX_DURATION_SEC)--precount/--no-precount(FILEDO_CHECK_PRECOUNT)
- Behavior & output
--dry-run(FILEDO_CHECK_DRYRUN)--verbose(FILEDO_CHECK_VERBOSE)--quiet(FILEDO_CHECK_QUIET)--resume(FILEDO_CHECK_RESUME)
- Reporting
--report csv|json(FILEDO_CHECK_REPORT)--report-file <path>(FILEDO_CHECK_REPORT_FILE)
- Good files cache
--good-list <path>(FILEDO_CHECK_GOODLIST)
- HDDβfriendly I/O (single-reader + adaptive throttling)
--single-reader auto|on|off(FILEDO_CHECK_SINGLE_READER)--ewma-alpha <float>(FILEDO_CHECK_EWMA_ALPHA)--ewma-high-frac <float>(FILEDO_CHECK_EWMA_HIGH_FRAC)--ewma-low-frac <float>(FILEDO_CHECK_EWMA_LOW_FRAC)--max-sleep-ms <int>(FILEDO_CHECK_MAX_SLEEP_MS)--sleep-step-ms <int>(FILEDO_CHECK_SLEEP_STEP_MS)
Examples:
# Balanced mode, worker override, ETA precount
filedo check D:\Data --mode balanced --workers 6 --threshold 1.8 --precount
# Force single-reader for HDD/USB with adaptive throttling
filedo check F:\Photos --single-reader on --ewma-alpha 0.2 --max-sleep-ms 250
# Filter by extensions, cap files, save CSV report
filedo check D:\Media --include-ext .jpg,.png --max-files 1000 --report csv --report-file D:\rep.csv
# Use custom good files cache list and quiet output
filedo check D:\Data --good-list D:\check_files.list --quiet- One-time warm-up allowance up to 10.0s before the first read (spin-up)
- Uses skip_files.list for immediate, persistent recording (no damaged_files.log)
- Skips paths already in skip_files.list; parallel workers; Ctrl+C supported
winget install SerZhyAle.FileDO
# short form (works once Microsoft indexes the moniker):
winget install filedoThis installs the CLI tools (filedo, filedo_check, filedo_fill, filedo_test) plus the filedo_win GUI command builder, and adds them all to your PATH. To upgrade later:
winget upgrade SerZhyAle.FileDOTo uninstall:
winget uninstall SerZhyAle.FileDOOne package, two entries: a clickable FileDO tile - a GUI that builds and runs any command - and the filedo command exposed on PATH for any terminal. Best when you want the visual command builder and the CLI together.
- Download: Grab the latest
FileDO-<version>-windows-x64.zipfrom Releases - Extract anywhere (e.g.
C:\Tools\FileDO) - Optional: add the folder to your
PATHso you can callfiledofrom any directory - GUI: the zip includes
filedo_win.exe- run it next tofiledo.exefor the visual command builder - Run: execute from command line or GUI
git clone https://github.com/SerZhyAle/FileDO.git
cd FileDO
.\build.ps1 # or build.batRequires Go 1.24+. Builds all four executables into exe_to_download/.
Build only the main CLI:
go build -o filedo.exe .\cmd\filedo
# Information
filedo C: info
filedo D: short
# Fake capacity detection
filedo E: test
filedo F: test del
# Performance testing
filedo C: speed 100
filedo D: speed max |
# Folder analysis
filedo C:\temp info
filedo . short
# Performance testing
filedo C:\data speed 100
filedo folder . speed max
# Network operations
filedo \\server\share test
filedo network \\nas\backup speed 100
# Batch operations
filedo from commands.txt
filedo batch script.lst
# Cleanup
filedo C:\temp clean |
- 100-file verification with 1% capacity each
- Random position verification - each file checked at unique random positions every time
- Anti-sophisticated fake protection - defeats controllers that preserve predictable data positions
- Readable patterns - uses
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789for easy corruption detection - Fast raw probe (
probe) - writes 32 markers via direct LBA access, completes in ~1 min (requires Admin)
- Real-world read/write speed measurement
- Memory-optimized streaming for large files
- Progress tracking with ETA calculations
- Configurable file sizes (1MB to 10GB)
- Multiple selection modes (oldest/newest/alphabetical)
- Flexible actions (delete/move duplicates)
- MD5 hash-based reliable identification
- Hash caching for faster repeated scans
- Support for saving/loading duplicate lists
- High-speed secure data wiping to prevent recovery (4.7+ GB/s)
- Fill operations with parallel writing and automatic cleanup
- Batch processing for multiple targets
- Comprehensive operation history
| Pattern | Type | Example |
|---|---|---|
C:, D: |
Device | filedo C: test |
C:\folder |
Folder | filedo C:\temp speed 100 |
\\server\share |
Network | filedo \\nas\backup test |
file.txt |
File | filedo document.pdf info |
| Command | Purpose | Example |
|---|---|---|
info |
Show detailed information | filedo C: info |
short |
Brief summary | filedo D: short |
test |
Fake capacity detection | filedo E: test del |
test N |
Test with N files (default 100) | filedo D: test 1000 |
probe |
Fast raw-I/O probe (~1 min, needs Admin) | filedo D: probe |
speed <size> |
Performance testing | filedo C: speed 500 |
fill [size] |
Fill with test data | filedo D: fill 1000 |
clean |
Remove test files | filedo C: clean |
check-duplicates |
Find duplicate files | filedo C: check-duplicates |
cd [mode] [action] |
Check duplicates (short) | filedo C: cd old del |
copy <target> |
Copy files with progress | filedo C: copy D:\backup |
wipe |
Fast wipe folder contents | filedo folder C:\temp wipe |
from <file> |
Execute batch commands | filedo from script.txt |
hist |
Show operation history | filedo hist |
| Command | Equivalent | Purpose |
|---|---|---|
filedo D: fill |
filedo D: fill 100 |
Fill with 100MB default |
filedo D: f |
filedo D: fill 100 |
Short form |
filedo D: f del |
filedo D: fill 100 del |
With auto-delete |
filedo D: f d |
filedo D: fill 100 delete |
Short auto-delete |
| Command | Equivalent | Purpose |
|---|---|---|
filedo copy A B |
filedo folder A copy B |
Generic copy command |
filedo A cp B |
filedo A copy B |
Short copy form |
filedo A w |
filedo A wipe |
Short wipe form |
| Flag | Purpose | Example |
|---|---|---|
del |
Auto-delete after operation | filedo E: test del |
nodel |
Keep test files | filedo C: speed 100 nodel |
short |
Brief output only | filedo D: speed 100 short |
max |
Maximum size (10GB) | filedo C: speed max |
old |
Keep newest as original (for cd) | filedo D: cd old del |
new |
Keep oldest as original (for cd) | filedo E: cd new move F: |
abc |
Keep alphabetically last (for cd) | filedo C: cd abc |
xyz |
Keep alphabetically first (for cd) | filedo C: cd xyz list dups.lst |
FileDO GUI (filedo_win.exe) - a VB.NET Windows Forms command builder that can assemble any FileDO command and run it:
- β 5-language UI (EN / RU / UA / DE / FR, remembered) with an inline help panel: what the selected operation and flags do, the expected result, and an example for the target
- β
Target selection (device / folder / network / file); for device the path becomes a drive-letter picker, and choosing the system drive explains the
%TEMP%\FileDO_Operationsredirect - β Every operation in one dropdown: info, speed, test, fill, clean, cd (duplicates), the full copy family (copy / fastcopy / synccopy / balanced / maxcopy / smartcopy / safecopy), wipe, compare, check, probe, recover, from, hist
- β Source + destination fields for copy and compare
- β
Context-aware flags (max, del, nodel, short, hist,
--forcefor wipe) and duplicate/compare delete rules - β Live command preview in an editable box - tweak by hand for anything the builder doesn't cover
- β Browse buttons for paths, Copy command to clipboard, and RUN in a console window
- β
Finds
filedo.exenext to itself or onPATH(works under the Store package and portable zip alike) - β About window (the About button, top right): build stamp, author, and links to the site, the source, the issue tracker, the privacy page and the author's other tools
- β Send logs to the author - the one button in that window packs the FileDO logs found on this machine into a single zip, opens the folder with it selected, puts its path on the clipboard, and opens your default mail program already addressed and titled. You see the zip first, and nothing is sent until you press Send yourself
filedo_win # if installed via winget / Store (on PATH)
filedo_win.exe # next to filedo.exe in the portable zipShips everywhere: the GUI is included in the winget package, the portable zip, the MSI, and is the clickable tile of the Microsoft Store (MSIX) package.
Create commands.txt:
# Multiple device check
device C: info
device D: test del
device E: speed 100
folder C:\temp clean
Run: filedo from commands.txt
filedo hist # Show last 10 operations
filedo history # Show command history
# History automatically logged for all operations# All long-running operations support Ctrl+C interruption
# Graceful cancellation with cleanup
# Context-aware interruption at optimal points# SMB shares and network drives
filedo \\server\backup speed 100
filedo \\nas\storage test del
filedo network \\pc\share infoπ― Fake Capacity Detection: Creates 100 files (1% capacity each) with context-aware interruption support. Uses modern random verification patterns and optimized buffer management for reliable detection.
π₯ Enhanced Interruption: All long-running operations support Ctrl+C graceful cancellation with automatic cleanup. Context-aware interruption checks at optimal points for immediate responsiveness.
οΏ½οΈ Secure Wiping:
fill <size> deloverwrites free space with optimized buffer management and context-aware writing for secure data deletion.
π’ Test Files: Creates
FILL_*.tmpandspeedtest_*.txtfiles. Usecleancommand to remove them automatically.
π΅ Modular Architecture: Refactored with separate
capacitytestandfileduplicatespackages for better maintainability and extensibility.
π§ͺ CHECK Command: Marks a file as damaged if initial read delay exceeds 2.0s. Allows a one-time warm-up up to 10.0s. Writes immediately to
skip_files.listand respects existing entries. Nodamaged_files.log.
π Verify USB/SD Card Authenticity
# Quick test with cleanup
filedo E: test del
# Detailed test, keep files for analysis
filedo F: test
# Check drive info first
filedo E: infoβ‘ Performance Benchmarking
# Quick 100MB test
filedo C: speed 100 short
# Maximum performance test (10GB)
filedo D: speed max
# Network speed test
filedo \\server\backup speed 500π‘οΈ Secure Data Wiping
# Fill 5GB then secure delete
filedo C: fill 5000 del
# Clean existing test files
filedo D: clean
# Before disposing drive
filedo E: fill max delπ Find & Manage Duplicates
# Find duplicates in current directory
filedo . check-duplicates
# Find and delete older duplicates
filedo C: cd old del
# Find and move newer duplicates to backup
filedo E: cd new move E:\Backup
# Save duplicates list for later processing
filedo D: cd list duplicates.lst
# Process saved list with specific action
filedo cd from list duplicates.lst xyz del- Modular Design: Separated into specialized packages for better maintainability
- Context-Aware Operations: All long-running operations support graceful cancellation
- Unified Interface: Common
Testerinterface for all storage types - Memory Optimization: Streaming operations with optimized buffer management
- Cross-Platform: Primary Windows support with portable Go codebase
FileDO/
βββ main.go # Application entry point
βββ capacitytest/ # Capacity testing module
β βββ types.go # Core interfaces and types
β βββ test.go # Main testing logic
β βββ utils.go # Utility functions and verification
βββ fileduplicates/ # Duplicate file management
β βββ types.go # Duplicate detection interfaces
β βββ duplicates.go # Core duplicate logic
β βββ duplicates_impl.go # Implementation details
β βββ worker.go # Background processing
βββ filedo_win_vb/ # VB.NET GUI application
β βββ FileDOGUI.sln # Visual Studio solution
β βββ MainForm.vb # Main form logic
β βββ bin/ # Compiled GUI executable
βββ cmd/
β βββ filedo/ # Main CLI sources
β βββ filedo-check/ # Standalone health check utility
β βββ filedo-fill/ # Standalone fill utility
β βββ filedo-test/ # Standalone test utility
βββ capacitytest/ # Capacity-testing shared logic
βββ fileduplicates/ # Duplicate detection logic
βββ helpers/ # Shared helpers
- Enhanced InterruptHandler: Thread-safe interruption with context support
- Optimized Buffer Management: Dynamic buffer sizing for optimal performance
- Comprehensive Testing: Fake capacity detection with random verification
- Duplicate Detection: MD5-based file comparison with caching
- Batch Processing: Script execution with error handling
- History Logging: JSON-based operation tracking
v2607301014 (Current)
- GUI: 5-language interface (English, Russian, Ukrainian, German, French) with runtime language switching and an app icon
- GUI: About window with a send-logs-to-the-author action
- Privacy: hosted privacy page, linked from the site and the Store listing
- CLI: new "pleasantly paranoid" tagline and clearer usage text
- Docs: redesigned site with new step-by-step guides (storage check, files and copies, GUI command builder)
- Project: sources reorganized under
cmd/(filedo, filedo-check, filedo-fill, filedo-test); separate build and release flows
v2606120121 (Previous)
- Wipe: hardened wipe safety checks
- Duplicates: fixed duplicate-cache correctness and parallelism
- Copy: trimmed copy directory walks
v2605152056
- Installer: MSI installer; application icon embedded in all EXEs and the installed-programs entry
- Store: Microsoft Store submission spec and social preview image
v2604272228
- Distribution: first winget release (SerZhyAle.FileDO) and GitHub Actions release workflow
- Binaries: PE version info and Windows application manifest embedded in all binaries
- Docs: GitHub Pages redesigned and simplified
v2507112115
- Major Refactoring: Extracted capacity testing logic into dedicated
capacitytestpackage - Enhanced Interruption: Added context-aware cancellation with thread-safe
InterruptHandler - Improved Performance: Optimized buffer management and verification algorithms
- Better Architecture: Modular design with clear separation of concerns
- VB.NET GUI: Updated Windows Forms GUI application with better integration
v2507082120
- Added duplicate file detection and management
- Multiple duplicate selection modes (old/new/abc/xyz)
- Hash caching for faster duplicate scanning
- Support for saving/loading duplicate lists
- GUI application with duplicate management features
v2507062220 (Earlier)
- Enhanced verification system with multi-position checking
- Readable text patterns for corruption detection
- Improved progress display and protection mechanisms
- Bug fixes and error handling improvements
FileDO v2607301014 - Advanced File & Storage Operations Tool
Created by sza@ukr.net | MIT License | GitHub Repository | Universal Agent Kit
- π§ Modular Architecture: Refactored into specialized packages (
capacitytest,fileduplicates) - β‘ Enhanced Interruption: Context-aware cancellation with graceful cleanup
- π‘οΈ Thread-Safe Operations: Improved
InterruptHandlerwith mutex protection - π Better Performance: Optimized buffer management and verification algorithms
- π₯οΈ Updated GUI: VB.NET Windows Forms application with improved integration