Mga praktikal na tool para sa system, network, security, at operations administrator.

SYS-C0901 · Migrations & Audits

Server Migration & Modernization Guide

Move a service beside the old one, prove it, then cut over with the old host still up.

Updated 25 October 2026 · Pillar guide

This is an original planning guide. It is not a vendor manual, an official standard, or legal advice. Example addresses use documentation ranges. Review every command before you paste it.

Parallel, proof, then the name change

A migration is a new host or a new software version that takes over a job. The safe shape is parallel: the old service keeps the name and the users, the new service is built from the provisioning guide, and you test it on an address or a name that is not the production name. Cutover is the short window where the name moves. Rollback is moving the name back, which only works if the old host is still up and still has the data.

Web servers have converters on this site: Apache rewrite files to Nginx, virtual hosts to Nginx, Nginx to Caddy, Apache to Caddy, IIS web.config to Nginx, Nginx to Traefik. A converter output is a draft. The web server guide and the vendor pillar still apply. You fetch the test page on the new host before any DNS change. You do not convert and cut over in one motion because the draft looked familiar.

Data moves before the name moves. A file copy, a replica, or a restore from the backup guide lands on the new host and is checked. The last incremental copy happens in the window, with users paused or with a method you tested. A copy you started and never compared is a guess.

DNS and load-balancer names have a TTL. Lower it before the day, to a value you chose, so the cutover is not waiting on yesterday's hour-long cache. Raise it again after the rollback period. The cloud companion on the other desk is the seven-R vocabulary if this move is also a move off a site. This page still wants the old host up.

A lab site moved to a second host

The old lab web host serves the test page on its current address. The new host is built from the provisioning file and the web server guide, on a different address. Copy the document root. Diff it. Fetch the page from the new address. The fetch must match. If a converter produced the new config, the config test passes before that fetch.

Only then, in a lab DNS or a hosts file you control, point the test name at the new address. Fetch by name. Then point it back and fetch again. That is the rehearsal of cutover and rollback. Production is the same two moves with a lower TTL and a person watching the old host.

Write the data that did not move: databases, mail queues, uploaded files, scheduled jobs. Each one is a line. A web config conversion does not move them. The scheduling guide rebuilds the job on the new host, and you disable it on the old host only after the new job has run once.

Keep the old host for the rollback period you named, not forever and not for five minutes. A day or a week is a decision. Backups continue on whichever host holds the live data.

A change you can finish

The production window is: last copy, config test, fetch by address, name change, fetch by name, watch. If the name fetch fails, change the name back. Do not debug the new host while the name points at it and users are the testers.

Rollback is the name change reversed, and it depends on the old host still serving. Do not power the old host off in the window.

  1. Inventory the service, the data, the jobs, and the name.
  2. Build the new host beside the old one.
  3. Copy data and diff or checksum a sample.
  4. Pass the new service's own test and fetch it by address.
  5. Lower TTL before the day if a name will move.
  6. Move the name. Fetch by name. Move it back if that fetch fails.
  7. Leave the old host up for the rollback period, then decommission it in a later ticket.

Mistakes that outlive the command

server migration fails in the same few ways. Each one looks finished on the day you type it. The list is here so the ticket can forbid them before the window, not so you can recognise them in an incident review.

Decisions to write down before the window

Decision 1 for server migration. Old and new run in parallel until the name fetch works. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 2 for server migration. The converter output is a draft. The vendor pillar's config test passed. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 3 for server migration. A sample of the data was compared. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 4 for server migration. TTL was lowered before the window if DNS is the name. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 5 for server migration. Rollback is the name pointed back, and the old host is still serving. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 6 for server migration. Jobs and mailboxes are lines in the inventory, not assumptions. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 7 for server migration. One major change. A new platform and a new application are two migrations. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 8 for server migration. The rollback period is a date. Decommission is after that date. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 9 for server migration. Backups follow the live data. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 10 for server migration. The lab rehearsal of both directions happened. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 11 for server migration. A second person saw the fetch by name and knows how to point the name back. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Migration checks before the name moves

Check 1 in Migration checks before the name moves. The inventory lists data, jobs, and names. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 2 in Migration checks before the name moves. The new host answers by address. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 3 in Migration checks before the name moves. The config test for the new server passed. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 4 in Migration checks before the name moves. A data sample matches. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 5 in Migration checks before the name moves. Converter output was diffed and secrets were not in it. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 6 in Migration checks before the name moves. TTL is the lowered value, if DNS moves. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 7 in Migration checks before the name moves. The old host is up and still serving. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 8 in Migration checks before the name moves. The rollback is a name change you have rehearsed. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 9 in Migration checks before the name moves. Scheduled jobs have an owner on the new host and are not double-running. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 10 in Migration checks before the name moves. The rollback period date is written. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 11 in Migration checks before the name moves. A second person saw the address fetch. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 12 in Migration checks before the name moves. No second major change is hiding in the window. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 13 in Migration checks before the name moves. Backups will run against whichever host is live after cutover. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 14 in Migration checks before the name moves. The hostname in the prompt matches the hostname in the ticket for server migration. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 15 in Migration checks before the name moves. The result line includes the time and the person, not only the command. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 16 in Migration checks before the name moves. You can point at the rollback value without searching a chat history. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 17 in Migration checks before the name moves. Done is a sentence a second person can repeat: the proof for server migration happened, and the next host is not started early. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Tools for this guide

These tools run in the browser on this site. They do not log into your machines.

Guides in this cluster

These supporting pages belong to this pillar. A published page is linked. The others are named until they are published.

The content plan also names a companion in another desk: Cloud: Cloud Migration Strategies (7 Rs).