{"id":11026,"date":"2026-05-25T01:29:52","date_gmt":"2026-05-24T17:29:52","guid":{"rendered":"https:\/\/aeosub.com\/marathon-migration\/"},"modified":"2026-05-25T01:29:52","modified_gmt":"2026-05-24T17:29:52","slug":"marathon-migration","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/marathon-migration\/","title":{"rendered":"Marathon Migration"},"content":{"rendered":"<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 15px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\"><img decoding=\"async\" src=\"https:\/\/s.w.org\/plugins\/geopattern-icon\/marathon-migration.svg\" style=\"width: 40px;height: 40px;border-radius: 6px;margin-right: 12px;vertical-align: middle\"> Developer<\/th>\n<td style=\"padding: 15px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/marathonhosting\/\" target=\"_blank\" rel=\"noopener\">marathonhosting<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v3.0.0<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">0 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">6.2 \/ 6.9.4<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-05-24 4:22pm GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/marathon-migration\/\" target=\"_blank\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\" rel=\"noopener\">View Details \u2192<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">Move your WordPress site to Marathon Hosting in minutes \u2014 no FTP, no manual exports, no downtime.<\/div>\n<p>Marathon Migration is the official migration plugin for <a href=\"https:\/\/marathonhosting.com\" rel=\"nofollow ugc noopener\" target=\"_blank\">Marathon Hosting<\/a>. Once installed, it exposes a small authenticated transfer endpoint on your current WordPress site that the receiving Marathon server uses to pull your files and database directly \u2014 no shell access, no packaging, no on-disk archives.<\/p>\n<p><strong>How it works:<\/strong><\/p>\n<ol>\n<li>Generate a migration token from your Marathon Hosting client portal<\/li>\n<li>Install and activate this plugin on your current WordPress site<\/li>\n<li>Go to <strong>Marathon Migration<\/strong> in your WordPress admin and paste the token<\/li>\n<li>Click <strong>Start Migration<\/strong> \u2014 the plugin handles the rest<\/li>\n<\/ol>\n<p>When you start a migration the plugin (1) validates your token with the Marathon Hosting Gateway, (2) generates a one-time signing secret unique to this migration, and (3) tells the Gateway the URL of your site and that signing secret. The receiving Marathon server then connects to your site and pulls many files and database rows per request over a single high-throughput streaming endpoint \u2014 exactly the same architectural pattern used by other well-known migration plugins. URLs are automatically rewritten on the destination, file permissions are set, and the Marathon Hosting plugin is deployed \u2014 all without you lifting a finger.<\/p>\n<p><strong>What gets transferred:<\/strong><\/p>\n<ul>\n<li>Your complete database<\/li>\n<li>All WordPress core files (exact version \u2014 no forced upgrades)<\/li>\n<li>All themes, plugins, uploads, and media<\/li>\n<li>Must-use plugins (mu-plugins)<\/li>\n<\/ul>\n<p><strong>What gets left behind:<\/strong><\/p>\n<ul>\n<li>Server-specific configuration (<code>wp-config.php<\/code>, <code>.htaccess<\/code> \u2014 the receiving server provides its own)<\/li>\n<li>Dropin replacements (<code>wp-content\/object-cache.php<\/code>, <code>wp-content\/advanced-cache.php<\/code>, <code>wp-content\/db.php<\/code> \u2014 Marathon Hosting provides its own)<\/li>\n<li>Cache plugin output directories (<code>wp-content\/cache\/<\/code>, <code>wp-content\/uploads\/cache\/<\/code>, W3 Total Cache config, WP Rocket config)<\/li>\n<li>Host-specific platform code (WP Engine&#8217;s <code>wpe-common<\/code> mu-plugins, Kinsta&#8217;s <code>kinsta-mu-plugins<\/code>, Cloudways and SiteGround migrator helpers \u2014 these are part of the source host, not your site)<\/li>\n<li>Log files (<code>debug.log<\/code>, WooCommerce <code>wc-logs<\/code>, <code>error_log<\/code>, <code>php_errorlog<\/code>, anything ending in <code>.log<\/code> under uploads)<\/li>\n<li>Backup archives from other backup plugins<\/li>\n<li>OS and developer junk (<code>.DS_Store<\/code>, <code>Thumbs.db<\/code>, <code>__MACOSX\/<\/code>, <code>.git\/<\/code>, <code>.svn\/<\/code>, <code>.hg\/<\/code>, <code>node_modules\/<\/code>)<\/li>\n<li>The migration plugin itself (automatically removed after transfer)<\/li>\n<\/ul>\n<p><strong>Security:<\/strong><\/p>\n<ul>\n<li>All transfers use a one-time token tied to your specific Marathon Hosting account<\/li>\n<li>Every request from the Marathon server is signed with a per-migration HMAC-SHA256 secret that lives only in memory on the receiving server and the <code>marathon_migration_auth_secret<\/code> WordPress option on yours<\/li>\n<li>The plugin&#8217;s transfer endpoint rejects any request without a current, correctly-signed signature \u2014 the signing secret is wiped from your database the moment the migration completes or fails<\/li>\n<li>Multisite installs are detected and refused before any data is transferred (multisite migrations are not yet supported)<\/li>\n<\/ul>\n<h3>External services<\/h3>\n<p>This plugin connects to the Marathon Hosting Gateway (the &#8220;Service&#8221;), operated by Marathon Hosting, to coordinate site migrations into Marathon Hosting. The Service is required for the plugin to function \u2014 without it the plugin cannot validate a token, register itself for pull-based transfer, or report progress back to your dashboard.<\/p>\n<p>The plugin contacts the Gateway only after you paste a migration token and start a migration. The base URL of the Gateway is supplied by Marathon Hosting at validation time and stored in the WordPress option <code>marathon_migration_gateway_url<\/code>.<\/p>\n<p>The following requests are sent to the Gateway:<\/p>\n<ol>\n<li>Token validation \u2014 when you paste a token and start a migration, the plugin sends the token and the public URL of your current WordPress site (<code>get_site_url()<\/code>) to the Gateway so it can verify the token belongs to your account and learn where to pull from.<\/li>\n<li>Ready notification \u2014 once the plugin has generated its per-migration signing secret, it sends the token, the URL of your WordPress site, the signing secret, and your current WordPress and PHP versions to the Gateway so the receiving Marathon server can begin pulling.<\/li>\n<li>Status polling \u2014 while the migration is in progress, the plugin periodically requests the migration status from the Gateway using the token (in the URL).<\/li>\n<\/ol>\n<p>Once the Gateway has the signing secret, it hands it to the receiving Marathon server. That Marathon server then connects directly to your site (<code>&lt;your-site&gt;\/?marathon_migration=1<\/code>) and pulls your files and database live over a signed streaming endpoint. <strong>No database contents, file contents, or database credentials are sent to the Gateway itself.<\/strong><\/p>\n<p>This service is provided by Marathon Hosting:<\/p>\n<ul>\n<li>Terms of Service: https:\/\/marathonhosting.com\/tos.html<\/li>\n<li>Privacy Policy: https:\/\/marathonhosting.com\/pp.html<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Move your WordPress site to Marathon Hosting in minutes \u2014 no FTP, no manual exports, no downtime.<\/p>","protected":false},"author":1,"featured_media":9317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[1959,1168,562,871,1960,555],"class_list":["post-11026","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-clone","tag-hosting","tag-import","tag-migration","tag-transfer","tag-wordpress-plugin"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/11026","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=11026"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/11026\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/9317"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=11026"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=11026"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=11026"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}