
Estoy trabajando en la migración de un gran sitio web de WordPress y solo quiero migrar imágenes originales. No quiero copiar las imágenes que crea WordPress. Al usar rsync, no veo una manera en los documentos de tener en cuenta las múltiples variaciones de tamaños de imágenes y excluirlas. Lo mejor que se me ocurrió es crear una regla para cada escenario posible de tamaño de imagen. ¿Es esto lo mejor que voy a conseguir o hay alguna manera de SECARLO?
Como ejemplo:
rsync -avPzn -e ssh webhost:/site/www.domain.com/images .
--exclude=**\-[0-9][0-9]x[0-9][0-9].jpg
--exclude=**\-[0-9][0-9][0-9]x[0-9][0-9].jpg
--exclude=**\-[0-9][0-9]x[0-9][0-9][0-9].jpg
--exclude=**\-[0-9][0-9]x[0-9][0-9].png
--exclude=**\-[0-9][0-9][0-9]x[0-9][0-9].png
--exclude=**\-[0-9][0-9]x[0-9][0-9][0-9].png
...
Una imagen nombrada image.jpg
tendrá varias copias nombradas image-100x100.jpg
, etc.
Respuesta1
En su lugar, podría canalizar a rsync la lista de archivos que desea copiar y utilizar otro medio para excluir los nombres de imágenes no deseados. Esto puede ser tan simple como usar find
una exclusión de expresión regular, por ejemplo:
ssh webhost find /site/www.domain.com/images \
! -regex '.*[0-9]+x[0-9]+\.\(png\|jpg\)' | \
rsync -avPzn --files-from=- webhost:/ .
Tenga en cuenta que la expresión regular tiene una sintaxis implícita ^
y $
usa emacs de forma predeterminada. Quizás prefieras una versión posix:
-regextype posix-extended -regex '.*[0-9]+x[0-9]+\.(png|jpg)'
Si su find
comando no tiene estas opciones, puede usar sed
o similar para filtrar los nombres de archivos. Dado que la búsqueda produce nombres de ruta completos, necesita obtener rsync para usarlo /
como base.