❤️ AZDIGI chính thức cập nhật hệ thống blog mới hoàn chỉnh. Tuy nhiên có thể một số bài viết bị sai lệch hình ảnh, hãy ấn nút Báo cáo bài viết ở cuối bài để AZDIGI cập nhật trong thời gian nhanh nhất. Chân thành cám ơn.
Chuyển dữ liệu giữa các dịch vụ Object Storage là nhu cầu khá phổ biến: bạn muốn đổi nhà cung cấp, cần backup cross-cloud, hoặc đơn giản là migrate dữ liệu từ hệ thống cũ sang hệ thống mới. Cái hay của S3-compatible protocol là hầu hết các provider đều hỗ trợ chung một chuẩn API, nên việc di chuyển dữ liệu giữa chúng không quá phức tạp nếu bạn chọn đúng công cụ.
Bài viết này hướng dẫn chi tiết cách chuyển dữ liệu từ một S3 provider bất kỳ (AWS S3, DigitalOcean Spaces, Wasabi, MinIO, Backblaze B2…) sang AZ Cloud Storage của AZDIGI, hoặc ngược lại. Mình sẽ cover 4 công cụ khác nhau, chạy trên cả Linux, macOS và Windows.
Dù dữ liệu của bạn chỉ vài GB hay hàng trăm GB, bạn đều tìm được cách phù hợp ở đây. Với mỗi công cụ, mình sẽ đi qua cài đặt, cấu hình, lệnh chuyển dữ liệu, và cách verify sau khi xong.

