bash – encontrar y rsync?

Pregunta:

Quiero poder buscar archivos durante 14 días y más de 10k y luego rsync esos archivos encontrados en un destino.

¿Hay alguna forma de combinar estos dos comandos?

find ./ -mtime +14 -size +10k 
rsync --remove-sent-files -avz /src /dest

Respuesta:

Puede enviar la salida de find a rsync usando una de las opciones que se describen a continuación.

Método 1

Estas 2 opciones son muy similares, ambas asumen que estás cambiando de directorio a alguna ubicación y luego ejecutas el comando de find desde allí.

$ rsync -avz --remove-sent-files \
        --files-from=<(find ./ -mtime +14 -size +10k) ./ /dest

También puede utilizar una tubería para alimentar la lista en:

$ find ./ -mtime +14 -size +10k -print0 \
        | rsync -av --files-from=- --from0 ./ /dest

Método # 2

Este método se puede ejecutar desde cualquier lugar.

$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
        | rsync -av --files-from=- --from0 /src/dir/ /dst/dir/
  • printf %P : nombre del archivo con el nombre del argumento de la línea de comando bajo el cual se encontró eliminado. De esta manera, puede usar cualquier directorio src, sin necesidad de ingresar primero en su directorio src.

Referencias

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım