Can Rsync se configura para verificar el contenido del archivo antes de sincronizarlo. He oído hablar de suma de comprobación, pero supe que la suma de comprobación solo hace una muestra. Quiero transferir un archivo solo si el contenido está cambiado y no la marca de tiempo, ¿hay alguna forma de hacerlo con cualquiera de los modos de sincronización rs? En mi caso, digamos que el archivo sample.text se creará todas las semanas y quiero sincronizarlo con un servidor remoto solo si se modifican los contenidos de sample.text, ya que se crea todas las semanas, la marca de tiempo obviamente cambiará. Pero quiero la transferencia solo en un cambio de contenido.Puede verificar el contenido de rsync antes de sincronizar
Respuesta
Sí, debe leer el manual.
$ man rsync | grep "\--checksum"
-c, --checksum skip based on checksum, not mod-time & size
Rsync es bastante complicado. Recomiendo el tiempo de acurrucamiento con la página man y la experimentación con datos de prueba antes de usarlo para cualquier cosa remotamente importante.
La mayoría de las veces, las personas usan rsync -ac source dest
.
$ man rsync | grep "\--archive"
-a, --archive archive mode; same as -rlptgoD (no -H)
Y eso significa -rlptgoD
basura: recursive
, copy symlinks as symlinks
, preserve permissions
, preserve times
, preserve group
, preserve owner
, preserve device files (super-user only)
, preserve special files
y skip based on checksum, not mod-time & size
El -c
o --checksum
es realmente lo que está buscando, y su suposición que solo muestrea mtime y el tamaño es incorrecto.
+ para el tiempo de acomplamiento con la página man y la experimentación con datos de prueba_ - Extremadamente buenos consejos –
Consulte la opción --checksum
en la página man de rsync.
Además, la opción --size-only
será una opción más rápida si está seguro de que un cambio de contenido también significa un cambio de tamaño.
Ejemplo:
#!/bin/bash
echo > diff.txt
rsync -rvcn --delete /source/ /destination/ > diff.txt
second_row=$(sed -n '2p' diff.txt)
if [ "$second_row" = "" ]; then
echo there was no change
else
echo there was change
fi
Realmente debería agregar alguna explicación sobre por qué debería funcionar este código; también puede agregar comentarios en el código mismo; en su forma actual, lo hace no brinde ninguna explicación que pueda ayudar al resto de la comunidad a comprender lo que hizo para resolver/responder la pregunta. – ishmaelMakitla
Si no hubo cambios, la segunda fila de diff.txt en modo detallado de rsync está vacía, sed examine esta segunda línea. – oldbowman
- 1. rsync
- 2. Cómo sincronizar rsync a carpetas locales desde una vista Django
- 3. ¿Puede la compatibilidad de rsync One to Many syncing?
- 4. Fórmula de Excel para verificar el contenido de la celda
- 5. Cómo cambiar el propietario de una rsync
- 6. ¿Cómo verificar snapin antes de agregar?
- 7. C# Verificar si el archivo de texto tiene contenido
- 8. No se puede sincronizar con MacPorts desde SVN
- 9. verificar el contenido de la entrada de cadena
- 10. Asp.Net Verificar el tamaño del archivo antes de cargar
- 11. ¿Deberíamos verificar si el elemento existe antes de asignar eventos?
- 12. rsync no sincroniza el archivo .htaccess
- 13. El uso de rsync para eliminar un solo archivo existe
- 14. Rsync en android
- 15. Tarjetas de crédito: ¿Se puede verificar AVS antes de la autorización?
- 16. Cifrado Rsync
- 17. Supervisión del progreso de Rsync
- 18. Contenido HTML5 ¿Se puede verificar si el formato se aplica con execCommand?
- 19. RSync: ¿Cómo sincronizo en ambas direcciones?
- 20. Ftp transferir el rsync-way
- 21. ¿Las operaciones de rsync son atómicas a nivel de archivo?
- 22. Verificar el acceso de escritura en un directorio antes de crear archivos dentro de él
- 23. ¿Debo verificar si ProgressBar está mostrando antes de descartarlo?
- 24. Verificar valores de enum válidos antes de usar enum
- 25. cygwin + rsync
- 26. ¿Cómo se puede "verificar" el código?
- 27. Almacenamiento de contenido de UITextField antes de ver pops
- 28. Sincronizar 2 campos de entrada, ¿se puede hacer usando jQuery?
- 29. ¿Cómo se puede sincronizar fácilmente un bloque de código C#?
- 30. no puede conseguir a rsync opción para excluir dir
¿Ha probado la página del manual de rsync? -c, --checksum Esto cambia la forma en que rsync comprueba si los archivos han sido cambiados y si necesitan una transferencia. Sin esta opción, rsync usa una "comprobación rápida" que (de forma predeterminada) verifica si el tamaño y la hora de la última modificación coinciden entre el emisor y el receptor. –