Why I Built LazyClone: Moving a Whole WordPress Site Without FTP

I have been moving WordPress sites between servers for 15+ years. Live to development, development back to live, old host to new host. I still don’t like it.

So I spent the past few weeks on this and built LazyClone. It moves a whole WordPress site – the database (posts, pages, settings, users) and the files (images, theme, plugins) – from one WordPress install to another, from the dashboard. No FTP, no third-party service, no editing configuration files (the ones with the database password in them). You export on one site, you import on the other, you log in again. That is all.

The name is not a joke. Being lazy is the goal.

Here’s how it works

On the site you’re copying from:

  1. Open LazyClone and go to Export.
  2. Tick what to include: media library, active theme, active plugins. The database always goes.
  3. Start the export and leave the tab open. It runs in steps, so it doesn’t matter if your site is 200 MB or 5 GB.
  4. Download the package. It’s a normal zip file. It also shows you a long checksum code – copy it.

On the site you’re copying to:

  1. Open LazyClone and go to Import.
  2. Choose the zip, paste the checksum, tick the confirmation box.
  3. Wait. The package goes up in small pieces, then the site is rebuilt in steps.
  4. Log in again – with the username and password from the site you copied from. The import replaced the users, so those are the ones that work now.

Halfway through, you’ll get signed out. That’s normal, not a crash. The import finishes on its own and hands you a login link at the end.

Before any of this, the This server tab tells you what your host allows and how big the package will be, in plain numbers. If something needs changing, it says so. Usually nothing does.

Three scenarios

1. Redesigning a live site. This is what I built it for. Copy the live site to a development site, work on it for two weeks, copy it back. Then do it again next year. Every import keeps the old files it replaced in folders named _old_ with a timestamp, so if the new design lands badly, the previous one is still there. The Previous versions tab lists them with sizes and a delete button for when you’re sure.

2. Moving to a new host. Install WordPress on the new host (most hosts have a one-click button for this), install LazyClone on both sites, export, import, point your domain at the new host. The site address and file paths are rewritten automatically, including inside widget settings, custom fields and block backgrounds – the places where other tools leave the old domain behind and you find out three weeks later.

3. Keeping a full copy of your site. With everything ticked, the export package is a complete copy of your site in one zip file. Keep it somewhere safe. If your host disappears, or your developer disappears, or you just want to try something on a spare install, you have everything in one file. Note that LazyClone is not a backup plugin and doesn’t pretend to be one. It moves sites.

How is this different from the plugins you already know?

All-in-One WP Migration. Same idea, export and import from the dashboard, and it works well until the import stops at your host’s upload limit. Then the answer is either editing server settings you’ve never heard of, or buying the Unlimited extension. LazyClone uploads the package in small pieces sized to what your host accepts, so the limit never comes into it. If the server still says “too big”, it sends smaller pieces and carries on. Also, the LazyClone package is a plain zip, not a special format. You can open it and see your files.

Duplicator. The free version gives you two files that you upload to the new server with FTP, then you open an installer in your browser and type in database details. That is exactly the part I wanted gone. The drag-and-drop import exists, in the paid version, which is a 1000-in-1 product now: backups, cloud storage, staging, disaster recovery. I wanted the one thing.

Migrate Guru. Free, and it handles big sites. But your entire site travels through their servers on the way. Some people are fine with that. I’m not, and if your site holds customer data you shouldn’t be either. With LazyClone the package goes from your site to your computer to your other site. Nobody in between.

UpdraftPlus. A backup plugin first. Cloning and migration is a paid add-on. If you already pay for it, fine.

By hand. FTP for the files, phpMyAdmin for the database, then a search and replace for the domain (this is what I did for years, and what most developers still do). It takes an hour if nothing goes wrong, and the search-and-replace step is where things go wrong, because half of WordPress stores its settings in a format that a plain replace corrupts. That’s the step where your widgets vanish. LazyClone does the replace the safe way, the same way Better Search Replace does, on every table it finds, not just the ones on a list.

Asking your host. Many hosts will migrate your site for free when you move to them. Good. Useless for live-to-development-and-back, which is where most of the moving actually happens.

Things it does on purpose

  • It never touches wp-config.php, on either site. That’s the file with your database password in it, and copying it from one server to another is the fastest way to take a site down. The receiving site keeps its own.
  • It never deletes the old files automatically. They sit in the _old_ folders until you remove them from the Previous versions tab. Disk usage doubles for a while. That’s the price of having a way back.
  • It checks the package before it touches anything. Size first, then the checksum you pasted. A half-uploaded file doesn’t get near your database.
  • It keeps going when things drop. A lost connection, a proxy timeout, a server that rejects a piece – it retries, asks the server what it already has, and continues from there. You don’t have to do anything except not close the tab.
  • The two sites don’t need matching table prefixes. If that sentence means nothing to you, good, you don’t need to care. If it does: yes, importing a standard wp_ site onto a hardened install works.

What it doesn’t do

The database on the receiving site is replaced. All of it. The files are backed up automatically; the database is not. Take a database backup before you import. Your host has a button for it.

Only import packages you made yourself. A package is a copy of a database, and restoring one means running whatever is in it. That’s true for every migration tool ever made, and LazyClone doesn’t pretend otherwise.

No multisite. Needs PHP 8.4 or newer on both sites. If your host is still on PHP 7, that’s a different conversation, and one you should have with your host.

Very large media libraries (tens of GB) are slow rather than broken.

Related Posts

Join the Discussion...

Your email address will not be published. Required fields are marked *

*