← All recipes

Backing Up WordPress Site Over SSH

Paste the following into terminal while connected over SSH.

backup() {
    if [ -z "$1" ]; then echo "Please enter a folder: backup <folder>"; return 1; fi
	folder=$1
	folder=${folder%/}
	today=$(date +"%Y-%m-%d")
	random=$( cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 7 )
	backup_file="${today}_${random}.zip"
	cd $folder
	home_url=$( wp option get home --skip-plugins --skip-themes )
	name=$( wp option get blogname --skip-plugins --skip-themes )
	database_file=$( wp db export --add-drop-table --default-character-set=utf8mb4 --porcelain)
    if [ -f "../wp-config.php" ]; then zip -r "../$backup_file" ../wp-config.php; fi
	cd ..
	zip -r "$backup_file" $folder
	size=$(du -sh "$backup_file" | cut -f1)
	rm -f ${folder}/$database_file
	mv "$backup_file" $folder
	echo "Backup ready ($size): ${home_url}/${backup_file} ($name)"
	echo "When done remember to: rm -f ${folder}/${backup_file}"
}

Now run backup <folder-name>/. Make sure to target the folder where WordPress lives like backup public/ or backup htdocs/. This will generate a full backup with a link to download it.

Run it across a fleet

Open the console in CaptainCore Manager, pick the target sites, choose this recipe from the Cookbook picker and press run. The CLI streams each site's output back to the dock.

About the console →