View difference between Paste ID: ysvz6GX2 and MBmDzk38
SHOW: | | - or go back to the newest paste.
1
#!/bin/bash
2
#modified by John Louis C. Garcia on Feb. 12, 2014
3
#original source by Pieter at http://www.rapidcommerce.eu/blog/2012/08/remove-unused-magento-product-images/#comment-14649
4
#works with remote database hostname
5
#works also if you have cache(memcached/apc) enabled on local.xml
6
7
#instruction: change the MAGENTO_PATH.
8
9
MAGENTO_PATH="/var/www/path/to/vhost/httpdocs/path/to/magento"
10
LOG=${MAGENTO_PATH}/var/log/imagecleanup.log
11
DB_USER=$(sed -n 's|<username><\!\[CDATA\[\(.*\)\]\]></username>|\1|p' ${MAGENTO_PATH}/app/etc/local.xml | tr -d ' ')
12
DB_PASS=$(sed -n 's|<password><\!\[CDATA\[\(.*\)\]\]></password>|\1|p' ${MAGENTO_PATH}/app/etc/local.xml | tr -d ' ')
13
DB_NAME=$(sed -n 's|<dbname><\!\[CDATA\[\(.*\)\]\]></dbname>|\1|p' ${MAGENTO_PATH}/app/etc/local.xml | tr -d ' ')
14
DB_PREFIX=$(sed -n 's|<table_prefix><\!\[CDATA\[\(.*\)\]\]></table_prefix>|\1|p' ${MAGENTO_PATH}/app/etc/local.xml | tr -d ' ')
15
DB_REMOTEHOST=$(sed -n 's|<host><\!\[CDATA\[\(.*\)\]\]></host>|\1|p' ${MAGENTO_PATH}/app/etc/local.xml | tr -d ' ' | awk 'END{print}')
16
function search_db() {
17-
        COUNT=$(mysql -u ${DB_USER} -p${DB_PASS} -h ${DB_REMOTEHOST} ${DB_NAME} --execute="SELECT count(*) FROM ${DB_PREFIX}catalog_product_entity_media_gallery WHERE $
17+
        COUNT=$(mysql -u ${DB_USER} -p${DB_PASS} -h ${DB_REMOTEHOST} ${DB_NAME} --execute="SELECT count(*) FROM ${DB_PREFIX}catalog_product_entity_media_gallery WHERE value = \"$1\"")
18
        echo $(echo ${COUNT} | cut -d" " -f2)
19
}
20
21
echo "Starting image cleanup " $(date) | tee -a ${LOG}
22
IMG_PATH=${MAGENTO_PATH}/media/catalog/product/
23
for IMG in $(find ${IMG_PATH} -name '*.jpg' ! -path '*cache*' ! -name 'google*'); do
24
        REL_IMG=/${IMG:${#IMG_PATH}}
25
        if [ $(search_db ${REL_IMG/'${MAGENTO_PATH}/media/catalog/product'/}) != 1 ]; then
26
                IMG=${IMG##*/}
27
                for CACHE_IMG in $(find ${MAGENTO_PATH}/media/catalog/product/ -name "${IMG}"); do
28
                        echo "Found unused image ${CACHE_IMG}"
29
                        if [ "$1" ] && [ $1 == 'cleanup' ]; then
30
                                echo "Removing unused image ${CACHE_IMG}" | tee -a ${LOG}
31
                                rm "${CACHE_IMG}"
32
                        fi
33
                done
34
        else
35
                echo "Not touching " ${IMG}
36
        fi
37
done
38
echo "Finished image cleanup " $(date) | tee -a ${LOG}
39
40
41
exit 0;