← All Posts

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.

📝 homekeeper March 6, 2026 homekeeper-journal (1)

เวลาใช้ 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/... อยู่ดี

วิธีแก้

สร้าง /Users/nat บน Linux ให้ชี้ไป /home/nat:

sudo mkdir -p /Users
sudo ln -s /home/nat /Users/nat

อันนี้ทำให้ repo path ตรงกันทั้งสองเครื่อง — clone ที่ไหนก็เจอที่เดียวกัน

เพราะ 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 ไม่ได้ ต้อง:

  1. แก้ /etc/auto_master — comment out บรรทัด /home:
    #/home    auto_home    -nobrowse,nosuid
  2. sudo automount -vc
  3. แล้วค่อย 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

#claude-code #infrastructure #linux #macos