¿Existe una buena herramienta para copiar archivos?

8

El diálogo de copia se atasca a los 0 segundos restantes ...

Cada vez que intento copiar archivos grandes en mi pendrive USB (en cualquier formato), siempre se detiene en el último momento. Termina después de mucho tiempo .

Busqué Ask Ubuntu para publicaciones similares y obtuve muchas , pero ninguna de ellas tiene buenas soluciones.

Entonces ... ¿Existe alguna herramienta de copia alternativa como Teracopy en Windows?

¿O hay alguna solución que pueda hacer?

Ingrese la descripción de la imagen aquí

Severus Tux
fuente
También, por favor, hágame saber qué archivos debo cargar para referencia
Severus Tux
2
No estoy seguro, pero supongo que su problema está relacionado con el almacenamiento en caché de escritura USB . Busque publicaciones sobre cómo deshabilitar eso. Todo el proceso de copia aparecerá más lento entonces, pero debería estar realmente terminado cuando parezca terminado.
Byte Commander
@ByteCommander Por más lento, ¿te refieres a la velocidad real ?
Severus Tux
2
No estoy muy familiarizado con ese tema, pero el almacenamiento en caché solo mantiene los datos que desea escribir en su dispositivo USB en la memoria y en realidad los escribe más tarde, cuando cree que el bus o los dispositivos están menos ocupados, o cuando puede optimizar la forma para guardar los bloques de datos juntos ... Esto no debería mejorar la velocidad de escritura física real (mucho), simplemente aparecerá más rápido para usted, porque el proceso de copia informa que debe finalizar tan pronto como todos los datos para escribir estén en la memoria caché. Pero todavía lleva más tiempo escribir el caché en el dispositivo. No podría desconectarlo inmediatamente de todos modos antes de que se haya escrito el caché
Byte Commander
Sí, la velocidad de copia real sería la misma (quizás un poco más lenta porque el búfer hace que sea menos probable que haya un momento en que no se escriba nada en el disco, pero no mucho en un sistema con poca carga), pero el diálogo de progreso Sería más preciso.
hobbs

Respuestas:

6

No debes preocuparte demasiado por esto.
Quizás su pendrive USB sea de "menor calidad".
La salida del diálogo con respecto al tiempo es engañosa.

Otras herramientas de copia pueden tener un comportamiento de salida diferente,
pero no mejoran la velocidad de escritura de la unidad USB.
Lo más importante de todo es que finalmente la acción de copia tiene éxito.

Lo que puede hacer es optimizar los programadores de entrada / salida de discos.

Instale gksu(cuando aún no lo haya hecho) para editar archivos geditcomo root:

sudo apt-get install gksu  

Ahora optimice la prioridad de todos los procesos en ejecución para varios tipos de discos:

gksudo gedit /etc/udev/rules.d/60-schedulers.rules

Pegue las siguientes líneas en este archivo vacío y guarde el archivo después:

# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"  

Los cambios que realizó surten efecto después de reiniciar el sistema operativo.

Además ... una solución alternativa de copia está disponible en los repositorios de Ubuntu:

sudo apt-get install dirdiff  

Ahora inicie la herramienta desde un terminal para comparar o copiar archivos y carpetas:

dirdiff

dirdiffes una GUI para diffy puede manejar hasta 5 árboles. Muestra una ventana principal con una lista de archivos que son diferentes entre los árboles, con cuadrados de colores para indicar las edades relativas de las versiones. Un menú le permite mostrar las diferencias entre cualquiera de las dos versiones en otra ventana. Otro menú le permite copiar archivos y carpetas de un árbol a otro.

Resumen: ¡Lo más relevante de todo es la calidad del disco USB y sus capacidades de velocidad de escritura!

cl-netbox
fuente
7

La razón por la que ve que la copia ocurre de la manera en que lo hace es porque las escrituras en la unidad USB son asíncronas .

