Copie cientos de miles de archivos Mac a NAS

7

Estoy tratando de transferir mi biblioteca de Aperture al NAS. Contiene unos cientos de miles de archivos (bastante pequeños).

Una vez que OS X termina de copiar los archivos grandes, el tiempo estimado de la operación de copia va de 2 horas a 4–5 días (y sigue creciendo).

Sé que una solución podría ser tar y copiar el tarball, pero el problema es que la biblioteca que quiero copiar tiene aproximadamente 80 GB y solo me quedan 10 GB en mi Mac.

¿Alguna idea de cómo copiarlos en tales condiciones?

OgreSwamp
fuente

Respuestas:

7

El problema probablemente es que está trabajando con muchos archivos pequeños, y la mayoría de las herramientas de copia tienen una sobrecarga por archivo. Es posible manipular los archivos, canalizar los datos a su destino y descomprimir el archivo en el otro extremo, sin crear un tarball en ningún lugar del sistema.

tar cf - "~/Pictures/Aperture Library" | (cd "/Volumes/NAS/" && tar xf -)

La desventaja de esto es que no tendrá ningún tipo de medidor de progreso, pero debería ser significativamente más rápido que una copia más convencional.

maldad
fuente
Impresionante, pensé que es posible crear una tubería con alquitrán.
OgreSwamp
44
Podría entrar pvpara obtener una indicación de lo que está sucediendo.
slhck
5

Puede usar la rsyncherramienta de línea de comandos para realizar una sincronización unidireccional de sus archivos. La forma en que rsyncfunciona facilita la interrupción del proceso si no tiene paciencia para hacerlo; puede reanudarlo fácilmente más adelante. Solo se copiarán los archivos que aún deben transferirse.

Debe abrir Terminal.app y luego llamar rsyncasí:

rsync -avh --progress "~/Pictures/Aperture Library" "/Volumes/NAS/"

Aquí, la primera ruta apunta a su biblioteca, que por defecto debería estar debajo de Imágenes . Si no está seguro, puede arrastrar y soltar la biblioteca en la línea de comando del terminal y completará la ruta automáticamente. Lo mismo ocurre con la ruta de su NAS.

La -aopción habilita el modo de archivo, que establece algunos valores predeterminados, incluida la copia recursiva. -vhará que el comando sea más detallado. -hactiva los tamaños de archivo legibles por humanos.

Rsync le mostrará un medidor de progreso. Si desea cancelar el proceso, presione CtrlC. Puede volver a llamar al comando para rsynccontinuar.

slhck
fuente
Gracias. Pero hasta donde yo sé, la única ventaja será que puedo continuar rsync más tarde. Pero no tengo ganas de esperar 4 días para copiar 80GB.
OgreSwamp
Puede haber una solución para "tar" a la red, no a mi SSD con 10GB restantes. Si puedo copiar la carpeta como un archivo, se copiará en un par de horas.
OgreSwamp
Creo que la sobrecarga al usar Finder es mayor. Además, el cálculo podría estar bastante fuera de lugar. Sin embargo, la solución de evilsoup es buena.
slhck
El problema son los archivos pequeños. Intenté rsync y todavía me toma 1 segundo copiar unos 10-20 archivos (incluso si su tamaño es de alrededor de 1K). Eso realmente ralentizó el proceso de copia. Espero que el tubo de alquitrán ayude a conectarlo (no hay un indicador de progreso, pero parece que se copia más rápido (ya he comprobado lo que se copió en el NAS)
OgreSwamp
Además de esto, pero lo que parecía haberme ayudado es usar la -Wopción que copia todo el archivo de una vez (también tuve el problema de tener muchos archivos más pequeños)
Jann
0

si el dispositivo externo es compatible con ssh shell completo, puede hacer:

tar cf - /your/dir|ssh -C 'tar xf - -C /directory/where/you/unpack'

no se recomienda usar la opción -c para tar porque tiene muchos archivos. imprimirlo causa degradación de la velocidad. flag -C para ssh es necesario para la compresión sobre la marcha en la red. Los datos pequeños hacen que los datos pequeños se cifren / descifren, esto aumenta la velocidad. pero si todavía es lento, puede cambiar el críptico de 3des a dos o si es posible a 1des. El último no es seguro pero es el más rápido.

de lo contrario, puede usar rsync, pero rsync debe instalarse en un dispositivo externo. ver hombre. rsync puede transportar datos por el servidor rsync o ssh.

Znik
fuente