Su problema probablemente no sea con su computadora, per se, probablemente esté bien. Pero esa capa de transición de flash USB tiene un procesador propio que tiene que mapear todas sus escrituras para compensar lo que podría ser un chip flash defectuoso en un 90%, ¿quién sabe? Lo inundará, luego inundará sus amortiguadores, luego inundará todo el autobús, luego estará atrapado, hombre, después de todo, ahí es donde están todas sus cosas. Puede sonar contra-intuitivo, pero lo que realmente necesita es bloquear E / S: debe dejar que el FTL marque el ritmo y luego seguir el ritmo.
(Sobre la piratería de microcontroladores FTL: http://www.bunniestudios.com/blog/?p=3554 )
Todas las respuestas anteriores deberían funcionar, así que este es más un "¡yo también!" que cualquier otra cosa: he estado totalmente allí, hombre. Resolví mis propios problemas con rsync's --bwlimit arg (2.5mbs parecía ser el punto ideal para una sola ejecución sin errores, cualquier cosa más y terminaría con errores de protección contra escritura). rsync fue especialmente adecuado para mi propósito porque estaba trabajando con sistemas de archivos completos, por lo que había muchos archivos, y simplemente ejecutar rsync por segunda vez solucionaría todos los problemas de la primera ejecución (que era necesario cuando me impacientaba e intentaba para pasar más de 2.5 mb).
Aún así, supongo que eso no es tan práctico para un solo archivo. En su caso, podría simplemente canalizar a dd configurado en escritura sin formato: puede manejar cualquier entrada de esa manera, pero solo un archivo de destino a la vez (aunque ese único archivo podría ser un dispositivo de bloque completo, por supuesto).
## OBTAIN OPTIMAL IO VALUE FOR TARGET HOST DEV ##
## IT'S IMPORTANT THAT YOUR "bs" VALUE IS A MULTIPLE ##
## OF YOUR TARGET DEV'S SECTOR SIZE (USUALLY 512b) ##
% bs=$(blockdev --getoptio /local/target/dev)
## START LISTENING; PIPE OUT ON INPUT ##
% nc -l -p $PORT | lz4 |\
## PIPE THROUGH DECOMPRESSOR TO DD ##
> dd bs=$bs of=/mnt/local/target.file \
## AND BE SURE DD'S FLAGS DECLARE RAW IO ##
> conv=fsync oflag=direct,sync,nocache
## OUR RECEIVER'S WAITING; DIAL REMOTE TO BEGIN ##
% ssh user@remote.host <<-REMOTECMD
## JUST REVERSED; NO RAW IO FLAGS NEEDED HERE, THOUGH ##
> dd if=/remote/source.file bs=$bs |\
> lz4 -9 | nc local.target.domain $PORT
> REMOTECMD
Es posible que netcat sea un poco más rápido que ssh para el transporte de datos si lo intenta. De todos modos, las otras ideas ya fueron tomadas, entonces ¿por qué no?
[EDITAR]: Noté las menciones de lftp, scp y ssh en la otra publicación y pensé que estábamos hablando de una copia remota. El local es mucho más fácil:
% bs=$(blockdev --getoptio /local/target/dev)
% dd if=/src/fi.le bs=$bs iflag=fullblock of=/tgt/fi.le \
> conv=fsync oflag=direct,sync,nocache
[EDIT2]: Crédito donde es debido: acabo de notar que ptman me ganó en esto por cinco horas en los comentarios.
Definitivamente, podría ajustar $ bs para el rendimiento aquí con un multiplicador, pero algunos sistemas de archivos pueden requerir que sea un múltiplo del tamaño del sector de fs objetivo, así que tenga esto en cuenta.
ionice
se puede utilizar para garantizar que su proceso de copia de disco a disco sea una E / S programada con una prioridad menor que los procesos normales.