Tengo dos directorios en un script bash sostenido por estas dos variables
$SRC
$DEST
¿Cómo haría unrsync
- copiar archivos de $SRC/ a $DEST/,
- Verificar que los archivos $DEST/* coincidan con los archivos $SRC/ (la mejor coincidencia disponible, aunque sea lenta)
- 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 rsync
un 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 -c
para seleccionar/copiar archivos que no coincidan por suma de verificación y luego, finalmente, eliminar los archivos fuente con rm
o lo que sea.
Respuesta2
Este debería ser un uso sencillo de rsync
la --remove-source-files
opció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.