---
title: "SLV Migrate Linux - Quickstart"
description: "Migrate your entire Linux server to a new machine with slv migrate linux."
canonical: "https://erpc.global/en/doc/migrate/quickstart/"
locale: "en"
---

# SLV Migrate Linux - Quickstart

## 🚚 SLV Migrate Linux

Migrate your entire Linux disk to a new server over SSH using rsync. This is a full-disk migration — everything from the source server is copied to the destination, including user data, configurations, installed packages, and SLV node setup.

> **Note:** This is different from `slv v switch` (validator identity migration). `slv migrate linux` copies the entire filesystem, while `slv v switch` swaps validator identity between two already-running nodes.

### Prerequisites

- SLV CLI installed on the **source** node
- `sudo` / root access on both source and destination
- SSH access from source to destination (password or key-based)
- Destination server should be a fresh install (SLV will warn if it detects existing data)

## Basic Usage

Run on the **source** server:

```bash
sudo slv migrate linux --to root@new-server-ip
```

```
🚚 SLV Linux Migration

  Source:      ubuntu (this machine)
  Destination: root@203.0.113.50

📋 Exclude list:
  • /dev/*
  • /proc/*
  • /sys/*
  • /tmp/*
  • /run/*
  • /mnt/*
  • /media/*
  • /lost+found
  • /swapfile
  • /snap/*
  • /var/log/*

? Start migration? This will overwrite data on the destination. › Yes
  Syncing... (this may take a while depending on disk size)
√ Migration complete
  Rebooting destination...
```

## Options

| Option | Description |
|---|---|
| `-t, --to <ssh>` | SSH destination (e.g. `root@new-server`) |
| `-p, --port <port>` | SSH port (default: 22) |
| `--skip-reboot` | Skip automatic reboot after migration |
| `--exclude <path>` | Additional rsync exclude pattern (repeatable) |
| `--include <path>` | Remove from default excludes (repeatable) |
| `--list-excludes` | Show current exclude list and exit |
| `-y, --yes` | Skip confirmation prompt |

## Custom SSH Port

If the destination uses a non-standard SSH port:

```bash
sudo slv migrate linux --to root@new-server-ip --port 2222
```

## Customize Excludes

View what will be excluded:

```bash
slv migrate linux --list-excludes
```

Exclude additional paths (e.g., skip ledger data for faster migration):

```bash
sudo slv migrate linux --to root@new-server-ip --exclude /home/solv/ledger
```

## Non-Interactive Mode

For scripting:

```bash
sudo slv migrate linux --to root@new-server-ip --skip-reboot --yes
```

## How It Works

1. **Pre-flight checks** — Verifies SSH connectivity, warns if destination has existing data
2. **rsync** — Copies entire filesystem (excluding system pseudo-filesystems) over SSH
3. **Post-migration** — Automatically reboots the destination server (unless `--skip-reboot`)

The migration uses rsync with `--archive --hard-links --acls --xattrs` to preserve all file attributes, permissions, and special files.

## ⚠️ Important Notes

- **Run as root** (or with `sudo`). Non-root migration will miss system files.
- The destination should be a **fresh server**. Existing data will be overwritten.
- rsync exit codes 23/24 (partial transfer) are treated as warnings, not errors. Some files (like active logs) may not transfer perfectly.
- After migration, verify the node is working correctly before decommissioning the source.
- For **validator identity migration** (zero-downtime swap between two running validators), use `slv v switch` instead. See [Mainnet Validator Migration](https://erpc.global/en/doc/mainnet-validator/migrate/).
