29

Copying stucks

I don't know why it's happening only to me. Whenever copying bigger or sometimes smaller < 1GB files from PC to pendrive literally gets stuck at the end.

now this stucks

1
  • 7
    Many years have passed and the same problem exists... What a waste of time...
    – kuzand
    Commented Apr 24, 2019 at 21:39

3 Answers 3

26

It’s not just happening to you :-) The problem is due to how Linux works and the default settings that Ubuntu gives you. The file copy tool is reading a chunk of the source file then writing it to the destination, and updates the progress bar each time it finishes a write. However, to speed things up, Linux takes the data that is meant to be written and immediately tells the program that is has been written, while doing the work in the background. Linux allows some percentage of system memory to be used for this purpose, which with the size of memory these days is usually more than the entire file, so a program can think it has written the whole thing when in reality the copy has just begun. But, when a program tries to close the file, Linux makes it wait for the operation to complete. (Else the program might try doing something with a half-written file.)

You see this the most when writing large files to slow devices, like USB, but it can show up in other situations too and make it look like the computer is locking up.

The thing I do to “fix” the problem is telling Linux to buffer less data. That way, an application can’t get so far ahead of the actual progress. This involves changing a kernel parameter, which is a power-user thing that should be done with care. You need to add “vm.dirty_bytes=15000000” to /etc/sysctl.conf:

echo vm.dirty_bytes=15000000 | sudo tee -a /etc/sysctl.conf

then reboot.

That sets the buffer size to 15 MB, which is a number I picked, and roughly translates to “half a second writing to a fast USB2 device”. You can choose larger (or smaller, but probably not too much smaller) as you like.

The disadvantage of this setting is that high-throughput operations might run slower, like running a bunch of file copies simultaneously. It could also cause a laptop drive to come out of sleep mode more frequently.

3
  • I've checked the default value of dirty_bytes and it's 0. It may be the case that Ubuntu uses dirty_ration instead. Commented Feb 15, 2019 at 22:40
  • 2
    Right, 0 means it isn't being used, in favor of dirty_ratio. You can set dirty_bytes or dirty_ratio, but they are two measurements for the same value (if you set both, only the second one will take effect)
    – dataless
    Commented Feb 15, 2019 at 23:09
  • To state that differently, I think setting dirty_bytes is more useful than setting dirty_ratio because I would rather tune my write-buffering to the speed of my drives instead of the size of my main memory.
    – dataless
    Commented Feb 15, 2019 at 23:11
7

I had same issue on Ubuntu 19.10 with 16GB Kingston G4 USB 3.0 pendrive. Files gnome app was stuck at end of progress forever and you could not eject the usb. I was copying movie file of 1.2 GB size.

Solution is just to format pendrive to NTFS file system instead of FAT. When I did that, everything was working fine.

1
  • I re-formatted my usb again to NTFS and now I cannot even mount it to my Ubuntu 20.04
    – Franva
    Commented Apr 2, 2022 at 9:27
0

I got the same problem, and i solved using dd command with a very small bs value, like 300 that will gives a 5MB/s transfer rate approximately.

The bs value depends on the speed of your usb stick, so you will need to do a few test. Consider using iotop for monitoring the IO.

Example:

dd if=source of=/usb/destination bs=300 status=progress

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .