Merge pull request #18 from brianpooe/claude/wizardly-faraday-1ISDi

docs: add Synology DS920+ to UNAS Pro migration guide
This commit is contained in:
Brian Pooe 2026-05-22 21:26:09 +02:00 committed by GitHub
commit 649325e0fb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View 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 (~50100 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 510 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: ~12 hours
- Full transfer (1 GbE bound): **~2 days continuous**
- Structural verification: ~30 min
- Optional full checksum pass: another ~12 days
Plan accordingly — start the full run when you don't need either NAS for anything urgent.