กลับไปหน้าสูตร
#rsync#ssh#backup#deploy#cheatsheet
rsync Command Cheatsheet
รวมคำสั่ง rsync ที่ใช้บ่อยจริง: sync ไฟล์, backup, deploy, exclude, delete, dry-run และใช้ผ่าน SSH แบบพร้อมใช้งาน
29 มีนาคม 2569อ่านประมาณ 2 นาที
สารบัญสูตร
Basic Sync
| Command | ใช้ทำอะไร |
|---|---|
rsync -av src/ backup/ | sync โฟลเดอร์ local ไปอีกโฟลเดอร์ |
rsync -av file.txt backup/ | copy ไฟล์เดียวพร้อม preserve metadata |
rsync -av src/ user@host:/var/www/app/ | ส่งไฟล์ขึ้น server |
rsync -av user@host:/var/www/app/ ./app-backup/ | ดึงไฟล์จาก server ลงเครื่อง |
Options That Should Know
| Option | ใช้ทำอะไร |
|---|---|
-a | archive mode: เก็บ permission, time, symlink และ structure |
-v | แสดงรายละเอียดเพิ่ม |
-z | บีบอัดระหว่างส่งผ่าน network |
--progress | ดู progress ระหว่าง transfer |
--delete | ลบไฟล์ฝั่งปลายทางที่ต้นทางไม่มีแล้ว |
--dry-run | จำลองก่อนรันจริง |
Local To Local
| Command | ใช้ทำอะไร |
|---|---|
rsync -av --progress project/ backup/project/ | backup local แบบเห็น progress |
rsync -av --delete dist/ release/ | ทำให้ปลายทางเหมือนต้นทาง |
rsync -av --exclude '.git' --exclude 'node_modules' ./ backup/ | ข้ามไฟล์/โฟลเดอร์ที่ไม่ต้องการ |
Local To Remote
| Command | ใช้ทำอะไร |
|---|---|
rsync -avz ./ user@host:/srv/app/ | deploy ไฟล์ขึ้น server |
rsync -avz --progress dist/ user@host:/srv/app/ | upload build output |
rsync -avz --delete dist/ user@host:/srv/app/ | sync พร้อมลบไฟล์เก่าที่ไม่ใช้แล้ว |
rsync -avz --exclude '.env' --exclude 'node_modules' ./ user@host:/srv/app/ | deploy โดยไม่เอาไฟล์บางส่วน |
Remote To Local
| Command | ใช้ทำอะไร |
|---|---|
rsync -avz user@host:/etc/nginx/ ./nginx-backup/ | backup config ลงเครื่อง |
rsync -avz user@host:/var/log/app/ ./logs/ | ดึง logs กลับมา |
rsync -avz --delete user@host:/srv/assets/ ./assets/ | mirror จาก server ลง local |
Use With SSH
| Command | ใช้ทำอะไร |
|---|---|
rsync -avz -e "ssh -p 2222" ./ user@host:/srv/app/ | ใช้ SSH port พิเศษ |
rsync -avz -e "ssh -i ~/.ssh/deploy_key" ./ user@host:/srv/app/ | ใช้ key เฉพาะ |
rsync -avz -e "ssh -p 2222 -i ~/.ssh/deploy_key" dist/ user@host:/srv/app/ | ระบุทั้ง port และ key |
Exclude Patterns
| Command | ใช้ทำอะไร |
|---|---|
rsync -av --exclude 'node_modules' ./ backup/ | exclude โฟลเดอร์เดียว |
rsync -av --exclude '.git' --exclude '.next' ./ user@host:/srv/app/ | exclude หลายรายการ |
rsync -av --exclude-from='.rsyncignore' ./ user@host:/srv/app/ | อ่านรายการ exclude จากไฟล์ |
Safe Preview Before Real Run
| Command | ใช้ทำอะไร |
|---|---|
rsync -av --dry-run src/ backup/ | เช็กก่อนว่าอะไรจะถูกคัดลอก |
rsync -avz --delete --dry-run dist/ user@host:/srv/app/ | จำลอง deploy ก่อนลบ/เขียนจริง |
Common One-liners
# deploy build ขึ้น server แบบปลอดภัยก่อน
rsync -avz --delete --dry-run dist/ user@host:/srv/app/
# ถ้าผล dry-run ถูกต้อง ค่อยรันจริง
rsync -avz --delete dist/ user@host:/srv/app/
# backup โปรเจกต์ โดยไม่เอาไฟล์หนักและไฟล์ที่ generate
rsync -av --exclude 'node_modules' --exclude '.next' --exclude '.git' ./ ~/backup/my-app/
# ดึง config nginx จาก server ลงมาเก็บ
rsync -avz user@host:/etc/nginx/ ./nginx-backup/
# sync ผ่าน SSH port พิเศษ
rsync -avz -e "ssh -p 2222" ./ user@host:/srv/app/
Trailing Slash Rule
| รูปแบบ | ความหมาย |
|---|---|
rsync -av src/ backup/ | ส่ง "ข้างใน" โฟลเดอร์ src ไปที่ backup |
rsync -av src backup/ | ส่งทั้งโฟลเดอร์ src ไปอยู่ใน backup |
Recommended Daily Set
| งาน | คำสั่ง |
|---|---|
| backup local | rsync -av project/ backup/project/ |
| deploy ขึ้น server | rsync -avz dist/ user@host:/srv/app/ |
| deploy พร้อมลบไฟล์เก่า | rsync -avz --delete dist/ user@host:/srv/app/ |
| เช็กก่อนรันจริง | rsync -av --dry-run src/ dst/ |
| ใช้ SSH custom port | rsync -avz -e "ssh -p 2222" ./ user@host:/srv/app/ |
| ข้ามไฟล์ไม่จำเป็น | rsync -av --exclude 'node_modules' ./ backup/ |
Quick Notes
| เรื่องที่ควรรู้ | รายละเอียด |
|---|---|
เริ่มจาก --dry-run ก่อนเสมอถ้ามี --delete | ลดโอกาสลบไฟล์ผิด |
-a มักเป็น default ที่ควรใช้ | เพราะเก็บ metadata สำคัญครบ |
งานข้าม network มักใช้ -z เพิ่ม | ช่วยลดขนาดข้อมูลที่ส่ง |
| slash ท้าย path สำคัญมาก | src/ กับ src ให้ผลไม่เหมือนกัน |