rsync --backup-dir no recibe datos modificados; en su lugar, va a la ubicación de copia de seguridad original

rsync --backup-dir no recibe datos modificados; en su lugar, va a la ubicación de copia de seguridad original

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-dirno 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 rsynccompare 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 hombrersync:

    --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...

información relacionada