กลับไปหน้าสูตร
#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ใช้ทำอะไร
-aarchive 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

Quick Notes

เรื่องที่ควรรู้รายละเอียด
เริ่มจาก --dry-run ก่อนเสมอถ้ามี --deleteลดโอกาสลบไฟล์ผิด
-a มักเป็น default ที่ควรใช้เพราะเก็บ metadata สำคัญครบ
งานข้าม network มักใช้ -z เพิ่มช่วยลดขนาดข้อมูลที่ส่ง
slash ท้าย path สำคัญมากsrc/ กับ src ให้ผลไม่เหมือนกัน