Ở bài trước, mình có nói về việc quản lý bài viết trên Obsidian. Một trong những lý do chính mình chọn cách này là để có thể tranh thủ viết bài trên điện thoại khi ra ngoài quán cafe hoặc nằm trên giường.
Để làm được việc đó, mình cần lưu toàn bộ folder dự án blog vào iCloud.
Tuy nhiên, có một vấn đề nhỏ: Dự án code (như Astro) thường chứa folder node_modules rất nặng, gồm hàng trăm file nhỏ. Việc sync đống file này qua iCloud vừa lâu, vừa không cần thiết (vì điện thoại không chạy code này).
Mình cần iCloud chỉ sync file bài viết (
.md) và bỏ qua các folder kỹ thuật.
⚙️ Cách giải quyết: .nosync và Symlink
Mình tìm hiểu được một cách khá hay trên macOS để xử lý việc này.
Cơ chế đơn giản là:
.nosync: iCloud sẽ tự động bỏ qua bất kỳ file/folder nào có đuôi này.- Symlink (Symbolic Link): Tạo một liên kết tham chiếu tới folder gốc. Nhờ vậy, code editor vẫn truy cập và làm việc với folder này bình thường.
Cụ thể: Mình đổi tên node_modules thành node_modules.nosync (để iCloud bỏ qua không sync). Sau đó tạo một shortcut tên là node_modules trỏ về nó (để code editor vẫn chạy bình thường).
🛠️ Cách mình làm
Mình mở Terminal ngay tại folder dự án và chạy 2 dòng lệnh:
# B1: Đổi tên folder thật để chặn sync
mv node_modules node_modules.nosync
# B2: Tạo shortcut để code vẫn chạy được
ln -s node_modules.nosync node_modules
Mình làm tương tự cho folder .astro (folder build).
📱 Kết quả
Lúc này, khi mở folder dự án trên iPhone/iPad, thư mục node_modules sẽ không còn xuất hiện. Thay vào đó là file shortcut có dung lượng rất nhỏ.
Nhờ vậy, mình có thể mở file Markdown lên viết mà không phải đợi iCloud load những file không liên quan. Trên máy tính thì source code vẫn đầy đủ để chạy và build web.
⚡️ Tips tối ưu
Nếu bạn ngại gõ lệnh mỗi lần thì có thể dùng 2 cách sau:
1. Script tự động (Cho Terminal)
Thay vì phải nhớ và gõ lại hai dòng lệnh trên mỗi khi tạo dự án mới, bạn có thể tạo một hàm tắt (alias) trong Terminal.
Bước 1: Mở file cấu hình của Terminal (trên Mac thường là .zshrc) bằng lệnh:
nano ~/.zshrc
Bước 2: Kéo xuống cuối file và dán đoạn code này vào:
# Hàm tự động tạo .nosync và symlink
nosync() {
# $1 là tên folder mình nhập vào (ví dụ: node_modules)
if [ -d "$1" ]; then
# Bước 1 & 2: Đổi tên thành .nosync VÀ tạo symlink trỏ về nó
# Dùng && để đảm bảo chỉ khi đổi tên thành công mới tạo symlink
mv "$1" "$1.nosync" && ln -s "$1.nosync" "$1"
echo "Done! $1 is now ignored by iCloud."
else
echo "Folder $1 not found."
fi
}
(Xong thì bấm Ctrl + O rồi Enter để lưu, Ctrl + X để thoát)
Bước 3: Cập nhật thay đổi:
source ~/.zshrc
Từ giờ, khi làm dự án mới, bạn chỉ cần mở Terminal ngay tại folder đó và gõ lệnh nosync tên_folder (ví dụ: nosync node_modules).
2. Dùng AI
Nếu bạn dùng Antigravity hay các AI Assistant có quyền chạy terminal, cứ copy prompt này cho nó làm giúp:
Giúp tôi tối ưu project này cho iCloud. Tìm các folder nặng (node_modules, dist, .astro).
Nếu folder nào chưa được xử lý, hãy:
1. Đổi tên folder đó thêm đuôi .nosync
2. Tạo symlink trỏ từ folder .nosync về tên gốc.
Bài tiếp theo: Sau khi viết xong trên điện thoại, làm sao để đẩy bài lên web?
→ Git Workflow trong Obsidian