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.