Chuẩn bị trước khi chuyển dữ liệu
Trước khi bắt tay vào chuyển, bạn cần chuẩn bị một số thông tin từ cả hai phía: nguồn (source) và đích (destination).
Thông tin cần có ở cả 2 bên
- Access Key ID: khóa truy cập S3
- Secret Access Key: khóa bí mật đi kèm
- Endpoint URL: địa chỉ API của provider (ví dụ:
s3.amazonaws.com, hoặc endpoint AZ Cloud Storage) - Region: vùng lưu trữ (ví dụ:
ap-southeast-1,sgp1, dịch vụ AZ Cloud Storage thì không cần nhập vùng) - Bucket name: tên bucket nguồn và bucket đích
💡 Với AZ Cloud Storage, bạn lấy Access Key và Endpoint trong trang quản trị dịch vụ Cloud Storage tại my.azdigi.com.
Kiểm tra trước khi bắt đầu
- Dung lượng dữ liệu: biết trước tổng dung lượng để ước tính thời gian chuyển và chuẩn bị đủ dung lượng ở bucket đích.
- Bandwidth: nếu chuyển qua internet, tốc độ phụ thuộc đường truyền. Chuyển giữa hai provider cùng datacenter sẽ nhanh hơn nhiều so với cross-region.
- Kế hoạch chuyển: chuyển một lần (full copy) hay đồng bộ liên tục (incremental sync)? Nếu dữ liệu nguồn vẫn thay đổi, bạn nên dùng sync thay vì copy.
- Bucket đích đã tạo chưa: một số công cụ tự tạo bucket, nhưng tốt nhất bạn nên tạo trước để kiểm soát tên và region.
Checklist nhanh
| Hạng mục | Nguồn (Source) | Đích (Destination) |
|---|---|---|
| Access Key | ✅ | ✅ |
| Secret Key | ✅ | ✅ |
| Endpoint URL | ✅ | ✅ |
| Region | ✅ | ✅ |
| Bucket name | ✅ | ✅ |
| Bucket đích đã tạo | – | ✅ |
Cách 1: rclone (khuyên dùng)
rclone là công cụ dòng lệnh mã nguồn mở, hỗ trợ hơn 70 loại cloud storage. Với S3 migration, rclone là lựa chọn số một vì nó copy trực tiếp từ S3 nguồn sang S3 đích mà không cần lưu tạm dữ liệu về máy local. Tốc độ nhanh, hỗ trợ multipart upload, resume transfer, và verify bằng checksum.
Cài đặt rclone
Linux
curl https://rclone.org/install.sh | sudo bash
Hoặc cài qua package manager:
sudo apt install rclone # Debian/Ubuntu
sudo yum install rclone # CentOS/RHEL
macOS
brew install rclone
Windows
Tải installer từ rclone.org/downloads, hoặc dùng package manager:
scoop install rclone
# hoặc
winget install rclone
Cấu hình 2 remote (nguồn + đích)
Chạy rclone config để tạo remote qua wizard, hoặc chỉnh file config trực tiếp. Mình ví dụ cấu hình file cho dễ hình dung:
File cấu hình nằm ở ~/.config/rclone/rclone.conf (Linux/macOS) hoặc %APPDATA%\rclone\rclone.conf (Windows):
[source-s3]
type = s3
provider = AWS
access_key_id = AKIAXXXXXXXXXXXX
secret_access_key = your-source-secret-key
region = ap-southeast-1
[az-storage]
type = s3
provider = Other
access_key_id = AZ_ACCESS_KEY
secret_access_key = AZ_SECRET_KEY
endpoint = https://ENDPOINT_AZ_CLOUD_STORAGE
region = sgp1
ℹ️ Thay ENDPOINT_AZ_CLOUD_STORAGE bằng endpoint thật của AZ Cloud Storage mà bạn nhận được khi đăng ký dịch vụ. Với các provider khác (DigitalOcean Spaces, Wasabi…), bạn cũng cấu hình tương tự, chỉ đổi endpoint và region.
Nếu nguồn là provider khác (không phải AWS), chọn provider = Other và điền endpoint tương ứng.
Chuyển dữ liệu
Copy toàn bộ bucket từ nguồn sang đích:
rclone copy source-s3:my-bucket az-storage:new-bucket -P --transfers 16
Sync (giữ đồng bộ, xoá file thừa ở đích nếu nguồn không còn):
rclone sync source-s3:my-bucket az-storage:new-bucket -P --transfers 16
Chỉ copy một thư mục cụ thể:
rclone copy source-s3:my-bucket/images az-storage:new-bucket/images -P
Dry run (xem trước những gì sẽ chuyển, không thực sự copy):
rclone copy source-s3:my-bucket az-storage:new-bucket --dry-run
⚠️ rclone sync sẽ xoá file ở đích nếu file đó không tồn tại ở nguồn. Nếu bạn chỉ muốn copy thêm mà không xoá, dùng rclone copy.
Tối ưu hiệu năng
Với dữ liệu lớn, bạn nên tinh chỉnh thêm vài tham số:
rclone copy source-s3:my-bucket az-storage:new-bucket \
-P \
--transfers 32 \
--checkers 16 \
--s3-chunk-size 64M \
--s3-upload-concurrency 4 \
--fast-list
Giải thích các flag:
--transfers 32: chuyển 32 file cùng lúc (tăng nếu bandwidth lớn)--checkers 16: 16 luồng kiểm tra file song song--s3-chunk-size 64M: kích thước chunk cho multipart upload (mặc định 5MB, tăng lên giúp chuyển file lớn nhanh hơn)--s3-upload-concurrency 4: mỗi file lớn upload 4 phần song song--fast-list: đọc listing nhanh hơn bằng cách load toàn bộ danh sách file vào RAM (tốn RAM nhưng giảm API call)-P: hiển thị progress realtime
Verify sau khi chuyển
Sau khi copy xong, chạy lệnh check để so sánh nguồn và đích:
rclone check source-s3:my-bucket az-storage:new-bucket --one-way
Lệnh này so sánh kích thước và hash (MD5) giữa hai bên. Flag --one-way chỉ kiểm tra chiều từ nguồn sang đích (đảm bảo mọi file ở nguồn đều có ở đích).
Nếu cả nguồn và đích đều là S3, nên dùng thêm --checksum khi copy/sync để rclone so sánh bằng MD5 thay vì modification time, vừa chính xác hơn vừa tiết kiệm API call:
rclone sync source-s3:my-bucket az-storage:new-bucket --checksum -P --transfers 16
Cách 2: AWS CLI
AWS CLI là công cụ chính thức từ Amazon, nhiều người đã quen dùng. Tuy nhiên có một hạn chế lớn: AWS CLI không hỗ trợ copy trực tiếp giữa hai endpoint S3 khác nhau. Bạn phải download về máy local rồi upload lên đích.
Cài đặt
Linux/macOS
pip install awscli
# hoặc
brew install awscli
Tải MSI installer từ aws.amazon.com/cli.Windows
Cấu hình 2 profile
# Profile cho nguồn
aws configure --profile source
# Nhập Access Key, Secret Key, Region
# Profile cho đích
aws configure --profile destination
# Nhập Access Key, Secret Key, Region
Hoặc chỉnh trực tiếp file ~/.aws/credentials:
[source]
aws_access_key_id = SOURCE_ACCESS_KEY
aws_secret_access_key = SOURCE_SECRET_KEY
[destination]
aws_access_key_id = AZ_ACCESS_KEY
aws_secret_access_key = AZ_SECRET_KEY
Chuyển dữ liệu (qua thư mục local)
Bước 1: download từ nguồn về máy local:
aws s3 sync s3://source-bucket ./local-temp \
--profile source \
--endpoint-url https://source-endpoint
Bước 2: upload từ local lên đích:
aws s3 sync ./local-temp s3://dest-bucket \
--profile destination \
--endpoint-url https://az-cloud-storage-endpoint
⚠️ Cách này cần đủ dung lượng local để chứa toàn bộ dữ liệu tạm thời. Với dataset lớn (hàng trăm GB), nên dùng rclone thay vì AWS CLI để tránh phải download về local.
Cách 3: MinIO Client (mc)
MinIO Client (mc) là công cụ CLI từ MinIO, khá gọn nhẹ và dễ dùng. Điểm mạnh của mc là hỗ trợ copy trực tiếp giữa hai S3 endpoint khác nhau (giống rclone) và giữ nguyên custom metadata (x-amz-meta-*), điều mà rclone và AWS CLI không làm được.
Cài đặt
Linux
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
macOS
brew install minio/stable/mc
Tải Windows
mc.exe từ min.io/download.
Cấu hình alias
# Nguồn (ví dụ AWS S3)
mc alias set source https://s3.amazonaws.com SOURCE_ACCESS_KEY SOURCE_SECRET_KEY
# Đích (AZ Cloud Storage)
mc alias set azcloud https://ENDPOINT_AZ_CLOUD_STORAGE AZ_ACCESS_KEY AZ_SECRET_KEY
Chuyển dữ liệu
Mirror (đồng bộ toàn bộ bucket, bao gồm cả cấu trúc thư mục):
mc mirror source/my-bucket azcloud/new-bucket --overwrite
Copy đệ quy:
mc cp --recursive source/my-bucket/ azcloud/new-bucket/
Kiểm tra dung lượng đã chuyển:
mc du azcloud/new-bucket
💡 Nếu dữ liệu của bạn có custom metadata headers (x-amz-meta-*) và bạn cần giữ nguyên metadata đó, hãy dùng mc thay vì rclone. Đây là điểm mạnh chính của MinIO Client.
Cách 4: GUI Tools (dành cho người không quen CLI)
Nếu bạn không quen dòng lệnh, có thể dùng các ứng dụng giao diện đồ hoạ sau. Lưu ý: các tool GUI thường chuyển dữ liệu qua máy local (download rồi upload), nên tốc độ sẽ chậm hơn so với rclone hoặc mc.
Cyberduck (macOS, Windows)
Download tại cyberduck.io. Cyberduck hỗ trợ kết nối S3-compatible thông qua giao thức Amazon S3.
- Tạo 2 bookmark: một cho nguồn, một cho đích
- Mở 2 cửa sổ Cyberduck song song
- Kéo thả (drag & drop) file/folder giữa 2 cửa sổ
Cách này trực quan, dễ dùng, nhưng với dữ liệu lớn sẽ rất chậm vì phải download về máy rồi upload lên.
S3 Browser (Windows)
Download tại s3browser.com. Đây là ứng dụng chuyên dụng cho S3, chỉ chạy trên Windows.
- Thêm 2 account (nguồn + đích) với endpoint tương ứng
- Duyệt file trong từng bucket
- Copy file giữa các account bằng menu chuột phải
Nếu bạn đang dùng Windows và cần quản lý S3 hàng ngày, S3 Browser là lựa chọn khá tiện. AZDIGI cũng có bài hướng dẫn S3 Browser chi tiết.
WinSCP (Windows)
WinSCP từ phiên bản 5.19 trở lên đã hỗ trợ S3 protocol. Cấu hình: New Site, chọn Amazon S3, nhập endpoint, access key, secret key.
WinSCP có chức năng Synchronize giúp đồng bộ local với remote, nhưng không hỗ trợ remote-to-remote. Phù hợp nếu bạn đã có WinSCP sẵn và chỉ cần chuyển lượng dữ liệu nhỏ.
Xử lý dữ liệu lớn (trên 100GB)
Khi dữ liệu lên đến hàng trăm GB hoặc hàng TB, bạn cần chú ý thêm vài điểm:
Multipart upload
Với file trên 5GB, cả rclone và AWS CLI đều tự động dùng multipart upload (chia file thành nhiều phần nhỏ rồi upload song song). Bạn không cần cấu hình gì thêm, chỉ cần biết là nó hoạt động ngầm.
Giới hạn bandwidth
Nếu bạn chạy transfer trên server production và không muốn ảnh hưởng đến traffic khác:
rclone copy source-s3:bucket az-storage:bucket --bwlimit 50M -P
Flag --bwlimit 50M giới hạn tốc độ ở mức 50MB/s.
Chạy trong screen hoặc tmux
Transfer lớn có thể mất vài giờ đến vài ngày. Nếu bạn chạy qua SSH, dùng screen hoặc tmux để giữ session khi disconnect:
# Tạo session mới
tmux new -s migration
# Chạy rclone trong tmux
rclone sync source-s3:bucket az-storage:bucket -P --transfers 32
# Detach: Ctrl+B rồi D
# Quay lại: tmux attach -t migration
Resume transfer bị gián đoạn
rclone tự động skip các file đã chuyển thành công khi bạn chạy lại lệnh. Nên nếu transfer bị ngắt giữa chừng, cứ chạy lại lệnh y hệt, rclone sẽ chỉ chuyển phần còn lại.
Verify bằng checksum
Sau khi chuyển xong, nên verify bằng checksum để chắc chắn không có file nào bị lỗi:
rclone check source-s3:bucket az-storage:bucket --one-way --checksum
Bảng so sánh công cụ

