The problem#
USB flash drives have gotten very cheap, especially if you don't care too much about the speed or capacity. It's convenient to buy multiple for no more than a few dollars each to always have one available or even to just give away. But sometimes very cheap hardware is non-functional or even counterfeit, claiming to be able to store more data than it really can, so when you try to read that data it will be corrupted or missing.
The solution#
f3 ("Fight Flash Fraud") is a tool for testing flash drives (including SSDs). The basic usage is
( f3write '/mnt/usb/' && f3read '/mnt/usb/' ) | tee f3-log
Replacing /mnt/usb/
with the directory your flash drive is mounted
at. If you're testing multiple drives, give the log file a descriptive
name to identify which drive the test is for.
(Or use the log-f3wr
helper script included with f3 which
does basically the same thing.)
That will write files to fill the flash drive and then read them back and verify they contain the same data that was written. This both checks for counterfeit drives as well as failing (or dead-on-arrival) drives. In addition to reporting if the drive is in fact capable of storing as much data as it claims, it will report the average write/read speeds while performing those operations, so it doubles as a simple benchmark.
You should always test new drives before trusting them with real data.