#!/bin/bash set -e PROGNAME=$(basename $0) SRC_UPLOADS_DIR=/var/lib/wordpress/wp-content/uploads DST_UPLOADS_DIR=/var/lib/wordpress/wp-content/uploads SRC_UPLOADS_HOST=vermicelli DST_UPLOADS_HOST=tirapasta SCRIPT_FILE=/tmp/${PROGNAME#gen-} { echo '#!/bin/bash' echo 'set -e' echo 'PROGNAME=$(basename $0)' echo echo '# Variables' echo 'DB_DUMP=/tmp/$PROGNAME.$$.sql' # Propogate variables to generated script. echo "SRC_UPLOADS_HOST=$SRC_UPLOADS_HOST" echo "SRC_UPLOADS_DIR=$SRC_UPLOADS_DIR" echo "DST_UPLOADS_DIR=$DST_UPLOADS_DIR" # Exclude common. These have to by moved manually later. echo "ATTACHMENT_FILES=\"$(cd $SRC_UPLOADS_DIR && find * \( -path common -prune \) -o -type f -print | egrep -v -- '-((1024|300|150|120|80)x[0-9]+|[0-9]+x(1024|300|150|120|80))\.(png|jpg)$' | sort | paste -d' ' -s)\"" echo echo '# Dump database' echo 'mysqldump --add-drop-table wordpress > $DB_DUMP' echo echo 'cd $DST_UPLOADS_DIR' echo 'for FILE in $ATTACHMENT_FILES; do' echo ' FILE_BASENAME=${FILE##*/}' echo ' FILE_DIRNAME=${FILE%/*}' echo ' echo "$FILE_BASENAME ..."' echo ' # Fix the database entry.' echo ' perl -pi -e "s#(${FILE_BASENAME%.*})(-\\d+x\\d+)?.(jpg|png)#$FILE_DIRNAME/\$1\$2.\$3#g" $DB_DUMP' echo ' # Move the file.' echo ' mkdir -p "$FILE_DIRNAME"' echo ' mv "$FILE_BASENAME" "$FILE_DIRNAME"' echo ' # Move any thumbnails.' echo ' find * | egrep "${FILE_BASENAME%.*}-((1024|300|150|120|80)x[0-9]+|[0-9]+x(1024|300|150|120|80))\.${FILE_BASENAME##*.}" | while read FILE2; do' echo ' mv "$FILE2" "$FILE_DIRNAME/"' echo ' done' echo 'done' echo 'chown -R www-data:www-data $DST_UPLOADS_DIR' echo echo '# Reload database' echo 'echo "reloading database; please be patient ..."' echo 'mysql wordpress < $DB_DUMP' echo 'rm -f $DB_DUMP' } > $SCRIPT_FILE chmod 700 $SCRIPT_FILE echo "$SCRIPT_FILE has been generated; copy to $DST_UPLOADS_HOST and run it."