Вчера, с целью использования на шаред-хостинге NIC.ru понадобилось написать bash скрипт для переноса сайта из тестового расположения в публичное (в пределах одного сервера).
Скрипт использует rsync для синхронизации файлов и mysqldump для базы данных.
#!/bin/bash # Config dbhost="*dbhost*" dbuser="*dbuser*" dbpass="*dbpass*" donor_site="test_version.com" donor_db="testversion_db_name" target_site="public_version.com" target_db="public_version_db_name" # Set vars tmp="tmp" DIR="$( cd "$( dirname "$0" )" && pwd )" echo $DIR BASE="$( cd .. && pwd )" echo $BASE # Clean temp folder echo -ne "Cache clean... " rm -r $tmp mkdir $tmp rc=$? if ; then echo "error" exit $rc else echo "OK" fi echo -ne "Dumping... " mysqldump -h$dbhost -u$dbuser -p$dbpass $donor_db > $DIR/$tmp/dump.sql rc=$? if ; then echo "error" exit $rc else echo "OK" fi echo -ne "Dump upload... " mysql -h$dbhost -u$dbuser -p$dbpass $target_db < $DIR/$tmp/dump.sql rc=$? if ; then echo "error" exit $rc else echo "OK" fi echo -ne "MODX cache clean... " rm -rf $BASE/$donor_site/docs/core/cache #clean cache rc=$? if ; then echo "OK" else echo "error" exit $rc fi echo -ne "Sync files... " rsync -r --inplace --partial --delete-after --exclude=*access --exclude=robots.txt --exclude=config.inc.php --exclude=config.core.php --no-compress $BASE/$donor_site/docs/ $BASE/$target_site/docs rc=$? if ; then echo "OK" else echo "error" echo "Manual sync files... " echo "rsync -r --inplace --partial --delete-after --exclude=*access --exclude=robots.txt --exclude=config.inc.php --exclude=config.core.php --no-compress" echo "from $BASE/$donor_site/docs/" echo "to $BASE/$target_site/docs" exit $rc fi # Return code exit 0