On Linux, a copy dialog can reach 100% while data is still being written from memory to a USB drive. Is there a way to make progress reflect that, or at least know when it is safe to unplug the drive?
Can I make USB copy progress show when the data is really written?
Answers
For the immediate question, use the systemโs safe-removal or eject function and wait for it to finish. If it reports that the drive is still busy, give it time. The copy dialog and the device flush are separate pieces of feedback, so a completed copy alone may not mean every buffered write has reached the drive.
Reply to this answer
This is a consequence of write caching. The copy program may hand data to the operating system, which can report the transfer as complete before all pending writes have reached slower removable storage. A final flush, such as running sync and waiting for it to return, can help ensure pending writes are submitted. It does not turn the copy dialog into a live measure of device throughput, though.
Reply to this answer
There may not be one universal fix, since desktop copy tools and removable-drive mount settings vary. Some setups mount USB storage with synchronous writes, which can make copying take longer but more closely track writes to the device. Check the behavior and documentation for your distribution before changing mount options.
Reply to this answer
You can tune the Linux writeback cache thresholds, but that affects more than USB transfers and is easy to overdo. I would not change system-wide kernel settings just to make one progress bar feel more accurate. Try safe eject first, and only consider targeted settings if you understand how they affect performance and other disks.
Reply to this answer
Add your answer
Answers are reviewed before publication.
905Dimple:
That makes sense. I was hoping the copy window could show the remaining write time, but waiting for eject to finish is a useful rule.