Paste the following into terminal while connected over SSH.
backup() {
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 )
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 ${folder}/$database_file
mv "$backup_file" $folder
echo "Backup ready ($size): ${home_url}/${backup_file}"
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.