Cuando copia un archivo, en realidad lo copia en el búfer de la unidad usb, que está en la RAM de su computadora. La primera parte de la copia es muy rápida porque solo va al búfer. Los datos se vacíandesde el búfer a la unidad USB a una velocidad mucho más lenta. Una vez que el búfer se ha llenado, tiene que esperar a que algunos de los datos se descarguen en el disco antes de que pueda colocar más en el búfer, por lo que la copia luego se ralentiza, efectivamente a la velocidad de la unidad USB. Una vez que todo el archivo se ha colocado en el búfer, parece que el archivo se ha copiado. Sin embargo, no todos los datos se han vaciado del búfer al disco USB. Algunos programas de copia simplemente regresan y dejan que el vaciado continúe en segundo plano. Algunos esperarán hasta que se hayan vaciado todos los datos, por lo que permanecerán en el 100% durante algún tiempo.

Puede cambiar el disco al modo síncrono, lo que significa que todos los datos se escriben inmediatamente en la unidad USB sin usar el búfer. Esto dará la impresión de una transferencia de datos más fluida, pero en realidad puede terminar con una reducción general de la velocidad.

Si monta manualmente el disco desde la línea de comando, puede agregarlo -o sync.

Si lo monta usando fstab, puede agregar la syncopción.

Si confía en que Ubuntu lo monte cuando acceda a él en la GUI, puede modificar las opciones de montaje desde la línea de comandos una vez que esté montado:

sudo mount -o remount -o sync /media/yourname/diskname
Majenko
fuente
2
Esta es la respuesta
kos
2

Es probable que el problema sea que el archivo se lea y se almacene en la memoria por completo antes de que se escriba por completo en la unidad de destino.

Esto no significa responder la pregunta exactamente, pero se podría usar una solución alternativa pvdesde la línea de comandos en caso de archivos grandes:

sudo add-apt-repository universe && sudo apt-get update && sudo apt-get install pv

Siempre que uno necesite copiar un archivo grande:

pv /path/to/big_file >/media/username/usb/big_file

Cabe señalar que esto sufre de un problema de almacenamiento en búfer no deseado similar cuando se usa en una tubería; Si ese es el caso, una solución está limitando la velocidad de transferencia a algo ligeramente por encima de la velocidad de escritura de la unidad de destino:

[...] | pv -L 10M >/media/username/usb/big_file # Limits the transfer rate to 10 MB/s
kos
fuente
1

Hay varias alternativas. Puede usar el enfoque de línea de comando:

cp *source* *target*

donde fuente es el archivo que desea copiar y destino es el archivo o carpeta a la que desea copiar. Se pueden encontrar más opciones en https://softwarerecs.stackexchange.com/

Elder Geek
fuente
0
dd if=INPUT_FILE_PATH of=OUTPUT_FILE_PATH bs=$(( 64 * 1024 * 1024 )) oflag=sync

Esto leerá de su ifarchivo y escribirá en el ofarchivo en fragmentos de 64MiB y esperará hasta que se escriba cada fragmento antes de comenzar el siguiente. Lo más probable es que la utilidad que está utilizando solo lea el archivo en la memoria y luego lo envíe al disco (y no se sabe cuántos bytes a la vez lo está haciendo). Sin embargo, el almacenamiento en caché de escritura puede estar en el dongle usb ... Entonces, la velocidad de 60MiB por segundo que está obteniendo es la velocidad de transferencia a través de la conexión usb al caché interno del dongle. Pero eso no es probable a menos que sea un dongle USB3. USB2 no tiene suficiente rendimiento para manejar 60MiB por segundo.

Dmitry Rubanovich
fuente
0

No hay necesidad de todo lo anterior. Simplemente abra una ventana de terminal cuando la transferencia muestre 0% restante y escriba syncDesde las páginas de manual, el comando de sincronización vacía los búferes del sistema de archivos, pero por supuesto solo vaciará aquellos a los que tiene los derechos. Si quieres vaciarlos, escribe todosudo sync

Scooby-2
fuente