Rclone Cloud Sync Sync ข้อมูลข้าม Cloud Storage 2026 SiamCafe.net | IT Expert Since 1997

Rclone Cloud Sync — คู่มือ Sync ข้อมูลข้าม Cloud Storage 2026

rclone cloud sync 0038
โดยอ. บอม (SiamCafe Admin) | 28/02/2026 | Cloud | 1,800+ คำ

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
# account> YOUR_ACCOUNT_ID
# key> YOUR_APPLICATION_KEY
# hard_delete> false
# y) Yes this is OK

# ทดสอบ
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
# 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
# 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
# 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 \
 --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

แนะนำโดยผู้เชี่ยวชาญ

iCafeForex สอนเทรด Forex ฟรี SiamLancard IT Solutions
👨‍💻

อ. บอมกิตติทัศน์เจริญพนาสิทธิ์

ผู้ก่อตั้ง SiamCafe.net (1997) | IT Expert 30+ ปี | ประสบการณ์ Network, Server, Security, DevOps