2011-12-06 21 views
28

Me gustaría tomar una carpeta grande (~ 100GB) y copiarla en otra carpeta. Me gustaría omitir cualquier archivo que exista (no carpetas), por lo que si /music/index.html no existe, aún así se copiaría aunque el directorio /music ya exista.Copie archivos omitiendo archivos existentes - Unix

Encontré this, pero mi shell dice -u no es un argumento válido.

No sé cómo funciona rsync, así que por favor avíseme si esa es una solución mejor.

Gracias.

+3

'rsync' es * siempre * la mejor solución. Sí, es * que * bueno. –

+3

Esta pregunta probablemente debería ser movida a http://unix.stackexchange.com/ – Bruno

+0

... o también [su] –

Respuesta

50

Siempre use rsync para copiar archivos, porque es genial.

Ignorar archivos existentes:

rsync --ignore-existing --recursive /src /dst 

LEA las manual y buscar alrededor para muchos, muchos grandes ejemplos. Especialmente la combinación con ssh hace que rsync sea una gran herramienta para conexiones lentas y poco fiables debido a su opción --partial. Agregue --verbose para ver qué archivos se están copiando. Asegúrese de revisar la gran cantidad de opciones relacionadas con la preservación de permisos, usuarios y marcas de tiempo, también.

+0

¿Es eso recursivo o tengo que agregar '-r'? – switz

+1

Perfectamente, ya está en funcionamiento. Puedo decir que funciona al ejecutar en modo detallado ('-v'). ¡Gracias! – switz

+6

Para mostrar el progreso mientras rsync funciona, use: 'rsync --humano-legible --progreso --ignore-existing --recursive/src/dst' –

7

rsync(1) brilla absolutamente cuando la fuente y el destino se encuentran en dos computadoras diferentes. Todavía es la mejor herramienta para usar cuando la fuente y el destino están en la misma computadora.

Una sencilla uso se vería así:

rsync -av /path/to/source /path/to/destination 

Si está seguro de que todos los archivos que existen en ambos lugares son idénticos, a continuación, utilizar la opción --ignore-existing:

rsync -av --ignore-existing /path/to/source /path/to/destination 

Justo para completar, cuando uso rsync(1) para hacer una copia de seguridad en un sistema remoto, el comando que más prefiero es:

rsync -avz -P /path/to/source hostname:/path/to/destination 

El -z pide compresión (no me molestaría a nivel local, pero sobre un enlace de red más lenta que puede hacer una gran diferencia) y el -P pide --partial y --progress - que reutilizar transferencias de archivos parciales si debe reiniciarse, y mostrará un indicador de barra de progreso útil.

Cuestiones relacionadas