encontrar y rsync?

24

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

¿Hay alguna manera de combinar estos dos comandos?

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

Respuestas:

33

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

Método 1

Estas 2 opciones son muy similares, ambas suponen que está cambiando los directorios a alguna ubicación y luego ejecuta el findcomando desde allí.

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

También puede usar 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 --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 crear un CD en su directorio src primero.

Referencias

slm
fuente