Я работаю над миграцией большого веб-сайта WordPress и хочу перенести только исходные изображения. Я не хочу копировать изображения, создаваемые WordPress. Используя rsync, я не вижу в документации способа учесть несколько вариантов размеров изображений и исключить их. Лучшее, что я придумал, - это создать правило для каждого возможного сценария размера изображения. Это лучшее, что я собираюсь получить, или есть способ СУШИТЬ это?
Например:
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
...
Изображение с именем image.jpg
будет иметь несколько копий с именем image-100x100.jpg
и т.п.
Вместо этого вы можете передать в rsync список файлов, которые вы хотите скопировать, и использовать другие средства для исключения нежелательных имен изображений. Это может быть так же просто, как использовать find
с исключением регулярного выражения, например:
ssh webhost find /site/www.domain.com/images \
! -regex '.*[0-9]+x[0-9]+\.\(png\|jpg\)' | \
rsync -avPzn --files-from=- webhost:/ .
Обратите внимание, что регулярное выражение подразумевает ^
и $
и по умолчанию использует синтаксис emacs. Вы можете предпочесть версию posix:
-regextype posix-extended -regex '.*[0-9]+x[0-9]+\.(png|jpg)'
Если ваш find
команда не имеет этих параметров, вы можете использовать sed
или аналогично, чтобы отфильтровать имена файлов. Так как поиск производит полные пути, вам нужно заставить rsync использовать /
в качестве основы.