403Webshell
Server IP : _  /  Your IP : 169.254.129.1
Web Server : nginx/1.28.0
System : Linux 89e302d72aa1 6.6.143.1-1.azl3 #1 SMP PREEMPT_DYNAMIC Mon Jul 6 04:01:14 UTC 2026 x86_64
User : nginx ( 103)
PHP Version : 8.2.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/local/bin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/local/bin/filesync.sh
#!/bin/bash

test ! -d $FILESYNC_STATUS_FILE_DIR && mkdir -p $FILESYNC_STATUS_FILE_DIR
touch $FILESYNC_STATUS_FILE_PATH

trycount=1

while [ $trycount -le 3 ]
do
	#initial copy from /home/site/wwwroot to /var/www/wordpress
	if [ ! $(grep -c "RSYNC_COMPLETED" $FILESYNC_STATUS_FILE_PATH) -gt 0 ]; then
		rsync -a $WORDPRESS_HOME/ $HOME_SITE_LOCAL_STG/ --exclude $UNISON_EXCLUDED_PATH
		exit_code=$?
		if [ $exit_code -eq 0 ] || [ $exit_code -eq 24 ]; then
			echo "RSYNC_COMPLETED" >> $FILESYNC_STATUS_FILE_PATH
		fi
	fi
	
	#run synchronous unison command that generates checksums for faster asynchronous unison filesync 
	#faster asynchronous unison ensures filesync happens before nginx is started after 10 min
	if [ $(grep -c "RSYNC_COMPLETED" $FILESYNC_STATUS_FILE_PATH) -gt 0 ] && [ ! $(grep -c "SYNCHRONOUS_UNISON_COMPLETED" $FILESYNC_STATUS_FILE_PATH) -gt 0 ] \
	&& unison WORDPRESS_HOME HOME_SITE_LOCAL_STG -auto -batch -times -copythreshold 1000 -prefer WORDPRESS_HOME -ignore 'Path UNISON_EXCLUDED_PATH' -perms 0 -log=false ; then
		echo "SYNCHRONOUS_UNISON_COMPLETED" >> $FILESYNC_STATUS_FILE_PATH
	fi

	# Update file permissions an directory ownership after initial copy
	if [ $(grep -c "SYNCHRONOUS_UNISON_COMPLETED" $FILESYNC_STATUS_FILE_PATH) -gt 0 ] && [ ! $(grep -c "INITIAL_FILESYNC_COMPLETED" $FILESYNC_STATUS_FILE_PATH) -gt 0 ] \
	&& ln -s $WORDPRESS_HOME/$UNISON_EXCLUDED_PATH $HOME_SITE_LOCAL_STG/$UNISON_EXCLUDED_PATH \
	&& chown -R nginx:nginx $HOME_SITE_LOCAL_STG \
	&& chmod -R 777 $HOME_SITE_LOCAL_STG; then
		echo "INITIAL_FILESYNC_COMPLETED" >> $FILESYNC_STATUS_FILE_PATH
	fi

	# start unison for continuous filesync
	if [ $(grep -c "INITIAL_FILESYNC_COMPLETED" $FILESYNC_STATUS_FILE_PATH) -gt 0 ] && [ ! $(grep -c "UNISON_PROCESS_STARTED" $FILESYNC_STATUS_FILE_PATH) -gt 0 ] \
	&& supervisorctl start unison \
	&& supervisorctl start perms-service \
	&& supervisorctl start inotifywait-perms-service \
	&& supervisorctl start unison-cleanup-service; then
		echo "UNISON_PROCESS_STARTED" >> $FILESYNC_STATUS_FILE_PATH
	fi

	if [ $(grep -c "UNISON_PROCESS_STARTED" $FILESYNC_STATUS_FILE_PATH) -gt 0 ] && [ ! $(grep -c "NGINX_CONFIG_UPDATED" $FILESYNC_STATUS_FILE_PATH) -gt 0 ]; then
		sleep 180 	# wait 3min for unison to sync fileserver and local storage before reloading nginx
		if sed -i "s#${WORDPRESS_HOME}#${HOME_SITE_LOCAL_STG}#g" /etc/nginx/conf.d/default.conf \
			&& /usr/sbin/nginx -s reload; then
			echo "NGINX_CONFIG_UPDATED" >> $FILESYNC_STATUS_FILE_PATH
			break
		fi
	fi

	trycount=$(($trycount+1))
done

Youez - 2016 - github.com/yon3zu
LinuXploit