De lo contrario, ¿hay alguna utilidad de línea de comando alternativa que pueda lograr esto?
fuente
De lo contrario, ¿hay alguna utilidad de línea de comando alternativa que pueda lograr esto?
Si bien cp
no tiene esta funcionalidad, puede usar pv
para hacer esto:
pv my_big_file > backup/my_big_file
Nota: este método perderá los permisos y la propiedad del archivo. Los archivos copiados de esta manera tendrán los mismos permisos que si los hubiera creado usted mismo y le pertenecieran.
En este ejemplo, pv
básicamente solo genera el archivo en stdout *, que redirige a un archivo utilizando el >
operador. Simultáneamente, imprime información sobre el progreso en el terminal cuando lo hace.
Esto es lo que parece:
stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file
138MB 0:00:01 [73.3MB/s] [=================================>] 100%
Es posible que necesite instalar pv (alternativamente, escriba sudo apt-get install pv
) en su sistema.
*: El bit técnico
Hay tres flujos importantes de datos en un sistema tipo Unix: stdout (salida estándar), stderr (error estándar) y stdin (entrada estándar). Cada programa tiene los tres, por así decirlo. El >
operador de redirección redirige la salida del programa a un archivo. Sin argumentos, como puede ver arriba, >
redirige la salida estándar de un programa a un archivo. cp
básicamente no hace nada más elegante que
cat source > destination
(donde cat
solo lee un archivo y lo imprime en stdout). pv
es como cat, pero si redirige su flujo de salida a otro lugar, imprimirá información de progreso en stdout.
Echa un vistazo man pv
para obtener más información al respecto.
Otra opción, como sugiere DoR en esta respuesta , es usar rsync en su lugar:
$ rsync -ah --progress source-file destination-file
sending incremental file list
source-file
621.22M 57% 283.86MB/s 0:00:01
Esto preservará los permisos / propiedad de los archivos mientras muestra el progreso.
pv
no maneja los permisos de la misma manera que locp
hace ... (basado en una prueba rápida que probé:pv
no copié el bit de ejecución en ...rsync
sí.alias cp="rsync -avz"
cp está desactualizado.pv
, puedes ir a espiar/proc/PID of cp/fd
y/proc/PID of cp/fdinfo
descubrir el progreso. (Depende de usted inferir velocidad). Utilizo esta técnica para mirarupdatedb
.-z
probablemente solo debería usarse para copias de red; comprimir y descomprimir los datos para una copia local es pura sobrecarga.rsync
asegúrese de no agregar el final/
a la ruta de origen (o eliminar si, por ejemplo, la finalización de bash lo coloca allí automáticamente). De lo contrario, obtendrá resultados diferentes que cuando usacp
(ogcp
).No hay Vea aquí por qué. Aunque hace más de lo que necesita,
rsync
tiene un--progress
parámetro. El-a
mantendrá permisos, etc., y-h
será legible por humanos.La salida se verá más o menos así:
fuente
-r
bandera de directorios recurrentes. Incluso puede ser alias como un reemplazo directo para cp:alias cp="rsync -ah --progress"
--progress
hace que mi cabeza gire 🙃 mirando toda la pantalla de salida en el terminal. Entonces, aquellos que vienen aquí de búsquedas de palabras clave de AOL,rsync -ah --info=progress2 [source] [destination]
presentan el resultado de una manera un poco más sensata 👩⚕️ en mi humilde opinión.Si desea ver si sus archivos se están transfiriendo correctamente, puede usar
gcp
ygcp
es como cp, pero por defecto le da una barra de progreso para que pueda ver lo que se está copiando. Como señala la wiki del programa ,gcp
tiene varias características útiles comoSin embargo, incluso cuando la barra de progreso haya alcanzado el 100% al usar la herramienta, debe esperar hasta que vuelva a aparecer el indicador de terminal antes de quitar sus medios de manera segura para asegurarse de que el proceso de transferencia haya finalizado con éxito.
gcp
se usa para copiar archivos y tiene opciones tales como--preserve
para que se puedan preservar varios atributos y permisos y--recursive
para que se puedan copiar directorios completos. Puede encontrar más información sobre sus opciones ingresandoman gcp
o visitando las páginas de manual de Ubuntu en línea . Un tutorial también está disponible en este sitio .Instalar
gcp
desde los repositorios con( Nota : en Ubuntu 12.10, el nuevo punto de montaje automático es, por ejemplo
/media/user/usbdisk
)Puede copiar un archivo a su medio ingresando
y copie una carpeta a sus medios con
Salida de muestra
gcp
con la barra de progreso:Por supuesto, puede especificar múltiples archivos o carpetas para copiar en su disco, y hay muchas otras opciones cubiertas
man gcp
.fuente
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
export DISPLAY=:0.0
antes de iniciar gcp. Si la máquina no tiene cabeza, entonces tendría que iniciar una sesión x en un framebuffer virtual o algo así, en ese momento probablemente debería buscar otro programagcp
es bastante decente pero el requisito de DBUS / X es extraño. Manejé esto sobre SSH usando el reenvío ssh:ssh -X user@host
y eso me permitió ejecutarlo.Me encanta usar cURL para este propósito exacto. La página de manual enumera el protocolo "ARCHIVO" como compatible, así que úselo como cualquier otro protocolo en una URL:
Velocidad, progreso, tiempo restante y más, todo en un formato familiar.
fuente
pv
, que no va a salvar permisos.Si bien no muestra la velocidad, al copiar varios archivos, la
-v
opción delcp
comando le proporcionará información de progreso. p.ejfuente
El núcleo conoce la mayoría de los datos, como la velocidad y, a menudo, también el porcentaje. Los núcleos modernos exponen esto a través de su sistema de archivos / proc.
showpeed de https://github.com/jnweiger/showspeed usa esa información. Se puede adjuntar a programas que ya se están ejecutando y proporcionar actualizaciones periódicas como esta:
fuente
pkill -USR1 dd
paradd
mostrar su estado, otra opción seríawatch -n 1 pkill -USR1 dd
hacer que muestre su progreso periódicamente (cada segundo).Hay una herramienta llamada
progress
en los repositorios que puede examinar varios comandos diferentes y mostrar información de progreso para ellos.Instálalo usando el comando
Esta herramienta se puede usar así:
Salida:
fuente
Si bien
pv
puede ocuparse decp
tareas locales , el usodd
depv
puede ocuparse tanto de tareas locales (cp
) como remotas (scp
).Por favor, asegúrese de las
path/to/dest.mkv
salidas portouch path/to/dest.mkv
Esto puede mostrar el progreso, pero si desea la información del porcentaje,
Reemplace
100M
arriba con el tamaño real de su archivo fuente.Aquí viene la parte remota
Mientras que
scp
difícilmente puede mostrar el progreso actual, utilizandodd
conpv
es un pedazo de pastel.fuente
dd
tienestatus=progress
: askubuntu.com/a/824895/52975Hay una nueva herramienta llamada cv que puede encontrar cualquier descriptor relacionado con un comando en ejecución y mostrar el progreso y la velocidad: https://github.com/Xfennec/cv
genera las estadísticas para todas las operaciones de cp, mv, etc. en ejecución
fuente
watch cv -q
es aún máscp
está copiando un directorio de forma recursiva o no.Como muchos dijeron, cp no incluye esta funcionalidad.
Solo para arrojar mis $ 0.02, lo que generalmente hago con situaciones de copia triviales (es decir, no
-R
):Vea qué tan grande es el archivo y recuerde
Comience a copiar
Abre otra terminal
Ejecutar
watch ls -lh DIR
en el directorio donde está el objetivoEsto me puede mantener actualizado sobre el tamaño del archivo de destino, con una molestia mínima.
Como alternativa para situaciones menos triviales, por ejemplo, copiando directorios de forma recursiva, puede usar
watch du -hs DIR
para ver un resumen del tamaño de DIR. Sin embargo, du puede tomar mucho tiempo para calcular e incluso puede ralentizar la copia, por lo que es posible que desee utilizar un-n INTERVAL
argumento para observar para que la compensación sea aceptable.Actualización: en caso de que utilice comodines con el comando utilizado con watch du, por ejemplo
watch du -hs backup/*
, no olvide citar:de lo contrario, los comodines se expandirán solo una vez , cuando se inicie la observación, por lo que no mirará nuevos archivos / subdirectorios.
fuente
dd status=progress
Opción agregada en GNU Coreutils 8.24+ (Ubuntu 16.04):
El terminal muestra una línea de tipo:
Vea también: ¿Cómo monitorea el progreso de dd?
fuente
Si tiene rsync 3.1 o superior (
rsync --version
), puede copiar (cp -Rpn) mientras conserva los permisos y la propiedad, los directorios recurrentes, "no clobber" y muestra el progreso general (en lugar de solo el progreso por archivo), la velocidad de copia y ( muy aproximado) tiempo estimado restante con:Tenga en cuenta que sudo solo es necesario si se trata de directorios / archivos que no son de su propiedad. Además, sin el
--no-i-r
, el porcentaje puede restablecerse a un número inferior en algún momento durante la copia. Tal vez las versiones posteriores de rsync estarán predeterminadas en no-ir con info = progress2, pero no en la versión actual de 3.1.2.Descubrí que el porcentaje y el tiempo restante se sobrestiman enormemente al copiar en un directorio que ya contiene archivos (es decir, como cuando normalmente usaría cp -n "no clobber").
fuente
Use un script de shell:
Esto se verá así:
Fuente
fuente
Dependiendo de lo que quieras hacer, Midnight Commander (
mc
) podría ser la respuesta. Me sorprende que aún no se haya mencionado.Las herramientas les gusta
pv
orsync
son buenas para mostrar el progreso de la transferencia de un archivo enorme, pero cuando se trata de copiar directorios / árboles completos,mc
calcula el tamaño y luego muestra el progreso muy bien. Además, está disponible de fábrica en la mayoría de los sistemas.fuente
podría ser una opción más para preservar los atributos (si
source
es una carpeta en la que se crearádestination
)Espero que pueda ser útil para alguien. Para tener un tiempo de transferencia estimado, esto se puede lograr haciendo
do -s source
de antemano y pasándolo como un-s <size>
parámetro apv
.fuente
-f -
Es redundante.tar
La salida predeterminadac
y la entrada parax
son stdout y stdin.Puede copiar usar cualquier programa. Al mismo tiempo, puede iniciar
sudo iotop
y ver la velocidad de lectura / escritura del disco sin progreso.fuente
Verifique el código fuente de progress_bar en el repositorio de git a continuación
https://github.com/Kiran-Bose/supreme
Prueba también el paquete de script bash personalizado supremo
Descargue el archivo deb e instálelo en una distribución basada en debian o descargue los archivos fuente, modifíquelos y utilícelos para otras distribuciones
Resumen de funcionalidad
(1) Aplicaciones abiertas ---- Firefox ---- Calculadora ---- Configuración
(2) Administrar archivos ---- Buscar ---- Navegar ---- Acceso rápido
(3) Administrar teléfono ---- Mover / Copiar desde teléfono ---- Mover / Copiar a teléfono ---- Sincronizar carpetas
(4) Administrar USB ---- Mover / Copiar desde USB ---- Mover / Copiar a USB
fuente
pv sabe cómo ver los descriptores de archivos dados un pid, ya sea cp u otra cosa
De la documentación:
Ejemplo:
fuente