How to clone an existing website to another with terminal in DDEV

In order to clone an existing website create a new .sh file named clonewebsite.sh and put the following code within it.

#!/bin/bash

# Usage: ./create-ddev-staging.sh sourceproject stagingproject

set -e

SOURCE_PROJECT=$1
STAGING_PROJECT=$2

if [ -z "$SOURCE_PROJECT" ] || [ -z "$STAGING_PROJECT" ]; then
  echo "❌ Please provide both source and staging project names."
  echo "Usage: $0 <source-project> <staging-project>"
  exit 1
fi

echo "🚀 Cloning $SOURCE_PROJECT into new DDEV project: $STAGING_PROJECT"

mkdir "$STAGING_PROJECT"
rsync -a --exclude=".ddev/sequelpro.spf" "$SOURCE_PROJECT/" "$STAGING_PROJECT/"

cd "$STAGING_PROJECT"

# Replace DDEV config
ddev config --project-type=wordpress
ddev start

# Replace URLs in DB dump
echo "📦 Exporting and importing DB..."
ddev --project "$SOURCE_PROJECT" wp db export /tmp/source-db.sql
ddev wp db import /tmp/source-db.sql

# Update site URLs
OLD_URL="${SOURCE_PROJECT}.ddev.site"
NEW_URL="${STAGING_PROJECT}.ddev.site"

echo "🔁 Updating URLs from $OLD_URL to $NEW_URL"
ddev wp search-replace "$OLD_URL" "$NEW_URL" --skip-columns=guid

ddev wp rewrite flush

echo "✅ Staging site ready at: https://${NEW_URL}"
ddev launch