| Công cụ | Hệ điều hành | S3→S3 trực tiếp | Giao diện | Tốc độ | Độ khó |
|---|---|---|---|---|---|
| rclone | Linux, macOS, Windows | ✅ Có | CLI | Nhanh nhất | Trung bình |
| AWS CLI | Linux, macOS, Windows | ❌ Qua local | CLI | Nhanh | Trung bình |
| MinIO mc | Linux, macOS, Windows | ✅ Có | CLI | Nhanh | Dễ |
| Cyberduck | macOS, Windows | ❌ Qua local | GUI | Chậm | Dễ nhất |
| S3 Browser | Windows | ❌ Qua local | GUI | Trung bình | Dễ |
| WinSCP | Windows | ❌ Qua local | GUI | Trung bình | Dễ |
Nếu ưu tiên tốc độ và chuyển trực tiếp S3→S3, chọn rclone. Nếu cần giữ custom metadata, chọn MinIO mc. Nếu không quen CLI, Cyberduck hoặc S3 Browser là lựa chọn dễ tiếp cận nhất.
Câu hỏi thường gặp
Chuyển dữ liệu mất bao lâu?
Tuỳ thuộc vào dung lượng dữ liệu, số lượng file, và bandwidth giữa nguồn và đích. Với đường truyền 1Gbps, chuyển 100GB mất khoảng 15-20 phút ở điều kiện lý tưởng. File nhỏ nhiều sẽ chậm hơn file lớn ít (vì overhead cho mỗi HTTP request). Với rclone, tăng --transfers lên 32-64 giúp tận dụng tối đa bandwidth.
Có mất phí bandwidth khi chuyển không?
Phụ thuộc vào provider nguồn. Nhiều provider tính phí egress (bandwidth ra). Với AZ Cloud Storage, không tính phí egress nội địa. Một số provider như AWS tính phí egress từ 0.09$/GB. Trước khi chuyển, nên kiểm tra chính sách phí của provider nguồn.
Chuyển xong làm sao verify dữ liệu đầy đủ?
Dùng rclone check để so sánh số lượng file, kích thước, và checksum giữa nguồn và đích. Nếu không có lỗi nào báo ra, dữ liệu đã chuyển đầy đủ và chính xác.
Có thể chuyển incremental (chỉ file mới/thay đổi) không?
Có. Cả rclone sync và mc mirror đều chỉ chuyển file mới hoặc file đã thay đổi. Bạn có thể chạy lại lệnh nhiều lần, chúng sẽ tự skip file đã có ở đích.
File trên 5GB xử lý thế nào?
rclone và AWS CLI tự động dùng multipart upload cho file trên 5GB. File sẽ được chia thành nhiều phần (mặc định 5MB/chunk với AWS CLI, có thể tăng với rclone qua --s3-chunk-size), upload song song rồi ghép lại ở đích. Quá trình này tự động, bạn không cần can thiệp.
Tổng kết
Chuyển dữ liệu giữa các S3-compatible Object Storage không phức tạp nếu bạn chuẩn bị đúng thông tin và chọn đúng công cụ. Với hầu hết trường hợp, rclone là lựa chọn tốt nhất vì hỗ trợ S3→S3 trực tiếp, nhanh, và có sẵn trên mọi OS. Nếu dữ liệu có custom metadata, chuyển qua MinIO mc. Còn nếu bạn thích giao diện đồ hoạ, Cyberduck hoặc S3 Browser là lựa chọn đơn giản.
Bạn đang tìm dịch vụ Object Storage S3-compatible tại Việt Nam? AZ Cloud Storage cung cấp lưu trữ S3 với replica 3 bản, 99.99% durability, network 10Gbps, không tính phí egress nội địa.
Tham khảo thêm
- Hướng dẫn sử dụng AZ Cloud Storage
- Hướng dẫn kết nối Rclone với S3
- Hướng dẫn kết nối S3 bằng CLI với MinIO Client (mc)
- Object Storage vs File Storage vs Block Storage
- Tích hợp S3 Storage vào WordPress
- Backup WordPress lên S3 bằng UpdraftPlus
- Tài liệu rclone S3 (trang chủ)
- MinIO Client Downloads (trang chủ)
Có thể bạn cần xem thêm
Về tác giả
Trần Thắng
Chuyên gia tại AZDIGI với nhiều năm kinh nghiệm trong lĩnh vực web hosting và quản trị hệ thống.