Đồng bộ dữ liệu từ sử dụng tool s5cmd

s5cmd là công cụ giúp upload, sync với tốc độ cải thiện hơn so với s3sync. Hỗ trợ sync từ local (server, máy tính bàn) lên dịch vụ lưu trữ đám mấy theo chuẩn S3. Công cụ này cũng giúp upload file, download và sync dữ liệu từ bucket này sang bucket khác theo chuẩn S3.

Xem thêm tại https://github.com/peak/s5cmd

Bài viết này hướng dẫn cách thiết lập việc replicate data/migrate data từ local sang Bizfly Simple Storage, download file về server.

1. Cài đặt s5cmd

Các phiên bản của s5cmd có thể được tìm thấy ở đây: https://github.com/peak/s5cmd/releases. s5cmd hỗ trợ nhiều hệ điều hành như FreeBSD, Linux, OpenBSD, MacOS.

s5cmd là tool chạy trực tiếp nên chỉ cần download về là có thể chạy được. Ví dụ download với server linux

wget https://github.com/peak/s5cmd/releases/download/v2.0.0/s5cmd_2.0.0_Linux-64bit.tar.gz
tar -xvf s5cmd_2.0.0_Linux-64bit.tar.gz
chmod +x s5cmd

2. Lấy thông tin xác thực của dịch vụ Bizfly Simple Storage

Tại dashboard, vào phần Simple Storage -> Quản lý Access Keys

Thông tin cần lấy: Access keySecret key

3. Thực hiện các câu lệnh sync dữ liệu

s5cmd sẽ cần truyền tham số cho source và target, source là nơi chứa dữ liệu cần được sync và target là nơi sẽ được sync dữ liệu đến.

Trước khi thực hiện sync, cần cung cấp thông tin xác thực cho s5cmd.

  1. Tạo thư mục:
mkdir ~/.aws
  1. Tạo file ~/.aws/credentials, file này chứa thông tin xác thực đã được lấy từ bước 2:
cat ~/.aws/credentials 
[default]
aws_access_key_id = <access-key-bizfly-simple-storage>
aws_secret_access_key = <secret-key-bizfly-simple-storage>
  1. Khai báo endpoint của dịch vụ Simple Storage:
export S3_ENDPOINT_URL="https://hn.ss.bfcplatform.vn"

Sau khi khai báo các thông tin cần thiết để xác thực với S3, s5 cmd hỗ trợ các tính năng sau:

Upload dữ liệu từ local lên s3

./s5cmd sync <source-local> s3://<s3-bucket-target>

Download dữ liệu từ Simple Storage về local

./s5cmd sync s3://<s3-bucket-source> <target-local>

Sync tất cả dữ liệu từ bucket này sang bucket khác

./s5cmd sync s3://<s3-bucket-source>/* s3://<s3-bucket-target>

Một số tham số hữu ích trong quá trình sử dụng

--delete: xóa file ở target nếu các file đó không xuất hiện ở source
--dry-run: chạy câu lệnh thử nghiệm, không bị ảnh hưởng tới dữ liệu thực tế