Các nguyên tắc cơ bản về bảo vệ dữ liệu: Cách sao lưu một bucket Amazon S3
Amazon S3 là dịch vụ lưu trữ đám mây đáng tin cậy do Amazon Web Services (AWS) cung cấp. Các tệp được lưu trữ dưới dạng các đối tượng (objects) trong các bucket Amazon S3. Dịch vụ lưu trữ này được sử dụng rộng rãi để lưu trữ bản sao lưu dữ liệu nhờ độ tin cậy cao của Amazon S3. Khác với Amazon Elastic Block Storage (EBS), nơi dữ liệu dự phòng được lưu trữ trong một vùng sẵn sàng (availability zone), trong Amazon S3, dữ liệu dự phòng được phân tán trên nhiều vùng sẵn sàng.
Nếu một trung tâm dữ liệu trong một vùng không khả dụng, bạn vẫn có thể truy cập dữ liệu ở vùng khác. Trong một số trường hợp, bạn có thể cần sao lưu dữ liệu được lưu trữ trong các bucket Amazon S3 để tránh mất dữ liệu do lỗi của con người hoặc sự cố phần mềm. Dữ liệu có thể bị xóa hoặc hỏng nếu người dùng có quyền truy cập vào bucket S3 xóa dữ liệu hoặc làm hỏng dữ liệu bằng cách ghi các thay đổi không mong muốn. Sự cố phần mềm cũng có thể gây ra hậu quả tương tự.
Phiên bản Amazon S3
Quản lý phiên bản đối tượng là một tính năng hiệu quả trong Amazon S3 bảo vệ dữ liệu trong một bucket khỏi hư hỏng, ghi chép thay đổi không mong muốn và xóa dữ liệu. Khi có sự thay đổi với một tệp (được lưu dưới dạng đối tượng trong S3), thì một phiên bản mới của đối tượng được tạo ra. Nhiều phiên bản của cùng một đối tượng được lưu trữ trong một bucket. Bạn có thể truy cập và khôi phục các phiên bản trước của đối tượng. Nếu đối tượng bị xóa, thì ‘dấu xác nhận xóa’ được áp dụng cho đối tượng, nhưng bạn có thể hoàn tác hành động này và mở phiên bản trước của đối tượng trước khi xóa. Quản lý phiên bản của Amazon S3 có thể được sử dụng mà không cần phần mềm sao lưu S3 bổ sung.
Bạn có thể sử dụng chính sách vòng đời để xác định thời gian các phiên bản nên được lưu trữ trong một bucket S3 để có một dạng sao lưu Amazon S3. Chi phí bổ sung cho việc lưu trữ thêm các phiên bản không đáng kể nếu bạn cấu hình chính sách vòng đời một cách hợp lý, và các phiên bản mới sẽ thay thế các phiên bản cũ nhất. Các phiên bản cũ có thể được xóa hoặc di chuyển đến nơi lưu trữ chi phí thấp hơn (ví dụ, lưu trữ lạnh) để tối ưu chi phí.
Cách kích hoạt quản lý phiên bản AWS S3
Đăng nhập vào AWS Management Console bằng tài khoản có đủ quyền hạn. Nhấp vào Services và sau đó chọn S3 trong danh mục Lưu trữ .
Trong ngăn điều hướng, nhấn Buckets và chọn bucket S3 cần kích hoạt quản lý phiên bản. Trong ví dụ này, tôi chọn bucket với tên blog-bucket01 . Nhấp vào tên bucket để mở chi tiết bucket.
Mở tab Properties cho bucket đã chọn.
Trong phần Quản lý Phiên bản Bucket , nhấn vào Edit.
Quản lý phiên bản của bucket được vô hiệu hóa mặc định.
Nhấn Enable để bật quản lý phiên bản bucket.
Nhấn Save Changes.
Một mẹo được hiển thị rằng bạn có thể cần phải cập nhật quy tắc vòng đời của mình. Đây là bước tiếp theo.
Thông báo được hiển thị ở đầu trang nếu các thay đổi cấu hình đã được áp dụng: Đã sửa đổi quản lý phiên bản bucket thành công .
Quy tắc vòng đời
Để cấu hình quy tắc vòng đời cho quản lý phiên bản Amazon S3, hãy đi đến tab Management trên trang của bucket đã chọn. Trong phần Quy tắc vòng đời , nhấn Create lifecycle rule.
Trang Tạo Quy tắc Vòng đời được mở.
Lifecycle Rule configuration. Nhập tên quy tắc vòng đời, ví dụ: Vòng đời Blog 01 .
Chọn phạm vi quy tắc. Bạn có thể áp dụng các bộ lọc để áp dụng quy tắc vòng đời cho các đối tượng cụ thể hoặc áp dụng quy tắc cho tất cả các đối tượng trong bucket. Xác định các thẻ đối tượng để chỉ định các đối tượng cần áp dụng các hành động trong vòng đời. Nhập khóa và giá trị vào các trường tương ứng, sau đó nhấp vào nút “ Add tag ” để thêm thẻ hoặc nút “ Remove ” để xóa thẻ.
Lifecycle rule actions. Chọn các hành động mà quy tắc này sẽ thực hiện:
- Chuyển đổi các phiên bản hiện tại của đối tượng giữa các lớp lưu trữ
- Chuyển đổi các phiên bản trước đó của đối tượng giữa các lớp lưu trữ
- Hết hạn các phiên bản hiện tại của đối tượng
- Xóa vĩnh viễn các phiên bản trước đó của đối tượng
- Xóa các dấu hiệu xóa đã hết hạn hoặc các tệp tải lên nhiều phần chưa hoàn tất
Transition noncurrent versions of objects between storage classes.
Chọn các chuyển đổi lớp lưu trữ và số ngày sau đó các đối tượng sẽ trở thành không còn hiện tại.
Trong ví dụ của tôi, các đối tượng được chuyển từ lớp lưu trữ S3 hiện tại sang Standard-IA sau 35 ngày.
Permanently delete previous versions of objects.
Nhập số ngày sau đó các phiên bản trước phải bị xóa. Giá trị này phải lớn hơn số ngày sau đó các đối tượng trở thành không còn hiện hành. Trong ví dụ của tôi, các đối tượng sẽ bị xóa vĩnh viễn sau 40 ngày.
Nhấp vào Create Rule để tạo quy tắc vòng đời.
Sao chép thùng chứa
Thay vì sử dụng tính năng sao lưu tự động của Amazon S3, bạn có thể sao chép thùng chứa sang các vùng khác. Bạn cần tạo một thùng chứa thứ hai làm thùng chứa đích ở một vùng khác và tạo quy tắc sao chép. Sau khi tạo quy tắc sao chép, tất cả các thay đổi được thực hiện trong thùng chứa nguồn sẽ tự động được phản ánh trong thùng chứa đích.
Tìm phần Replication rules trong tab Quản lý của thùng chứa nguồn tại và nhấp vào Create replication rule.
Trang Tạo quy tắc sao chép sẽ mở ra.
Nhập tên quy tắc sao chép, ví dụ: Sao chép bucket S3 blog .
Xác định trạng thái của quy tắc khi quy tắc được tạo (enabled hoặc disabled).
Bucket nguồn. Bucket nguồn đã được chọn sẵn ( blog-bucket01 ).
Chọn phạm vi áp dụng của quy tắc. Bạn có thể áp dụng quy tắc sao chép cho tất cả các đối tượng trong bucket hoặc cấu hình bộ lọc và áp dụng quy tắc cho các đối tượng tùy chỉnh.
Đích đến. Nhập tên bucket đích hoặc nhấp vào Browse S3 và chọn một bucket từ danh sách. Bạn có thể chọn một bucket trong tài khoản này hoặc trong một tài khoản khác. Nếu tính năng phiên bản AWS S3 được bật cho bucket nguồn, thì tính năng phiên bản đối tượng cũng phải được bật cho bucket đích. Vùng đích sẽ được hiển thị cho bucket đích đã chọn. 
Cấu hình vai trò quản lý danh tính và truy cập (IAM), sau đó chọn lớp lưu trữ và các tùy chọn sao chép bổ sung. Nhấn vào Save để lưu cấu hình và tạo quy tắc sao chép cho bucket.
Sao lưu AWS S3 trong CLI
AWS CLI là giao diện dòng lệnh mạnh mẽ để làm việc với các dịch vụ khác nhau của Amazon, bao gồm Amazon S3. Có lệnh đồng bộ hữu ích cho phép bạn sao lưu các bucket Amazon S3 vào máy Linux bằng cách sao chép các tệp từ bucket vào thư mục địa phương trong Linux chạy trên một instance EC2.
Một tính năng của lệnh đồng bộ trong AWS CLI là các tệp trong hệ thống tệp địa phương (điểm đến sao lưu Amazon S3) không bị xóa nếu các tệp này không có trong bucket S3 nguồn và ngược lại. Điều này quan trọng cho sao lưu AWS S3 vì nếu một số tệp vô tình bị xóa trong bucket S3, các tệp còn lại không bị xóa trong thư mục địa phương của máy Linux sau khi đồng bộ hóa.
Lợi ích:
- Hỗ trợ các bucket S3 lớn và khả năng mở rộng
- Hỗ trợ nhiều luồng trong quá trình đồng bộ hóa
- Khả năng đồng bộ hóa chỉ các tệp mới và đã cập nhật
- Tốc độ đồng bộ hóa cao nhờ thuật toán thông minh
Nhược điểm:
- Linux chạy trên instance EC2 tiêu thụ không gian lưu trữ của các volume EBS. Chi phí lưu trữ cho các volume EBS cao hơn so với các bucket S3.
Các lệnh cho máy chủ Ubuntu được sử dụng trong hướng dẫn này.
Trước tiên, bạn cần cài đặt AWS CLI.
Cập nhật cây kho lưu trữ:
sudo apt-get update
Cài đặt AWS CLI:
sudo apt install awscli
hoặc
Cài đặt unzip:
sudo apt install unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscli-exe-linux-x86_64.zip
sudo ./aws/install
Kiểm tra thông tin xác thực của AWS trong Linux chạy trên instance EC2 của bạn.
aws configure list
Thêm thông tin xác thực để truy cập AWS với AWS CLI từ instance Linux nếu thông tin xác thực chưa được thiết lập:
aws configure
Nhập các thông số sau:
ID Khoá Truy Cập AWS
Khoá Truy Cập Bí Mật AWS
Tên khu vực mặc định
Định dạng đầu ra mặc định
Tạo thư mục để lưu trữ sao lưu Amazon S3 của bạn. Trong ví dụ của tôi, tôi tạo thư mục ~/s3/ để lưu trữ sao lưu S3 và một thư mục con với tên giống với tên bucket. Các tệp được lưu trữ trong bucket S3 cần được sao chép vào thư mục địa phương này trên máy Linux. ~ là thư mục cá nhân của người dùng, trong trường hợp của tôi là /home/ubuntu .
mkdir -p ~/s3/your_bucket_name
Thay thế your_bucket_name bằng tên bucket của bạn ( blog-bucket01 trong ví dụ của chúng tôi). mkdir -p ~/s3/blog-bucket01
Đồng bộ hóa nội dung của bucket với thư mục cục bộ trên máy chủ EC2 chạy hệ điều hành Linux:
aws s3 sync s3:// blog-bucket01 /home/ubuntu/s3/ blog-bucket01/
Nếu cấu hình thông tin đăng nhập, tên bucket và đường dẫn đích chính xác, dữ liệu sẽ bắt đầu được tải xuống từ bucket S3. Thời gian cần thiết để hoàn tất thao tác này phụ thuộc vào kích thước của các tệp trong bucket và tốc độ kết nối Internet của bạn.
Sao lưu tự động Amazon S3
Bạn có thể cấu hình các tác vụ sao lưu tự động Amazon S3 bằng lệnh sync của AWS CLI. Tạo tệp kịch bản sync.sh để chạy sao lưu AWS S3 (đồng bộ hóa tệp từ bucket S3 sang thư mục cục bộ trên máy chủ Linux của bạn) và sau đó chạy kịch bản này theo lịch trình.
nano /home/ubuntu/s3/sync.sh
#!/bin/sh
# Display the current date and time
echo '-----------------------------'
date
echo '-----------------------------'
echo ''
# Display the script initialization message
echo 'Syncing remote S3 bucket...'
# Running the sync command
/usr/bin/aws s3 sync s3://{BUCKET_NAME} /home/ubuntu/s3/{BUCKET_NAME}/
# Echo "Script execution is completed"
echo 'Sync complete'
Thay thế {BUCKET_NAME} bằng tên bucket S3 mà bạn muốn sao lưu.
Đường dẫn đầy đủ đến aws (tệp nhị phân AWS CLI) được định nghĩa để crontab thực thi ứng dụng aws một cách chính xác trong môi trường shell mà crontab sử dụng.
Đặt quyền thực thi cho tập lệnh:
sudo chmod +x /home/ubuntu/s3/sync.sh
Chạy tập lệnh để kiểm tra xem tập lệnh có hoạt động không:
/home/ubuntu/s3/sync.sh
Chỉnh sửa crontab (trình lập lịch trong Linux) của người dùng hiện tại để lên lịch thực thi tập lệnh sao lưu Amazon S3.
crontab -e
Bạn có thể cần chọn một trình soạn thảo văn bản để chỉnh sửa cấu hình crontab.
Định dạng của crontab để lên lịch tác vụ như sau:
m h dom mon dow command
Trong đó: m – phút; h – giờ; dom – ngày trong tháng; dow – ngày trong tuần.
Hãy thêm một dòng cấu hình để tác vụ chạy đồng bộ hóa mỗi giờ và lưu kết quả sao lưu AWS S3 vào tệp nhật ký. Thêm dòng này vào cuối tệp cấu hình crontab.
0 * * * * /home/ubuntu/s3/sync.sh > /home/ubuntu/s3/sync.log
Sao lưu tự động Amazon S3 đã được cấu hình. Tệp nhật ký có thể được sử dụng để kiểm tra việc thực thi các tác vụ đồng bộ hóa.
Kết luận
Có nhiều phương pháp để thực hiện sao lưu Amazon S3 và hai trong số đó đã được đề cập trong bài viết này. Bạn có thể bật tính năng phiên bản đối tượng (object versioning) cho một bucket để lưu giữ các phiên bản trước của đối tượng, điều này cho phép bạn khôi phục tệp nếu có những thay đổi không mong muốn được ghi vào tệp. Sao chép Amazon S3 (Amazon S3 replication) là một công cụ tích hợp sẵn khác để tạo bản sao của các tệp được lưu trữ trong một bucket Amazon S3 dưới dạng đối tượng. Trong trường hợp này, các đối tượng sẽ được sao chép từ bucket này sang bucket khác. Bạn cũng có thể tạo bản sao lưu của một bucket Amazon S3 bằng cách sử dụng công cụ đồng bộ hóa trong AWS CLI, cho phép bạn đồng bộ hóa các tệp trong bucket với một thư mục cục bộ trên máy Linux đang chạy trên một instance EC2. Có thể lên lịch sao lưu tự động Amazon S3 bằng cách sử dụng tập lệnh và crontab.
Nhìn chung, dịch vụ lưu trữ đám mây Amazon S3 rất đáng tin cậy và việc sao lưu lên Amazon S3 là một phương pháp phổ biến. Nếu bạn có chiến lược bảo vệ dữ liệu mã nguồn và chiến lược sao lưu AWS, bạn nên có một bản sao lưu. Trong trường hợp này, bạn nên sao lưu dữ liệu lên Amazon S3 và một vị trí đích khác. Sử dụng NAKIVO Backup & Replication để bảo vệ dữ liệu trên máy vật lý và máy ảo. NAKIVO Backup & Replication là phần mềm sao lưu ảo hóa mạnh mẽ, có thể được sử dụng để bảo vệ máy ảo (VM), cũng như các phiên bản Amazon EC2 và máy vật lý.










