Rclone Cloud Sync — คู่มือ Sync ข้อมูลข้าม Cloud Storage 2026
Rclone คืออะไรทำไมต้องใช้

ผมใช้ Rclone มาตั้งแต่ปี 2016 และมันกลายเป็นเครื่องมือ backup ที่ขาดไม่ได้ Rclone เป็น command-line tool สำหรับจัดการไฟล์บน cloud storage รองรับ providers มากกว่า 70 แห่งรวมถึง AWS S3, Google Drive, Google Cloud Storage, OneDrive, Dropbox, Backblaze B2, Wasabi, MinIO, SFTP และอีกมากมายคิดว่ามันเป็น "rsync สำหรับ cloud" ได้เลย
สิ่งที่ทำให้ Rclone เหนือกว่าเครื่องมืออื่นคือมัน sync ได้ทุกทิศทาง local-to-cloud, cloud-to-local, cloud-to-cloud รองรับ encryption ในตัว mount cloud storage เป็น local drive ได้และทำงานบนทุก OS
Use Cases ที่ผมใช้จริง
Offsite Backup — backup server data ไปยัง Backblaze B2 ทุกคืนค่าใช้จ่าย $5/TB/month Archive — ย้ายไฟล์เก่าจาก server ไปเก็บบน S3 Glacier Migration — ย้ายข้อมูลจาก Google Drive ไป OneDrive หรือ self-hosted Nextcloud Encrypted Backup — backup ข้อมูลสำคัญแบบเข้ารหัสถึง cloud provider อ่านไม่ได้
ติดตั้ง Rclone
Linux — วิธีง่ายที่สุด
curl https://rclone.org/install.sh | bash
หรือจาก package manager
apt install rclone
ตรวจสอบ version
rclone version
rclone v1.67.0
ตั้งค่า Backblaze B2 Remote
Interactive config
rclone config
ตัวอย่าง: ตั้งค่า Backblaze B2
n) New remote
name> b2-backup
Storage> b2
เนื้อหาเกี่ยวข้อง — ทำความเข้าใจ công thức tính đường trung bình của tam giác
account> YOUR_ACCOUNT_ID
key> YOUR_APPLICATION_KEY
hard_delete> false
y) Yes this is OK
แนะนำเพิ่มเติม — คอร์สเทรด Forex ที่ iCafeForex
ทดสอบ
rclone lsd b2-backup:
rclone ls b2-backup:my-bucket/
ตั้งค่า S3 Compatible Remote
สำหรับ AWS S3, MinIO, Wasabi, Cloudflare R2
rclone config
n) New remote
name> s3-backup
Storage> s3
provider> AWS (หรือ Minio, Wasabi, Cloudflare)
access_key_id> YOUR_ACCESS_KEY
secret_access_key> YOUR_SECRET_KEY
region> ap-southeast-1
เนื้อหาเกี่ยวข้อง — บทความที่เกี่ยวข้อง: Cloud-init Load Testing Strategy
endpoint> (ว่างสำหรับ AWS, ใส่ URL สำหรับ MinIO/Wasabi)
ทดสอบ
rclone ls s3-backup:my-bucket/
ตั้งค่า SFTP Remote (สำหรับ sync ข้าม servers)
n) New remote
name> remote-server
Storage> sftp
host> 10.10.10.20
แนะนำเพิ่มเติม — SiamCafeBook
user> backup
key_file> ~/.ssh/id_ed25519
Copy — คัดลอกไฟล์
# Copy local ไป cloud (เฉพาะไฟล์ใหม่/เปลี่ยนแปลง)
rclone copy /backup/daily b2-backup:my-bucket/daily \
--transfers 8 \
--checkers 16 \
--progress
# Copy cloud ไป local
rclone copy b2-backup:my-bucket/daily /restore/daily --progress
# Copy cloud ไป cloud (ไม่ผ่าน local!)
rclone copy gdrive:Documents onedrive:Backup/Documents --progress
Sync — ทำให้ destination เหมือน source
# Sync local ไป cloud (จะลบไฟล์ใน cloud ที่ไม่มีใน local!)
rclone sync /data b2-backup:my-bucket/data \
--transfers 8 \
--progress
# ใช้ --dry-run ทดสอบก่อนเสมอ!
rclone sync /data b2-backup:my-bucket/data --dry-run
# Sync พร้อม backup deleted files
rclone sync /data b2-backup:my-bucket/data \
--backup-dir b2-backup:my-bucket/deleted/$(date +%Y%m%d)
Filtering
# Include/Exclude patterns
rclone copy /data b2-backup:my-bucket/data \
--include "*.sql.gz" \
--include "*.tar.gz" \
--exclude "*.tmp" \
--exclude ".cache/**" \
--min-size 1k \
--max-age 30d
# ใช้ filter file
# /etc/rclone/filter.txt
+ *.sql.gz
+ *.tar.gz
+ config/**
- *.tmp
- *.log
- .cache/**
- node_modules/**
rclone copy /data b2-backup:my-bucket/data \
--filter-from /etc/rclone/filter.txt
Encryption — เข้ารหัสข้อมูลบน Cloud
Rclone มี crypt remote ที่เข้ารหัสทั้งชื่อไฟล์และเนื้อหาด้วย NaCl SecretBox (XSalsa20 + Poly1305) ทำให้ cloud provider อ่านข้อมูลของเราไม่ได้เลย
ตั้งค่า Encrypted Remote

สร้าง crypt remote ที่ wrap remote อื่น
rclone config
n) New remote
name> b2-encrypted
เนื้อหาเกี่ยวข้อง — ทำความเข้าใจ MySQL InnoDB Tuning Production Setup Guide
Storage> crypt
remote> b2-backup:my-bucket/encrypted
filename_encryption> standard
directory_name_encryption> true
password> (ตั้ง password หรือ generate)
password2> (salt password)
ใช้งาน — เหมือน remote ปกติ
rclone copy /data/secrets b2-encrypted: --progress
ไฟล์บน B2 จะถูกเข้ารหัสทั้งชื่อและเนื้อหา
เราอ่านได้ปกติผ่าน b2-encrypted remote
rclone ls b2-encrypted:
แต่ถ้าดูผ่าน b2-backup จะเห็นชื่อไฟล์ที่เข้ารหัส
rclone ls b2-backup:my-bucket/encrypted/
จะเห็น: aqk3j2hf8s9d... (encrypted filenames)
Mount ด้วย rclone mount
# Mount B2 เป็น local directory
mkdir -p /mnt/cloud-backup
rclone mount b2-backup:my-bucket /mnt/cloud-backup \
--vfs-cache-mode full \
--vfs-cache-max-size 10G \
--vfs-read-ahead 128M \
--buffer-size 64M \
--dir-cache-time 5m \
--daemon
# ใช้งานเหมือน local directory
ls /mnt/cloud-backup/
cp /data/file.txt /mnt/cloud-backup/
# Unmount
fusermount -u /mnt/cloud-backup
Systemd Service สำหรับ Auto-mount
# /etc/systemd/system/rclone-mount.service
[Unit]
Description=Rclone Mount B2
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/rclone mount b2-backup:my-bucket /mnt/cloud-backup \
--vfs-cache-mode full \
--vfs-cache-max-size 10G \
--config /root/.config/rclone/rclone.conf \
--allow-other
ExecStop=/bin/fusermount -u /mnt/cloud-backup
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# Enable
systemctl enable --now rclone-mount.service
Backup Script สำหรับ Production
#!/bin/bash
# /usr/local/bin/rclone-backup.sh
set -euo pipefail
REMOTE="b2-encrypted"
BUCKET="server-backup"
LOG="/var/log/rclone-backup.log"
DATE=$(date +%Y%m%d)
BANDWIDTH="50M" # จำกัด bandwidth
log() { echo "$(date '+%Y-%m-%d %H:%M:%S') $1" | tee -a "$LOG"; }
log "=== Backup started ==="
# 1. Backup databases
log "Backing up databases..."
rclone copy /backup/mysql ":/mysql/" \
--transfers 4 \
--bwlimit "$BANDWIDTH" \
--log-file "$LOG" \
--log-level INFO
# 2. Backup configs
log "Backing up configs..."
rclone sync /etc ":/etc/" \
--exclude "shadow" \
--exclude "gshadow" \
--bwlimit "$BANDWIDTH" \
--log-file "$LOG"
# 3. Backup web data
log "Backing up web data..."
rclone sync /var/www ":/www/" \
--exclude "node_modules/**" \
--exclude ".git/**" \
--exclude "*.log" \
--bwlimit "$BANDWIDTH" \
--log-file "$LOG"
# 4. Cleanup old backups (keep 90 days)
log "Cleaning up old backups..."
rclone delete ":/mysql/" --min-age 90d --log-file "$LOG"
# 5. Verify
REMOTE_SIZE=$(rclone size ":/" --json | python3 -c "import sys, json;print(json.load(sys.stdin)['bytes'])")
log "Remote size: $((REMOTE_SIZE / 1073741824)) GB"
log "=== Backup completed ==="
# Crontab: 0 2 * * * /usr/local/bin/rclone-backup.sh
Bandwidth Limiting
จำกัด bandwidth ตามเวลา
rclone copy /data b2-backup:my-bucket/data \
เนื้อหาเกี่ยวข้อง — API Versioning IoT Gateway
--bwlimit "08:00,10M 23:00,100M"
08:00-23:00: จำกัด 10MB/s (ช่วง business hours)
23:00-08:00: จำกัด 100MB/s (ช่วงกลางคืน)
การดูแลระบบในสภาพแวดล้อม Production
การบริหารจัดการระบบ Production ที่ดีต้องมี Monitoring ครอบคลุม ใช้เครื่องมืออย่าง Prometheus + Grafana สำหรับ Metrics Collection และ Dashboard หรือ ELK Stack สำหรับ Log Management ตั้ง Alert ให้แจ้งเตือนเมื่อ CPU เกิน 80% RAM ใกล้เต็ม หรือ Disk Usage สูง
Backup Strategy ต้องวางแผนให้ดี ใช้หลัก 3-2-1 คือ มี Backup อย่างน้อย 3 ชุด เก็บใน Storage 2 ประเภทต่างกัน และ 1 ชุดต้องอยู่ Off-site ทดสอบ Restore Backup เป็นประจำ อย่างน้อยเดือนละครั้ง เพราะ Backup ที่ Restore ไม่ได้ก็เหมือนไม่มี Backup
เรื่อง Security Hardening ต้องทำตั้งแต่เริ่มต้น ปิด Port ที่ไม่จำเป็น ใช้ SSH Key แทน Password ตั้ง Fail2ban ป้องกัน Brute Force อัพเดท Security Patch สม่ำเสมอ และทำ Vulnerability Scanning อย่างน้อยเดือนละครั้ง ใช้หลัก Principle of Least Privilege ให้สิทธิ์น้อยที่สุดที่จำเป็น
Cloud storage ไหนถูกที่สุดสำหรับ backup?
Backblaze B2 ถูกที่สุดสำหรับ backup ที่ $5/TB/month storage, $10/TB egress (มี free egress ถ้าใช้ผ่าน Cloudflare) Wasabi เป็นอีกตัวเลือกที่ดี $6.99/TB/month ไม่มีค่า egress แต่มี minimum 90-day retention Cloudflare R2 ไม่มีค่า egress เลยแต่ราคา storage $15/TB/month ผมใช้ B2 + Cloudflare สำหรับ backup หลักและ S3 Glacier Deep Archive ($1/TB/month) สำหรับ long-term archive
Rclone sync จะลบไฟล์ใน destination จริงไหม?
ใช่ครับ rclone sync ทำให้ destination เหมือน source ถ้าไฟล์ไม่มีใน source จะถูกลบจาก destination ใช้ --dry-run ทดสอบก่อนเสมอ! ถ้าต้องการแค่ copy ไฟล์ใหม่โดยไม่ลบใช้ rclone copy แทนหรือใช้ --backup-dir เก็บไฟล์ที่จะถูกลบไว้อีกที่
Rclone เร็วแค่ไหน?
ขึ้นอยู่กับ bandwidth ของ server และ cloud provider Rclone รองรับ multi-threaded transfers ด้วย --transfers flag ผมใช้ 8-16 transfers พร้อมกันบน server ที่มี 1Gbps connection ได้ throughput ประมาณ 500-800 Mbps สำหรับ large files สำหรับ small files จำนวนมากอาจช้าลงเพราะ API overhead ให้ใช้ --checkers เพิ่มจำนวน parallel checking
จะ encrypt เฉพาะบางไฟล์ได้ไหม?
Rclone crypt remote เข้ารหัสทุกไฟล์ใน path ที่กำหนดถ้าต้องการ encrypt เฉพาะบาง directory ให้สร้าง crypt remote แยกสำหรับ directory นั้นเช่น b2-encrypted-secrets ชี้ไปที่ b2-backup:my-bucket/secrets ส่วน b2-backup ใช้สำหรับ non-sensitive data ที่ไม่ต้อง encrypt สำหรับ secrets management ที่ซับซ้อนกว่าดูบทความ Vault Secrets Management ของผม
สรุป
Rclone เป็นเครื่องมือจัดการ cloud storage ที่ดีที่สุดสำหรับ command-line รองรับ providers มากกว่า 70 แห่งมี encryption ในตัว mount เป็น local drive ได้และ automate ด้วย cron/systemd ได้ง่าย
สำหรับ backup strategy ผมแนะนำ 3-2-1 rule คือ 3 copies ของ data, 2 different media types, 1 offsite copy ใช้ Rclone sync ไปยัง Backblaze B2 หรือ S3 เป็น offsite copy พร้อม encryption ให้ข้อมูลปลอดภัยแม้ cloud provider โดน breach
อ่านเพิ่มเติม: สอนเทรด Forex | XM Signal | IT Hardware | อาชีพ IT | SiamCafe Book | iCafe Cloud





