# /bin/bash # setup server='aaaa' remote_dir='/www/' rsync_exclude=('/www/images/uploads/*') # index.php excluded and send last because of maintenance mode common_exclude=('*.ssh' '/temp/*' '/log/*' '/nbproject' '/.git' '.gitignore' 'composer.json' '/www/index.php') current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd $current_dir # set maintenance mode echo '* setting maintenance mode on remote app' rsync -v --dry-run \ "$server:$remote_dir/www/index.php temp/" sed -i "s/\/\/\s*require '.maintenance.php';/require '.maintenance.php';/" index.php rsync -v --dry-run \ "temp/index.php $server:$remote_dir/www/" rm temp/index.php # create exclude text file for i in "${rsync_exclude[@]}" do echo $i >> exclude.txt done for i in "${common_exclude[@]}" do echo $i >> exclude.txt done echo '* Starting rsync to $server:$target_dir/test/' rsync -v --dry-run \ -r --delete \ --filter "P log/*.log" --filter "P log/*.html" \ --include ".htaccess" --exclude-from exclude.txt \ "." "moved/" # . "$server:$target_dir/test/" rm exclude.txt echo '* files uploaded. Sending index.php' rsync -v --dry-run \ www/index.php "$server:$remote_dir/www/" echo '* maintance mode off. files uploaded'