
No estoy seguro de por qué esto no funciona como se esperaba. Tengo una copia de seguridad rsync completa de /scripts/source en /scripts/full y quiero colocar una copia de seguridad diferencial en /scripts/diff. Sin embargo, cuando se agrega un archivo a la ubicación de origen de /scripts/source y luego se ejecuta una copia de seguridad diferencial , se realiza una copia de seguridad de los archivos en /scripts/full en lugar de /scripts/diff Aquí hay un script de prueba que hice:
DIFF='/scripts/diff'
SOURCE='/scripts/source'
FULL='/scripts/full'
CTIME=$(date +%T)
TESTFILE=newfile$CTIME
rm -r $DIFF/*
rm $SOURCE/newfile*
rm $FULL/newfile*
echo "I'm in a file " > $SOURCE/$TESTFILE
rsync \
-a \
-A \
-X \
-h \
-H \
-b \
--backup-dir=$DIFF \
$SOURCE/* \
$FULL
echo "----------------------------------------------------------------------"
echo "Our test file is: $TESTFILE"
echo "----------------------------------------------------------------------"
echo "Source Files in $SOURCE - we should see our one test file"
ls $SOURCE
echo "----------------------------------------------------------------------"
echo "Full backup in past - We should not see any test files here"
ls $FULL
echo "----------------------------------------------------------------------"
echo "Diff files in $DIFF - we should see the same test file here as"
echo "was in the $SOURCE dir"
ls $DIFF
En el script, el archivo de prueba se coloca en el directorio de origen. rsync no debería copiar el directorio completo (pero lo hace). Debe copiarse en el directorio diff (no lo es).
Volver a leer las páginas de manual y buscar en la web no ha ayudado. Los esquemas de copia de seguridad diferenciales simples, cuando se adaptan a mi entorno, simplemente no funcionan. ¿Qué estoy haciendo mal aquí? Quiero hacer una copia de seguridad completa de vez en cuando. Luego quiero ejecutar diferencias posteriores que contengan solo los archivos modificados (mientras que la copia de seguridad completa nunca cambia). La idea es que hay una copia de seguridad completa a la que hacer referencia y los archivos modificados se pueden encontrar en la diferencia. Mi guión es más complejo que esto, pero lo simplifiqué para aislar el problema. Gracias, -Jeff
Respuesta1
Supongo que las opciones -b
--backup-dir
no funcionan como esperas.
Puedes intentar utilizar una opción diferente --link-dest
. Su línea de comando debe ser similar a la siguiente
rsync -aAXhH --link-dest=/scripts/full/ /scripts/source/ /scripts/diff/
¿Cuál es el significado?
Le está diciendo que rsync
compare los archivos de /scripts/source/
(los nuevos) con los de /scripts/diff/
(que están vacíos)y en el directorio adicional /scripts/full/
(Ese es el de su copia de seguridad).
Notas:
- Normalmente es mejor proteger la variable con comillas dobles
""
.TESTFILE="newfile${CTIME}"
entonces mejorTESTFILE=newfile$CTIME
Del hombre
rsync
:--link-dest=DIR hardlink to files in DIR when unchanged
Las opciones
--backup-dir
(...) probablemente se usan para hacer una copia del archivo, generalmente con una extensión diferente o en un directorio diferente, en lugar de sobrescribir el archivo en el directorio de destino.-b, --backup make backups (see --suffix & --backup-dir) --backup-dir=DIR make backups into hierarchy based in DIR --suffix=SUFFIX backup suffix (default ~ w/o --backup-dir)
- Si deberían serlomenos nebuloso...