Bài này hướng dẫn chuyển toàn bộ dữ liệu từ một kho S3 khác – AWS S3, Wasabi, Backblaze B2, DigitalOcean Spaces hay bất kỳ dịch vụ nào nói giao thức S3 – về Object Storage của Cloudzone, bằng rclone, không phải tải xuống máy rồi tải lên lại.
Cách làm dưới đây truyền thẳng từ kho cũ sang kho mới, nên không tốn dung lượng ổ đĩa và chạy được từ một máy chủ nhỏ.
1. Trước khi bắt đầu: ước lượng và tiền ra
Việc tốn tiền nhất khi rời một nhà cung cấp quốc tế thường không phải phí lưu trữ mà là phí tải dữ liệu ra (egress). AWS S3 tính tiền cho từng GB đi ra; Wasabi và Backblaze có chính sách khác. Đo trước để biết mình sắp trả bao nhiêu:
rclone size aws:ten-bucket-cu
Lệnh này in tổng số đối tượng và tổng dung lượng. Nhân dung lượng với đơn giá egress của nhà cung cấp cũ là ra con số cần biết trước khi bấm chạy.
Phía Cloudzone thì không thu phí tải lên. Dung lượng gói cần đủ chứa khối dữ liệu đó, xem bảng giá ở trang Object Storage.
2. Khai hai kho trong cùng một tệp cấu hình
Chưa có cặp khoá Cloudzone thì lấy trong Portal theo bài Bắt đầu với Object Storage.
Khai cả hai remote vào ~/.config/rclone/rclone.conf:
mkdir -p ~/.config/rclone
cat > ~/.config/rclone/rclone.conf <<'EOF'
[cloudzone]
type = s3
provider = Ceph
endpoint = https://object.cloudzone.vn
access_key_id = KHOA_LAY_TRONG_PORTAL
secret_access_key = KHOA_BI_MAT_LAY_TRONG_PORTAL
acl = private
[aws]
type = s3
provider = AWS
region = ap-southeast-1
access_key_id = KHOA_AWS
secret_access_key = KHOA_BI_MAT_AWS
EOF
chmod 600 ~/.config/rclone/rclone.conf
Với nhà cung cấp khác, đổi khối [aws] cho đúng:
| Dịch vụ cũ | provider | endpoint |
|---|---|---|
| AWS S3 | AWS |
không cần, chỉ cần region |
| Wasabi | Wasabi |
s3.ap-southeast-1.wasabisys.com hoặc vùng đang dùng |
| Backblaze B2 | Other |
s3.us-west-002.backblazeb2.com hoặc vùng đang dùng |
| DigitalOcean Spaces | DigitalOcean |
sgp1.digitaloceanspaces.com hoặc vùng đang dùng |
chmod 600 không được bỏ: tệp này giữ khoá của cả hai kho.
3. Nhìn trước khi chuyển
rclone lsd aws:
rclone ls aws:ten-bucket-cu | head -20
rclone size aws:ten-bucket-cu
Ba lệnh này cho thấy kho cũ có những bucket nào, vài tệp đầu tiên trông ra sao, và tổng khối lượng. Nếu một trong ba lệnh báo lỗi thì dừng lại sửa kết nối trước, đừng chạy lệnh chuyển.
Tạo bucket đích bên Cloudzone. Tên bucket không sửa được sau khi tạo, nên đặt một lần cho đúng:
rclone mkdir cloudzone:abc-anh-san-pham
4. Chuyển thử một phần nhỏ trước
Đừng chạy toàn bộ ngay từ đầu. Lấy một thư mục con để chắc đường đi thông:
rclone copy aws:ten-bucket-cu/2024 cloudzone:abc-anh-san-pham/2024 \
--progress --transfers 8 --checkers 16
Đối chiếu hai bên:
rclone check aws:ten-bucket-cu/2024 cloudzone:abc-anh-san-pham/2024 --one-way
Không báo lỗi nghĩa là phần đó đã sang đủ và khớp.
5. Chuyển toàn bộ
Dữ liệu lớn thì lượt chuyển chạy nhiều giờ, có khi nhiều ngày. Chạy trong screen hoặc tmux để mất kết nối SSH cũng không đứt việc:
screen -S chuyen-kho
rclone copy aws:ten-bucket-cu cloudzone:abc-anh-san-pham \
--transfers 16 --checkers 32 \
--log-file /var/log/chuyen-kho.log --log-level INFO \
--stats 1m --stats-one-line \
--retries 5 --low-level-retries 20
Thoát khỏi màn hình screen mà vẫn để việc chạy: bấm Ctrl+A rồi D. Quay lại xem bằng screen -r chuyen-kho.
Mấy tuỳ chọn đáng để ý:
--transfers 16– gửi 16 tệp song song. Nhiều tệp nhỏ thì tăng con số này ăn thua nhất; nhưng tăng quá tay là chiếm hết đường truyền của chính máy chủ đó.--bwlimit 50M– thêm vào nếu máy chủ nguồn còn đang phục vụ khách. Giới hạn theo khung giờ cũng được:--bwlimit "08:00,20M 22:00,off".--log-file– bắt buộc với lượt chạy dài. Không có nhật ký thì lúc hỏng không biết hỏng ở tệp nào.
copy chỉ thêm và cập nhật, không xoá gì ở kho cũ. Lượt chạy đứt giữa chừng thì chạy lại chính lệnh đó: những tệp đã sang đủ sẽ được bỏ qua, không gửi lại từ đầu.
6. Đối chiếu trước khi đổi ứng dụng sang kho mới
rclone check aws:ten-bucket-cu cloudzone:abc-anh-san-pham --one-way \
--log-file /var/log/doi-chieu.log
rclone size aws:ten-bucket-cu
rclone size cloudzone:abc-anh-san-pham
Hai lệnh size phải ra cùng số đối tượng và dung lượng xấp xỉ nhau. Lệnh check không báo thiếu tệp nào thì bản sang đã đủ.
Chỉ sau bước này mới đổi cấu hình ứng dụng. Đừng xoá kho cũ ngay – giữ thêm ít nhất vài ngày, tới khi chắc ứng dụng chạy bình thường trên kho mới.
7. Đổi ứng dụng sang kho mới
Trong cấu hình ứng dụng, đổi ba thứ: endpoint thành https://object.cloudzone.vn, cặp khoá thành khoá lấy trong Portal, và tên bucket nếu đặt khác tên cũ.
Hai chỗ hay vướng khi rời AWS:
- Region. Nhiều SDK bắt buộc khai một giá trị region. Khai
us-east-1là chạy, đây chỉ là giá trị hình thức. - Kiểu địa chỉ. Endpoint của Cloudzone nhận cả dạng đường dẫn (
endpoint/tên-bucket) lẫn dạng tên miền con (tên-bucket.object.cloudzone.vn), nên thường không phải chỉnh thêm tuỳ chọn nào.
Ứng dụng báo lỗi sau khi đổi thì xem bài Lỗi thường gặp khi kết nối Object Storage và cách xử lý.
8. Lượt chuyển cuối cùng, rồi mới dừng kho cũ
Giữa lúc chuyển và lúc đổi ứng dụng, kho cũ vẫn có thể nhận thêm dữ liệu mới. Chạy thêm một lượt cuối để bắt phần chênh:
rclone copy aws:ten-bucket-cu cloudzone:abc-anh-san-pham \
--max-age 7d --transfers 16 --progress
--max-age 7d chỉ xét tệp đổi trong bảy ngày gần nhất, nên lượt này chạy nhanh hơn nhiều so với quét lại toàn bộ.
Xong lượt đó, đối chiếu lại bằng rclone check một lần nữa, rồi mới đóng tài khoản cũ.
9. Câu hỏi thường gặp
Có cần máy chủ riêng để chạy việc chuyển không? Không cần máy mạnh, vì dữ liệu đi thẳng giữa hai kho, máy chỉ điều phối. Nhưng nên chạy trên một máy chủ có đường truyền tốt và chạy liên tục, đừng chạy trên máy tính cá nhân rồi tắt máy giữa chừng.
Chuyển cả thuộc tính của tệp được không? Rclone giữ kiểu nội dung và thời gian sửa. Những thứ riêng của nhà cung cấp cũ – lớp lưu trữ, quy tắc vòng đời, thẻ gắn trên đối tượng – thì không mang theo được, phải khai lại ở kho mới.
Dữ liệu đang ở lớp lưu trữ lạnh như Glacier thì sao? Phải khôi phục về lớp thường ở phía nhà cung cấp cũ trước, rclone không đọc trực tiếp dữ liệu đang đóng băng.
Đang chuyển mà hết dung lượng gói thì sao? Lượt chạy sẽ báo lỗi từ chối ghi. Mua thêm dung lượng hoặc nâng gói trong Portal Cloudzone, dữ liệu và khoá giữ nguyên, rồi chạy lại chính lệnh cũ.
Có cần dừng dịch vụ trong lúc chuyển không? Không. Lượt chuyển chính chạy trong lúc ứng dụng vẫn hoạt động trên kho cũ; chỉ lúc đổi cấu hình ứng dụng mới cần một khoảng ngắt rất ngắn, và lượt chuyển cuối ở mục 8 lo phần chênh.
Quý Khách hàng muốn Cloudzone hỗ trợ lên kế hoạch chuyển cho khối dữ liệu lớn, vui lòng nhắn qua ô chat trên trang Cloudzone.
Bài liên quan trong chuyên mục Object Storage
- Bắt đầu với Object Storage: lấy khoá kết nối và tạo bucket đầu tiên
- Tải lên, tải về và quản lý dữ liệu trên Object Storage
- Lỗi thường gặp khi kết nối Object Storage và cách xử lý
- Dọn dữ liệu và giữ dung lượng Object Storage trong tầm kiểm soát
- Sao lưu máy chủ Linux lên Object Storage bằng rclone
- Đưa bản sao lưu cPanel hoặc DirectAdmin lên Object Storage
- Nối NAS Synology hoặc QNAP vào Object Storage
- Dùng Object Storage trong ứng dụng: PHP, Laravel, Python và Node.js