您的购物车目前是空的!
自从前段时间新浪开启防盗链不能做位图床之后,我们写了【新浪图床近期不稳定论自建图床的重要性】,建议大家自建图床。下面我们说一下如何快速得将WordPress站点中使用到的新浪图片利用Shell脚本迅速本地化。本方法使用所有的网站,我们这里只是将WordPress作为举例说明。
Table of Contents
备份是基础工作,大家一定要经常备份。
备份完成后我们这里将sql文件保存为:『 jiloc.sql 』
如果你是打开你网站的每一个页面,然后一个个去找的话,请打开窗户,确认下面没人,然后把电脑丢下去。老季这里提供一个非常快速的方法找出所有新浪图床上的图片,我们先来看看新浪图床图片 URL 的特点(主要是 ·wp_posts
· 表):
http://wx4.sinaimg.cn/mw690/644ee728gy1fv0uy0qkzaj20im0okdtl.jpg http://wx1.sinaimg.cn/mw690/644ee728gy1fv0wn9qytrj21hc0ein4u.jpg http://wx3.sinaimg.cn/mw690/644ee728gy1fv0wn8y93cj20sg07pq94.jpg
我们需要一个正则表达式把上面的链接都匹配出来
最终的正则表达式为
https?://wx[0-9].sinaimg.cn[a-Z0-9/]+?.(jpg|png|gif)
当然,如果你的网站数据库非常大的话,你需要把这条正则写的尽量的精确,免得半天都跑不出来结果,比方说你全站 https 就可以这样写:
http://wx[1-4].sinaimg.cn/large/[a-Z0-9/]+?.(jpg|png|gif)
正则有了,我们现在去网站的数据库文件里面把所有新浪图床上的图片捞出来,执行下面的命令,最后的 jiloc.sql 是网站数据库备份文件。
正则有了,我们现在去网站的数据库文件里面把所有新浪图床上的图片捞出来,在终端中执行下面的命令,最后的 jiloc.sql 是网站数据库备份文件。
grep -Eo 'https?://wx[0-9].sinaimg.cn[a-Z0-9/]+?.(jpg|png|gif)' jiloc.sql
我们这里站点用的图片全部都是 mw690
目录的图片。这里一定要注意,后面SQL语句替换的时候要用到。
注:这里只是正则匹配图片,并没有去重功能。
我们在shell中用一个 for 循环把新浪上的图片全下载下来,建议在网站根目录新建一个图片目录,把你网站数据库备份文件 jiloc.sql
也放到这里,然后把图片全下载到这里,在图片目录里面执行,这里将图片目录设定在 wp-content/uploads/images/
:
for i in `grep -Eo 'https?://wx[0-9].sinaimg.cn[a-Z0-9/]+?.(jpg|png|gif)' jiloc.sql`;do wget $i;done
注意:本方法仅适用在Linux系统Shell终端中。
如果有重复的文件则会命名为:xxxxx.jpg.1 , xxxxx.png.2 之类,可以通过在shell中执行下面命令批量删除。
rm -rf *.jpg.[0-9]
这里的.jpg需要自己分析下载到本地的文件名。
rm *.sql