273 votos

Copia de un gran árbol de directorios local? cp o rsync?

Tengo que copiar un gran árbol de directorio, acerca de 1,8 TB. Es todo local. Por falta de costumbre, yo uso la rsync, sin embargo me pregunto si no hay mucho punto, y si debo utilizar cp.

Estoy preocupada acerca de los permisos y el uid/gid, ya que tienen que ser conservados en la copia (sé que rsync hace esto). Así como cosas como enlaces simbólicos.

El destino está vacía, así que no tiene que preocuparse acerca de la forma condicional de la actualización de algunos archivos. Todo el disco local, así que no tiene que preocuparse acerca de ssh o de la red.

La razón estaría tentado lejos de rsync, es porque rsync puede hacer más de lo que necesito. rsync las sumas de comprobación de archivos. Yo no necesito eso, y estoy preocupado de que podría tomar más de cp.

Entonces, ¿qué te cuentas, rsync o cp?

229voto

zigdon Puntos 101

Me gustaría utilizar rsync, ya que significa que si se interrumpe por cualquier razón, entonces usted puede reiniciar fácilmente con muy poco costo. Y siendo rsync, incluso se puede reiniciar forma parte a través de un archivo de gran tamaño. Como otros mencionan, puede excluir archivos fácilmente. La forma más sencilla de conservar la mayoría de las cosas es el uso de la bandera-a - archivo. Así:

rsync -a source dest

El valor predeterminado de cp a empezar de nuevo, a pesar de la-u indicador de "copiar sólo cuando el archivo de ORIGEN es más reciente que el archivo de destino o cuando el archivo de destino no existe". Y el- (archivo) de la bandera va a ser recursivo, no volver a copiar los archivos si usted tiene que reiniciar y preservar los permisos. Así:

cp -au source dest

142voto

Flyte Puntos 362

Cuando se copia en el sistema de archivos local yo siempre uso el siguiente rsync opciones:

# rsync -avhW --no-compress --progress /src/ /dst/

He aquí mi razonamiento:

-a is for archive, which preserves ownership, permissions etc.
-v is for verbose, so I can see what's happening (optional)
-h is for human-readable, so the transfer rate and file sizes are easier to read (optional)
-W is for copying whole files only, without delta-xfer algorithm which should reduce CPU load
--no-compress as there's no lack of bandwidth between local devices
--progress so I can see the progress of large files (optional)

He visto el 17% de transferencias más rápidas usando la configuración de rsync sobre el siguiente comando tar como sugiere otra respuesta:

# (cd /src; tar cf - .) | (cd /dst; tar xpf -)

81voto

Chad Huneycutt Puntos 1546

Cuando tengo que copiar una gran cantidad de datos, que suelen utilizar una combinación de alquitrán y rsync. El primer paso es el alquitrán, algo como esto:

# (cd /src; tar cf - .) | (cd /dst; tar xpf -)

Por lo general con una gran cantidad de archivos, habrá algunos que tar no puede manejar por cualquier razón. O tal vez el proceso se interrumpe, o si se trata de un sistema de ficheros de la migración, el que quiera hacer la copia inicial antes de que el actual paso de la migración. En cualquier caso, después de la copia inicial, tengo que hacer un rsync paso para sincronizar todo:

# cd /dst; rsync -avPHSx --delete /src/ .

Tenga en cuenta que la barra diagonal en /src/ es importante.

14voto

AskApache Puntos 231

rsync

Aquí está el rsync yo la uso, prefiero cp de comandos simples, no esta.

$ rsync -ahSD --ignore-errors --force --delete --stats $SRC/ $DIR/

cpio

Aquí está una manera que es incluso más seguro, cpio. Es casi tan rápido como el alquitrán, tal vez un poco más rápido.

$ cd $SRC && find . -mount -depth -print0 2>/dev/null | cpio -0admp $DEST &>/dev/null

tar

Esto también es bueno, y continúa en la lectura de los fracasos.

$ tar --ignore-failed-read -C $SRC -cf - . | tar --ignore-failed-read -C $DEST -xf -

Nota: todos esos son sólo para las copias locales.

5voto

eleven81 Puntos 155

Si rsync hace exactamente lo que se quiere hacer, si usted está muy familiarizado con su uso para esta aplicación en particular ya, y si funciona lo suficientemente rápido para adaptarse a su gusto, entonces ¿por qué quieres cambiar?

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: