Copiar un archivo solo cuando es más nuevo que el destino

36

¿Cómo copio un archivo en Linux solo cuando el archivo que se copia es más nuevo que la versión en el destino?

Si el archivo en el destino es más nuevo, quiero que la copia del archivo no continúe.

Eli
fuente

Respuestas:

17

Use rsync

rsync --progress -r -u /from/one/* /to/another/directory
gnod
fuente
3
Solo para completar: -rsignifica operación recursiva en subdirectorios y -upara mantener los archivos más nuevos en el destino (= actualización). --progressmuestra información de progreso durante la operación.
Jörg Gottschlich
6

No estás diciendo qué shell estás usando, así que voy a suponer ksh:

if [[ file1 -nt file2 ]]; then cp file1 file2; fi
Kusalananda
fuente
¿No es bash lo más común?
Rob
1
@ Rob, sí. Esto también funciona en bash, obviamente. Simplemente no tenía bash (o ninguna caja estándar de Linux) a mano cuando lo escribí.
Kusalananda
4

yes|cp -ruv /from/* /to/.
sí - Responda sí a todas las preguntas.
r - Recursivo
u - actualización
v - Progreso

Funciona como xargs .

No sé cómo explicar académicamente.

Cómo forzar a cp a sobrescribir sin confirmación

Felippe Silvestre
fuente
1
Esto es algo críptico. ¿Puedes ampliar tu respuesta para ser un poco más explícito, tal vez incluir un ejemplo? Gracias. de la opinión
fixer1234
sí -> Responda sí a todas las preguntas.
Felippe Silvestre