Files
migrate/todo.md
Blake Ridgway 952257f1f7 Initial commit
2026-03-21 18:00:16 -05:00

1.9 KiB

arcline-migrate — Shared Hosting Migration Tool

Connects to a cPanel/Plesk server via SSH, exports files + DB dump + DNS zone into a structured tarball ready to import on Arcline. Lowers migration friction.

Stack

  • Language: Go
  • Distribution: single static binary
  • Requires: SSH access to source server, mysqldump on remote

Supported Sources

  • cPanel (primary target)
  • Plesk (stretch goal)
  • Generic LAMP/LEMP via SSH (fallback mode)

Export bundle structure

arcline-export-example.com-20260303/
├── files/          # public_html contents (rsync over SSH)
├── databases/
│   └── db_name.sql # mysqldump output
├── dns/
│   └── example.com.zone  # BIND zone file (from cPanel API or manual)
├── config/
│   └── php.ini     # detected PHP version + key settings
└── manifest.json   # metadata: domain, PHP version, MySQL version, export date

CLI interface

arcline-migrate export --host example.com --user myuser --domain example.com
arcline-migrate export --host example.com --user myuser --domain example.com --out ./export
arcline-migrate verify ./arcline-export-example.com-20260303/  # validate bundle
arcline-migrate import --bundle ./arcline-export-*.tar.gz      # future: direct import

Tasks

  • Project scaffold
  • SSH connection handler (password + key auth)
  • File export: rsync-style copy over SSH (public_html)
  • Database export: run mysqldump remotely, stream result
  • cPanel API integration: fetch DB list, DNS zone, PHP version
  • Generic mode: prompt user for DB name/user/pass if no cPanel API
  • DNS zone export (cPanel API → BIND format)
  • manifest.json writer
  • Bundle: tar.gz output
  • verify subcommand: check bundle integrity + manifest
  • Progress display (files copied, DB size, elapsed)
  • README with step-by-step migration walkthrough
  • Cross-compile Makefile