¿Cómo puedo sincronizar de SRC a DEST, verificar el archivo DEST y luego eliminar el archivo SRC? (cursivamente)

¿Cómo puedo sincronizar de SRC a DEST, verificar el archivo DEST y luego eliminar el archivo SRC? (cursivamente)

Tengo dos directorios en un script bash sostenido por estas dos variables

$SRC

$DEST


¿Cómo haría unrsync

  1. copiar archivos de $SRC/ a $DEST/,
  2. Verificar que los archivos $DEST/* coincidan con los archivos $SRC/ (la mejor coincidencia disponible, aunque sea lenta)
  3. y luego eliminar el archivo $SRC/?

Todo lo que busco en Google da un ejemplo de cómo hacer un rsync y luego eliminar el archivo DEST.

No entiendo esto, ¿por qué haría rsyncun directorio de destino y luego lo eliminaría?

Haz una búsqueda en Google y verás a qué me refiero.

Respuesta1

Entonces la opción para Mover un archivo es --remove-source-files. Aquí está elpágina de manual, y vea alguna discusión aquí: https://unix.stackexchange.com/questions/43957/using-rsync-to-move-not-copy-files-between-directories

Tenga en cuenta que rsync siempre verifica los archivos mediante sumas de verificación, pero depende de usted si eso es suficiente para sus inquietudes. Es notable que la suma de verificación del destino se calcula en la transferencia, no después de escribir en el disco, por lo que no se calcula en función del archivo resultante y no obtendrá una falla, a menos que haya un error del sistema operativo cuando se escribe. Alguna discusión sobre eso aquí: https://unix.stackexchange.com/questions/30970/does-rsync-verify-files-copied-between-two-local-drives

Si esto no es suficiente para sus necesidades, considere escribir un script para rsync los archivos sin eliminar la fuente, ejecutar rsync nuevamente con -cpara seleccionar/copiar archivos que no coincidan por suma de verificación y luego, finalmente, eliminar los archivos fuente con rmo lo que sea.

Respuesta2

Este debería ser un uso sencillo de rsyncla --remove-source-filesopción

rsync --dry-run --stats -av --remove-source-files "$SRC/" "$DEST/"

Elimínelo --dry-run(y tal vez --stats) cuando esté satisfecho de que el comando hará lo que cree que debería hacer.

información relacionada