Merge pull request #18 from brianpooe/claude/wizardly-faraday-1ISDi
docs: add Synology DS920+ to UNAS Pro migration guide
This commit is contained in:
commit
649325e0fb
1 changed files with 228 additions and 0 deletions
228
docs/SYNOLOGY_TO_UNAS_MIGRATION.md
Normal file
228
docs/SYNOLOGY_TO_UNAS_MIGRATION.md
Normal file
|
|
@ -0,0 +1,228 @@
|
|||
# Synology DS920+ → UNAS Pro Migration Guide
|
||||
|
||||
**Source:** Synology DS920+ • **Target:** UniFi UNAS Pro • **Size:** ~18 TB
|
||||
**Strategy:** Mount UNAS via SMB on the Synology, then run `rsync` locally on the Synology.
|
||||
|
||||
---
|
||||
|
||||
## Why this approach
|
||||
|
||||
- Goes through the UNAS Pro's normal SMB file service → files appear correctly in UniFi Drive.
|
||||
- Direct SSH/rsync into UNAS Pro is unsupported and has known indexing/socket issues.
|
||||
- Keeps your PC out of the data path. DS920+ talks directly to UNAS Pro.
|
||||
|
||||
---
|
||||
|
||||
## Pre-flight checks
|
||||
|
||||
- [ ] UNAS Pro drives are fully synced/healthy (initial parity build can take 10+ hours).
|
||||
- [ ] DS920+ NIC: stock = 1 GbE (~110 MB/s cap → expect ~2 days for 18 TB). Confirm whether you have a 2.5GbE adapter or LAG.
|
||||
- [ ] Both NAS units on the same LAN segment (CRS309 handles routing fine).
|
||||
- [ ] Enough free space on UNAS Pro target share.
|
||||
|
||||
---
|
||||
|
||||
## Step 1 — Prepare the UNAS Pro
|
||||
|
||||
1. Create the destination share/folder in UniFi Drive.
|
||||
2. Create a dedicated migration user (e.g. `synology_migration`).
|
||||
3. Grant that user **read/write only** to the destination share.
|
||||
4. Plan to disable/delete this account after migration.
|
||||
|
||||
---
|
||||
|
||||
## Step 2 — Prepare the Synology
|
||||
|
||||
SSH into the DS920+:
|
||||
|
||||
```bash
|
||||
ssh your_user@SYNOLOGY_IP
|
||||
```
|
||||
|
||||
Create the mount point:
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /volume1/unas_migration
|
||||
```
|
||||
|
||||
Create a secured credentials file (avoids password in shell history):
|
||||
|
||||
```bash
|
||||
sudo vi /root/.unas-smb-credentials
|
||||
```
|
||||
|
||||
Contents:
|
||||
|
||||
```
|
||||
username=UNAS_USER
|
||||
password=UNAS_PASSWORD
|
||||
```
|
||||
|
||||
Lock it down:
|
||||
|
||||
```bash
|
||||
sudo chmod 600 /root/.unas-smb-credentials
|
||||
```
|
||||
|
||||
Mount the UNAS share:
|
||||
|
||||
```bash
|
||||
sudo mount -t cifs //UNAS_IP/ShareName /volume1/unas_migration \
|
||||
-o vers=3.1.1,credentials=/root/.unas-smb-credentials,iocharset=utf8,noperm
|
||||
```
|
||||
|
||||
> If you get permission errors on the test write below, add `nounix` to the `-o` options. If `vers=3.1.1` fails, fall back to `vers=3.0`.
|
||||
|
||||
Verify the mount:
|
||||
|
||||
```bash
|
||||
df -h /volume1/unas_migration
|
||||
touch /volume1/unas_migration/test-write.txt
|
||||
rm /volume1/unas_migration/test-write.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 3 — Pilot run (DO THIS FIRST)
|
||||
|
||||
**Don't kick off the full 18 TB before validating end-to-end.** Pick one small subfolder (~50–100 GB ideally, with a mix of file sizes).
|
||||
|
||||
```bash
|
||||
tmux new -s unas-pilot
|
||||
```
|
||||
|
||||
```bash
|
||||
rsync -rltWh \
|
||||
--partial --inplace \
|
||||
--info=progress2 \
|
||||
--human-readable \
|
||||
--stats \
|
||||
--log-file=/volume1/unas-pilot.log \
|
||||
/volume1/YourSourceData/SmallSubfolder/ \
|
||||
/volume1/unas_migration/SmallSubfolder/
|
||||
```
|
||||
|
||||
### Pilot sanity checks
|
||||
|
||||
- [ ] Files visible in UniFi Drive **web UI**.
|
||||
- [ ] Files accessible via **SMB from a client PC**.
|
||||
- [ ] File counts match (`find . -type f | wc -l` on both ends).
|
||||
- [ ] Spot-check a few files open correctly (not corrupted).
|
||||
- [ ] Note the transfer rate — extrapolate to estimate the full run.
|
||||
|
||||
If anything fails here, fix it before committing to the 2-day run.
|
||||
|
||||
---
|
||||
|
||||
## Step 4 — Full migration
|
||||
|
||||
Start a fresh tmux session so disconnects don't kill the transfer:
|
||||
|
||||
```bash
|
||||
tmux new -s unas-migration
|
||||
```
|
||||
|
||||
Run the migration:
|
||||
|
||||
```bash
|
||||
rsync -rltWh \
|
||||
--partial --inplace \
|
||||
--info=progress2 \
|
||||
--human-readable \
|
||||
--stats \
|
||||
--log-file=/volume1/unas-migration.log \
|
||||
/volume1/YourSourceData/ \
|
||||
/volume1/unas_migration/
|
||||
```
|
||||
|
||||
**Flag reference:**
|
||||
|
||||
| Flag | Why |
|
||||
|---|---|
|
||||
| `-r` | Recursive |
|
||||
| `-l` | Preserve symlinks |
|
||||
| `-t` | Preserve mtimes |
|
||||
| `-W` | Whole-file copy (faster on LAN; skips delta-calc) |
|
||||
| `-h` | Human-readable numbers |
|
||||
| `--partial --inplace` | **Critical**: resumable for large files mid-transfer |
|
||||
| `--info=progress2` | Clean overall progress |
|
||||
| `--log-file` | Audit trail |
|
||||
|
||||
**Detach tmux** (transfer keeps running): `Ctrl+B` then `D`
|
||||
**Reattach later:** `tmux attach -t unas-migration`
|
||||
|
||||
If interrupted, just rerun the same command — it resumes.
|
||||
|
||||
---
|
||||
|
||||
## Step 5 — Verification
|
||||
|
||||
### Pass 1: Structural check (fast)
|
||||
|
||||
```bash
|
||||
rsync -rltWh \
|
||||
--dry-run \
|
||||
--itemize-changes \
|
||||
--stats \
|
||||
/volume1/YourSourceData/ \
|
||||
/volume1/unas_migration/
|
||||
```
|
||||
|
||||
Little or no output = structurally complete.
|
||||
|
||||
### Pass 2: Spot-check integrity (recommended for most data)
|
||||
|
||||
Pick 5–10 large/important files and compare hashes:
|
||||
|
||||
```bash
|
||||
sha256sum /volume1/YourSourceData/path/to/file
|
||||
sha256sum /volume1/unas_migration/path/to/file
|
||||
```
|
||||
|
||||
### Pass 3 (optional): Full checksum verification
|
||||
|
||||
Only for irreplaceable data (documents, photos, anything not re-downloadable). This re-reads everything on both ends — slow (another day+ for 18 TB):
|
||||
|
||||
```bash
|
||||
rsync -rltWhc \
|
||||
--dry-run \
|
||||
--itemize-changes \
|
||||
--stats \
|
||||
/volume1/YourSourceData/ \
|
||||
/volume1/unas_migration/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 6 — Cleanup
|
||||
|
||||
```bash
|
||||
sudo umount /volume1/unas_migration
|
||||
sudo rmdir /volume1/unas_migration
|
||||
sudo rm /root/.unas-smb-credentials
|
||||
```
|
||||
|
||||
On the UNAS Pro: disable or delete the `synology_migration` user.
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting quick reference
|
||||
|
||||
| Symptom | Try |
|
||||
|---|---|
|
||||
| Permission errors on test write | Add `nounix` to mount options |
|
||||
| Mount fails with `vers=3.1.1` | Use `vers=3.0` |
|
||||
| Files copied but not in UniFi Drive UI | Confirm you mounted via SMB, not direct SSH; wait for UniFi indexing |
|
||||
| Transfer rate way below 110 MB/s | Check NIC (1 GbE cap), check DS920+ disk read speed, check switch port |
|
||||
| Need to pause | `Ctrl+C` — rerun same command to resume |
|
||||
|
||||
---
|
||||
|
||||
## Estimated timeline
|
||||
|
||||
- Pilot run + sanity checks: ~1–2 hours
|
||||
- Full transfer (1 GbE bound): **~2 days continuous**
|
||||
- Structural verification: ~30 min
|
||||
- Optional full checksum pass: another ~1–2 days
|
||||
|
||||
Plan accordingly — start the full run when you don't need either NAS for anything urgent.
|
||||
Loading…
Add table
Reference in a new issue