Este artículo ha sido probado por nuestros especialistas para garantizar la veracidad de nuestro post.
Solución:
Para agregar a la respuesta de Nils (para cualquiera que encuentre esto a través de Google), de forma predeterminada rsync
solo compara los tamaños de archivo y los tiempos de modificación para saber si hay alguna diferencia. (Si son diferentes, hace más, pero si son iguales, se detiene allí).
Si desea comparar el archivo real contenidoincluso para archivos que tienen el mismo tamaño y fecha de última modificación, agregue la bandera -c
decir rsync
para comparar los archivos utilizando una suma de comprobación.
rsync -avnc $SOURCE $TARGET
(El -u
opción le dice a rsync que ignore los archivos que son más nuevos en $TARGET
que en $SOURCE
que probablemente no desee si está comparando contenidos).
Probablemente tendrás que ejecutar algo como
rsync -avun --delete
en ambas direcciones.
Pero, ¿qué estás tratando de lograr en realidad?
Actualizar:
rsync -avun --delete $TARGET $SOURCE |grep "^deleting "
le dará una lista de archivos que no existen en el directorio de destino.
“grep delet” porque cada línea imprime: eliminaring ..archivo..
rsync -avun $SOURCE $TARGET
le dará una lista de archivos “diferentes” (incluidos los archivos nuevos).
Solo para aquellos menos familiarizados con rsync
:
rsync -rvnc --delete $SOURCE/ $DEST
-n
: bit más importante — hacer no Cambia cualquier cosa ;-rc
: compare solo los contenidos (de lo contrario, use-ac
) ;-v
: enumerar los archivos)--delete
: busque una diferencia simétrica, no unidireccional.- Por fin,
/
significa “mirar dentro del directorio y comparar su contenido al destino”.
Imprimirá un habitual
rsync
producción,
- con uno
en una línea para cada archivo “nuevo” en $SOURCE
y uno “borrando
“ línea para cada archivo “nuevo” en$DEST
.También puede imprimir algunas advertencias, como “saltar archivo no regular
“ para enlaces simbólicos.
PD. Sé que es un PS terrible, pero de hecho se agregó rápidamente. Sin embargo, apuesto a que uno puede encontrar esto útil.
PPS. Alternativamente, también se podría hacer
find $SOURCE -type f -exec md5sum ; | tee source.md5
find $DEST -type f -exec md5sum ; | tee dest.md5
Si los nombres de archivo no contienen saltos de línea, podemos ordenar ambos *.md5
archivos, y diff
ellos. (Sin embargo, esto solo funcionará para archivos; es decir, no se detectará un directorio vacío en cualquier lado).
Aquí puedes ver las reseñas y valoraciones de los usuarios
Finalizando este artículo puedes encontrar las referencias de otros desarrolladores, tú aún puedes dejar el tuyo si lo crees conveniente.