Copie solo archivos nuevos, ¿es esto posible? Básicamente quiero fusionar dos carpetas

14

Tengo una carpeta en la Unidad 1 llamada Música, y es de 100 GB. Tengo una carpeta en la Unidad 2 llamada Música, y es de 116 GB. Es la versión más actualizada. ¿Cómo copio la carpeta Música de la Unidad 2 a la Unidad 1 sin tener que volver a escribir cada archivo?

dallen
fuente
¿Qué versión de OS X estás usando?
Nix
1
Estoy usando 10.7.4. Cuando copio la carpeta de una unidad a otra, me preguntan si quiero reemplazarla. Sin opción de fusión.
dallen

Respuestas:

5

La opción de combinación solo aparecerá si está copiando (en lugar de mover) la carpeta. Asegúrese de mantener presionada optionmientras arrastra la nueva carpeta a la ubicación de la carpeta anterior. Alternativamente, usar + cpara copiar la nueva carpeta y + vpara pegar sobre la carpeta anterior debería darle la opción de fusionar los archivos.

Nada
fuente
Esto todavía parece escribir sobre archivos que no necesitan ser reescritos. Usando en su rsynclugar
BRogers
Incluso si la opción de fusión está disponible, a veces no funciona (solo informa un error y no hace nada), especialmente en el caso de carpetas grandes como en su caso. Es otra razón por la que deberías usar rsync.
Andrzej Martyna
24

Este es un caso de uso clásico para rsync:

rsync -av /source-path/source-dir /destination-path

rsync copiará solo los archivos nuevos y modificados a la nueva ubicación.

Es importante comprender cómo funciona una barra inclinada final en el argumento fuente. Si hay una barra inclinada final, el contenido de / source-path / source-dir se copiará a destination-path . Si no hay una barra inclinada final , el directorio de origen se copiará en el destino y su contenido estará otro nivel más abajo en la jerarquía de destino.

Entonces, si desea replicar una ruta a otra, incluya la barra diagonal final de la siguiente manera:

rsync -av /sourcepath/sourcedir/ /duplicatpath/sourcedir/
John D.
fuente
1
Gran captura! Y si está haciendo esto desde varias unidades (o desde cualquier lugar de su computadora) y no desea escribir los directorios, simplemente arrastre una unidad (usb externo o cápsula del tiempo) o simplemente un directorio específico y haga que agregue a la orden para ti. Simplemente arrastre la ubicación de destino a la terminal
BRogers
Hombre, muchas gracias por sugerir el corte final. Pasé el nuestro reflexionando sobre por qué rsync -av ./foo/bar / vol1 / foo / bar estaba copiando todos los archivos existentes. Cortes sangrientos jajaja !!!
Sming
4

ACTUALIZAR

Primero instale coreutils primero. Ejecutar brew install coreutils. Si no lo ha brewinstalado ... ¡vuelva a Windows!

Verifique que cp --versionsalga la versión cp (GNU coreutils) 8. ^^

Entonces tendrá la cpversión correcta y la -ubandera funcionará.


Verifica el cpcomando. Usa man cpy lee las opciones. Puedes hacer algo como:

cp -r -u ~/source ~/destination

-R, -r , --recursive: copia directorios de forma recursiva
-u , --update: copia solo cuando el archivo SOURCE es más nuevo que el archivo de destino o cuando falta el archivo de destino
-p igual que --preserve = mode, propiedad , marcas de tiempo
-v --verbose: explica lo que se está haciendo

Entonces, si desea copiar archivos de su carpeta Descargas / música para decir su carpeta Música / nueva , haría algo como: Esto fusionaría el contenido de estas dos carpetas y si existen dos archivos con el mismo nombre y ruta, mantendrá el el más nuevo basado en la marca de tiempo.
cp -ruvp ~/Downloads/music/* ~/Music/new/

drew7721
fuente
¿Está seguro de que la opción -u funciona con el comando cp en OSX? Recibo el mensaje "cp: opción ilegal - u" en Sierra. Parece que no todos los comandos son iguales que en Linux.
OMA
Pruebe el comando cp --help y vea si la opción está disponible. O verifique la versión cp y asegúrese de que esté actualizada. Estoy usando: cp (GNU coreutils) 8.27
drew7721
Lamentablemente, -u no es un indicador válido para cp en OS X. ¡Sería muy conveniente tenerlo!
Por Quested Aronsson
Lamentablemente esta respuesta es incorrecta.
William Cerniuk
use brew install coreutilspara obtener la cpversión correcta .
drew7721
0

No estoy seguro de por qué el botón predeterminado Lion Merge no aparece para mí. Pero terminé usando ditto. Encontrado aquí: https://superuser.com/a/221599/102789

dallen
fuente
1
¡TEN CUIDADO! Lo mismo no guarda los archivos más nuevos, siempre sobrescribe el destino con la fuente. Si el archivo de origen es anterior, eliminará el nuevo archivo y lo reemplazará con un archivo anterior
FrancescoMM
es correcto - advertencia muy importante de FrancescoMM, use rsync
Andrzej Martyna