#!/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' # 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" # Find attachments, excluding thumbnails ('cos thumbnail resolutions # may differ on source and destination, so thumbnail filenames # may differ). echo "ATTACHMENT_FILES=\"$(cd $SRC_UPLOADS_DIR && find * -type f | egrep -v -- '-((1024|300|150|120|80)x[0-9]+|[0-9]+x(1024|300|150|120|80))\.(png|jpg)$' | sort -u | paste -d' ' -s)\"" echo # Copy over missing files and associated thumbnails. echo 'cd $DST_UPLOADS_DIR' echo 'for FILE in $ATTACHMENT_FILES; do' echo ' FILE_BASENAME=${FILE##*/}' echo ' FILE_DIRNAME=${FILE%/*}' echo ' [ -f $FILE_BASENAME ] || {' echo ' scp $SRC_UPLOADS_HOST:$SRC_UPLOADS_DIR/$FILE_DIRNAME/$FILE_BASENAME $DST_UPLOADS_DIR/' # Only attempt to copy thumbnails for jpg and png files. echo ' ! [[ ${FILE_BASENAME##*.} =~ ^(jpg|png)$ ]] || scp $SRC_UPLOADS_HOST:$SRC_UPLOADS_DIR/$FILE_DIRNAME/${FILE_BASENAME%.*}-*.${FILE_BASENAME##*.} $DST_UPLOADS_DIR/' echo ' }' echo 'done' echo 'chown -R www-data:www-data $DST_UPLOADS_DIR' } > $SCRIPT_FILE chmod 700 $SCRIPT_FILE echo "$SCRIPT_FILE has been generated; copy to $DST_UPLOADS_HOST and run it."