Combine varias carpetas, pero mantenga solo el archivo más nuevo cuando se encuentren conflictos

0

He golpeado un poco la pared con mis copias de seguridad. Tengo tres copias de seguridad, cada una es diferente, algunas contienen archivos más nuevos que otras copias de seguridad. Quiero unir estas tres carpetas en una, pero cuando surja un conflicto, mantenga la versión más reciente.

He intentado Buscador de rutas con dos carpetas de prueba. Una carpeta tenía dos subdirectorios, y en cada subdirectorio había dos archivos. Cada archivo ha sido modificado en diferentes momentos. Luego resolví el aspecto del árbol de archivos fusionado resultante y luego ejecuté una prueba real, que no funcionó ...

Puedeverquesobrescribióelarchivomásreciente(/One/Sub1/File1)conelmásantiguo(/Two/Sub1/File1),aunqueseleccioné"Keep Newer (fecha de modificación)" para los archivos con la combinación de buscador de ruta. Pero, por alguna extraña razón, mantuvo el archivo más nuevo en la carpeta "Sub 2".

Esto obviamente no es correcto. Y antes de seguir adelante y escribir mi propio programa para hacer esto correctamente, me gustaría saber si existen programas confiables para hacer esto por mí.

Aquí hay en juego alrededor de 4 TB de datos, varios millones de archivos.

    
pregunta thephpdev 20.08.2015 - 18:02

1 respuesta

1

Solo usa rsync:

rsync -au .../src/ .../dest/
rsync -auiP .../src/ .../dest/ #if you need some visual output

y eliminar / src después

con:

-a, --archive               archive mode; same as -rlptgoD  
-u, --update                skip files that are newer on the receiver  
-i, --itemize-changes       output a change-summary for all updates  
-P                          same as --partial --progress  
                            --progress show progress during transfer  
                            --partial keep partially transferred files  

Por favor, compruebe man rsync para -rlptgoD

    
respondido por el klanomath 20.08.2015 - 19:32

Lea otras preguntas en las etiquetas