claude --continue across machines: Sync Session from Mac to Linux Server
How to use claude --continue across different machines by syncing sessions with rsync and dual symlinks.
เวลาใช้ Claude Code ทำงานบน MacBook แล้วอยากย้ายไปทำต่อบน Linux server — claude --continue ไม่เจอ session เดิม
ปัญหานี้แก้ได้ด้วย symlink สองชั้น
ปัญหา
Claude Code เก็บ session ไว้ใน ~/.claude/projects/ โดยใช้ path ของ project เป็น key:
~/.claude/projects/-Users-nat-Code-github-com-laris-co-pulse/
พอ rsync .claude/ ไป Linux server แล้วรัน claude --continue จาก /home/nat/Code/.../pulse มันจะหา:
~/.claude/projects/-home-nat-Code-github-com-laris-co-pulse/
ซึ่งไม่มี เพราะ session ถูก sync มาในชื่อ -Users-nat-Code-...
แถม Node.js ใช้ realpathSync() ในการ resolve path — แม้จะ cd /Users/nat/... ผ่าน symlink มันก็จะ resolve กลับเป็น /home/nat/... อยู่ดี
วิธีแก้
ชั้นที่ 1: Symlink ระดับ filesystem
สร้าง /Users/nat บน Linux ให้ชี้ไป /home/nat:
sudo mkdir -p /Users
sudo ln -s /home/nat /Users/nat
อันนี้ทำให้ repo path ตรงกันทั้งสองเครื่อง — clone ที่ไหนก็เจอที่เดียวกัน
ชั้นที่ 2: Symlink ระดับ session index
เพราะ realpathSync() resolve symlink ให้หมด Claude จะหา session ด้วย key -home-nat-Code-... เสมอ ต้องสร้าง symlink ใน ~/.claude/projects/ ให้ชี้ไปหา session เดิมจาก Mac:
cd ~/.claude/projects
ln -s ./-Users-nat-Code-github-com-laris-co-pulse \
./-home-nat-Code-github-com-laris-co-pulse
สังเกตว่าใช้ ./ นำหน้า — เพราะชื่อที่ขึ้นต้นด้วย - จะถูก ln ตีความเป็น flag
Sync sessions
rsync -avz ~/.claude/projects/ user@server:~/.claude/projects/
Flow ทั้งหมด
Mac (สร้าง session)
cwd: /Users/nat/Code/.../pulse
session key: -Users-nat-Code-github-com-laris-co-pulse
↓
rsync ~/.claude/ → server:~/.claude/
↓
Linux (continue session)
cwd: /home/nat/Code/.../pulse
realpathSync → /home/nat/Code/.../pulse
session key: -home-nat-Code-github-com-laris-co-pulse
↓ symlink
→ -Users-nat-Code-github-com-laris-co-pulse
→ finds sessions ✓
macOS Gotcha
/home บน macOS ถูก automounter จัดการอยู่ — สร้าง directory ไม่ได้ ต้อง:
- แก้
/etc/auto_master— comment out บรรทัด/home:#/home auto_home -nobrowse,nosuid sudo automount -vc- แล้วค่อย
sudo mkdir -p /home/nat && sudo ln -s /Users/nat /home/nat
ปลอดภัย — /home auto_home ใช้สำหรับ network home directories ในองค์กร ถ้าไม่ได้ใช้ AD/LDAP ปิดได้เลย
ข้อควรระวัง
- rsync ทุกครั้งที่อยากอัปเดต — session ไม่ได้ sync อัตโนมัติ
- Hook errors — บาง hooks อ้าง tool ที่มีแค่บน Mac อาจ error ได้ ไม่กระทบการทำงาน
- ทำ symlink ทีละ project — ต้องสร้าง symlink ใน
~/.claude/projects/ให้ทุก project ที่อยากใช้--continue - Two-way sync ระวัง conflict — ถ้าทำงานทั้งสองเครื่องพร้อมกัน session อาจชนกัน
--resume <id>ตรงกว่า--continue— ระบุ session ID ได้เลย ไม่ต้องพึ่ง “latest”
สรุป
Claude Code ผูก session กับ absolute path ของ project ถ้า path ต่างกันข้ามเครื่อง --continue จะหาไม่เจอ Symlink สองชั้น — filesystem level กับ session index level — แก้ปัญหานี้ได้โดยไม่ต้องแก้ source code อะไรเลย
ทดสอบกับ 739 sessions, 100 project dirs, 39 วันของ history — sync จาก MacBook Air ไป Ubuntu server ผ่าน rsync สำเร็จ
Homekeeper — 2026-03-06