Chuyển đến nội dung chính

AWS S3 Sync: Hướng dẫn đầy đủ về Đồng bộ hóa Tệp

Học cách đồng bộ tệp cục bộ với Amazon S3 bằng AWS CLI. Hướng dẫn thực hành này dẫn bạn qua cài đặt, thao tác cơ bản, tùy chọn nâng cao và chiến lược sao lưu để làm chủ đồng bộ hóa tệp giữa môi trường cục bộ và đám mây AWS.
· 15 phút đọc

Khám phá cùng AI

Quản lý đồng bộ hóa tệp giữa hệ thống cục bộ và lưu trữ đám mây không nên là một cơn đau đầu.

AWS S3 cung cấp một công cụ dòng lệnh tiện lợi giúp đơn giản hóa việc giữ cho các tệp của bạn đồng bộ giữa môi trường cục bộ và S3 (Simple Storage Service) của Amazon. Công cụ này đặc biệt hữu ích cho nhà phát triển, quản trị hệ thống, và bất kỳ ai cần duy trì phiên bản tệp nhất quán ở nhiều nơi. Chỉ với vài lệnh, bạn có thể truyền tệp hiệu quả, tạo bản sao lưu và triển khai giải pháp khôi phục sau thảm họa.

AWS Command Line Interface (CLI) khiến các thao tác này trở nên dễ tiếp cận với nhiều người dùng. Dĩ nhiên, nó không tiện như Google Drive hay OneDrive, nhưng cũng có vài “tuyệt chiêu” riêng.

Trong hướng dẫn này, tôi sẽ trình bày mọi thứ bạn cần biết về AWS S3 sync, từ thiết lập cơ bản đến các mẫu sử dụng nâng cao.

>Chính xác thì S3 là gì? Hãy học các kiến thức nền tảng với hướng dẫn về S3 của chúng tôi.

AWS S3 Sync là gì?

AWS S3 sync là một công cụ dòng lệnh mạnh mẽ đi kèm với bộ công cụ AWS CLI. Nó được thiết kế để đồng bộ hóa tệp giữa hệ thống tệp cục bộ của bạn và một S3 bucket trong thời gian ngắn.

Hãy nghĩ về S3 sync như rsync cho đám mây. Lệnh này phân tích cả vị trí nguồn và đích, xác định khác biệt, rồi chỉ truyền những gì cần thiết để chúng khớp nhau. Cách tiếp cận này tiết kiệm băng thông, thời gian và chi phí so với các phương thức truyền tệp ngây ngô.

Bên dưới, S3 sync thực hiện các cuộc gọi API để so sánh siêu dữ liệu đối tượng như kích thước tệp và dấu thời gian chỉnh sửa. Khi phát hiện khác biệt, nó đảm nhận việc tải lên hoặc tải xuống tệp tương ứng.

Điều tuyệt vời của S3 sync nằm ở sự đơn giản. Một lệnh cơ bản sẽ trông như sau:

aws s3 sync /local/directory s3://my-bucket/path

Dĩ nhiên, bạn sẽ phải thiết lập CLI để dùng các lệnh aws, nhưng bạn hiểu ý rồi đấy – dùng cực kỳ đơn giản.

Tóm lại, S3 sync che giấu những thao tác phức tạp phía sau và mang đến cho bạn cách dễ dàng để duy trì trạng thái tệp nhất quán giữa các môi trường. Dù bạn đang sao lưu dữ liệu quan trọng, triển khai tài sản web, hay quản lý bộ dữ liệu lớn – S3 sync sẽ làm hết phần nặng nhọc cho bạn.

Thiết lập AWS CLI và AWS S3

Trước khi bắt đầu đồng bộ tệp với S3, bạn sẽ cần cài đặt và cấu hình AWS CLI đúng cách. Nghe có vẻ đáng ngại nếu bạn mới dùng AWS, nhưng chỉ mất vài phút thôi.

Thiết lập CLI gồm hai bước chính: cài đặt công cụ và cấu hình. Tôi sẽ đi qua cả hai ngay sau đây.

Cài đặt AWS CLI

Cách cài đặt AWS CLI có khác đôi chút tùy hệ điều hành.

Với hệ thống Windows:

Với hệ thống Linux:

Chạy ba lệnh sau trong Terminal:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Với hệ thống macOS:

Giả sử bạn đã cài Homebrew, hãy chạy một dòng này trong Terminal:

brew install awscli

Nếu bạn chưa có Homebrew, hãy dùng hai lệnh sau:

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /

Bạn có thể chạy lệnh aws --version trên mọi hệ điều hành để xác minh AWS CLI đã được cài. Bạn sẽ thấy như sau:

Phiên bản AWS CLI

Hình 1 - Phiên bản AWS CLI

Cấu hình AWS CLI

Giờ bạn đã cài CLI, cần cấu hình nó với thông tin xác thực AWS của bạn.

Giả sử bạn đã có tài khoản AWS, đăng nhập và vào dịch vụ IAM. Tại đó, tạo người dùng mới với quyền truy cập theo chương trình (programmatic access). Bạn nên gán quyền phù hợp cho người dùng, tối thiểu là quyền truy cập S3:

Người dùng AWS IAM

Hình 2 - Người dùng AWS IAM

Xong bước đó, vào "Security credentials" để tạo khóa truy cập mới. Sau khi tạo, bạn sẽ có cả Access key ID và Secret access key. Hãy lưu chúng ở nơi an toàn vì bạn sẽ không thể truy cập lại sau này:

Thông tin xác thực người dùng AWS IAM

Hình 3 - Thông tin xác thực người dùng AWS IAM

Quay lại Terminal, chạy lệnh aws configure. Lệnh sẽ yêu cầu bạn nhập Access key ID, Secret access key, vùng (eu-central-1 trong trường hợp của tôi), và định dạng đầu ra ưa thích (json):

Cấu hình AWS CLI

Hình 4 - Cấu hình AWS CLI

Để xác minh bạn đã kết nối thành công tới tài khoản AWS từ CLI, hãy chạy lệnh sau:

aws sts get-caller-identity

Đây là đầu ra bạn nên thấy:

Lệnh kiểm tra kết nối AWS CLI

Hình 5 - Lệnh kiểm tra kết nối AWS CLI

Vậy là xong - chỉ còn một bước nữa trước khi bạn có thể dùng lệnh S3 sync!

Tạo S3 bucket trên AWS

Bước cuối là tạo một S3 bucket để lưu các tệp được đồng bộ. Bạn có thể làm điều này từ CLI hoặc từ AWS Management Console. Tôi sẽ chọn cách sau cho đa dạng.

Đầu tiên, vào trang dịch vụ S3 trong Management Console và nhấp nút "Create bucket". Tại đó, chọn tên bucket duy nhất (duy nhất trên toàn bộ AWS), rồi cuộn xuống cuối và nhấp nút "Create":

Tạo AWS bucket

Hình 6 - Tạo AWS bucket

Bucket đã được tạo, bạn sẽ thấy ngay trong console quản trị. Bạn cũng có thể xác minh qua CLI:

aws s3 ls

Tất cả S3 bucket hiện có

Hình 7 - Tất cả S3 bucket hiện có

Lưu ý rằng S3 bucket mặc định là riêng tư. Nếu bạn định dùng bucket để lưu tệp công khai (như tài nguyên website), bạn sẽ cần điều chỉnh chính sách và quyền của bucket tương ứng.

Giờ thì bạn đã sẵn sàng để bắt đầu đồng bộ hóa tệp giữa máy cục bộ và AWS S3!

Lệnh AWS S3 Sync cơ bản

Giờ bạn đã cài đặt, cấu hình AWS CLI và có sẵn một S3 bucket, đã đến lúc bắt đầu đồng bộ! Cú pháp cơ bản cho lệnh AWS S3 sync khá thẳng thắn. Tôi sẽ minh họa cách hoạt động.

Lệnh S3 sync tuân theo mẫu đơn giản này:

aws s3 sync <source> <destination> [options]

Cả nguồn và đích có thể là đường dẫn thư mục cục bộ hoặc S3 URI (bắt đầu bằng s3://). Tùy chiều đồng bộ bạn muốn, bạn sẽ sắp xếp chúng khác nhau.

Đồng bộ tệp từ máy cục bộ lên S3 bucket

Gần đây tôi có thử nghiên cứu sâu với Ollama. Giả sử đó là thư mục tôi muốn đồng bộ lên S3. Thư mục chính nằm dưới thư mục Documents. Nhìn nó như sau:

Nội dung thư mục cục bộ

Nội dung thư mục cục bộ

Đây là lệnh tôi cần chạy để đồng bộ thư mục cục bộ code-files với thư mục backup trên S3 bucket:

aws s3 sync /Users/dradecic/Documents/code-files s3://testbucket-dradecic/backup

Thư mục backup trên S3 bucket sẽ tự động được tạo nếu chưa tồn tại.

Bạn sẽ thấy in ra trên console như sau:

Quy trình S3 sync

Hình 9 - Quy trình S3 sync

Sau vài giây, nội dung của thư mục cục bộ code-files đã có trên S3 bucket:

Nội dung S3 bucket

Hình 10 - Nội dung S3 bucket

Điểm hay của S3 sync là chỉ tải lên các tệp chưa có ở đích hoặc đã được chỉnh sửa cục bộ. Nếu bạn chạy lại cùng lệnh mà không thay đổi gì, bạn sẽ thấy... không có gì! Vì AWS CLI phát hiện tất cả tệp đã đồng bộ và cập nhật.

Giờ tôi sẽ thực hiện hai thay đổi nhỏ - tạo tệp mới (new_file.txt) và cập nhật một tệp hiện có (requirements.txt). Khi bạn chạy lại lệnh sync, chỉ các tệp mới hoặc đã chỉnh sửa sẽ được tải lên:

Quy trình S3 sync (2)

Hình 11 - Quy trình S3 sync (2)

Và đó là tất cả những gì bạn cần biết khi đồng bộ thư mục cục bộ lên S3. Nhưng nếu bạn muốn làm theo chiều ngược lại thì sao?

Đồng bộ tệp từ S3 bucket về thư mục cục bộ

Nếu bạn muốn tải tệp từ S3 bucket về máy cục bộ, chỉ cần đảo chiều nguồn và đích:

aws s3 sync s3://testbucket-dradecic/backup /Users/dradecic/Documents/code-files-from-s3 

Lệnh này sẽ tải tất cả tệp từ thư mục backup trong S3 bucket về thư mục cục bộ tên code-files-from-s3 . Một lần nữa, nếu thư mục cục bộ chưa tồn tại, CLI sẽ tạo giúp bạn:

Đồng bộ từ S3 về cục bộ

Hình 12 - Đồng bộ từ S3 về cục bộ

Đáng lưu ý là S3 sync không hoạt động hai chiều. Lúc nào nó cũng đi từ nguồn đến đích, khiến đích khớp với nguồn. Nếu bạn xóa một tệp cục bộ rồi đồng bộ lên S3, tệp đó vẫn sẽ tồn tại trên S3. Tương tự, nếu bạn xóa tệp trên S3 rồi đồng bộ từ S3 về cục bộ, tệp cục bộ vẫn không bị động tới.

Nếu bạn muốn đích khớp hoàn toàn với nguồn (bao gồm cả xóa tệp), bạn sẽ cần dùng cờ --delete, tôi sẽ trình bày ở phần tùy chọn nâng cao.

Các tùy chọn nâng cao của AWS S3 Sync

Lệnh S3 sync cơ bản ở phần trước đã đủ mạnh, nhưng AWS còn tích hợp thêm nhiều tùy chọn để bạn kiểm soát tốt hơn quá trình đồng bộ hóa. 

Trong phần này, tôi sẽ giới thiệu một số cờ hữu ích nhất bạn có thể thêm vào lệnh cơ bản.

Chỉ đồng bộ tệp mới hoặc đã sửa đổi

Mặc định, S3 sync dùng cơ chế so sánh cơ bản kiểm tra kích thước tệp và thời gian chỉnh sửa để quyết định có cần đồng bộ hay không. Tuy nhiên, cách này không phải lúc nào cũng bắt được mọi thay đổi, đặc biệt khi tệp đã chỉnh sửa nhưng kích thước không đổi.

Để đồng bộ chính xác hơn, bạn có thể dùng cờ --exact-timestamps:

aws s3 sync /Users/dradecic/Documents/code-files s3://testbucket-dradecic/backup --exact-timestamps

Cờ này buộc S3 sync so sánh dấu thời gian với độ chính xác tới mili giây. Lưu ý dùng cờ này có thể làm chậm quá trình đồng bộ đôi chút do cần so sánh chi tiết hơn.

Loại trừ hoặc chỉ bao gồm tệp cụ thể

Đôi khi bạn không muốn đồng bộ mọi tệp trong một thư mục. Có thể bạn muốn loại trừ tệp tạm, log, hoặc một số loại tệp (như .DS_Store trong trường hợp của tôi). Khi đó, cờ --exclude và --include sẽ rất hữu ích.

Để minh họa, giả sử tôi muốn đồng bộ thư mục mã nhưng loại trừ toàn bộ tệp Python:

aws s3 sync /Users/dradecic/Documents/code-files s3://testbucket-dradecic/backup --exclude "*.py"

Giờ chỉ còn rất ít tệp được đồng bộ lên S3:

S3 sync loại trừ tệp Python

Hình 13 - S3 sync loại trừ tệp Python

Bạn cũng có thể kết hợp --exclude và --include để tạo mẫu phức tạp hơn. Ví dụ, loại trừ mọi thứ ngoại trừ tệp Python:

aws s3 sync /Users/dradecic/Documents/code-files s3://testbucket-dradecic/backup --exclude "*" --include "*.py"

Các mẫu được đánh giá theo đúng thứ tự bạn chỉ định, nên thứ tự là quan trọng! Đây là những gì bạn sẽ thấy khi dùng các cờ này:

Cờ exclude và include

Hình 14 - Cờ exclude và include

Giờ chỉ các tệp Python được đồng bộ, và những tệp cấu hình quan trọng thì thiếu.

Xóa tệp ở phía đích

Mặc định, S3 sync chỉ thêm hoặc cập nhật tệp ở đích — không bao giờ xóa. Điều này có nghĩa nếu bạn xóa tệp khỏi nguồn, nó vẫn còn ở đích sau khi đồng bộ.

Để khiến đích phản chiếu chính xác nguồn, bao gồm cả việc xóa, hãy dùng cờ --delete:

aws s3 sync /Users/dradecic/Documents/code-files s3://testbucket-dradecic/backup --delete

Nếu chạy lần đầu, tất cả tệp cục bộ sẽ được đồng bộ lên S3:

Cờ delete

Hình 15 - Cờ delete

Điều này đặc biệt hữu ích để duy trì bản sao thư mục giống hệt. Nhưng hãy cẩn thận — cờ này có thể dẫn tới mất dữ liệu nếu dùng sai.

Giả sử tôi xóa config.py khỏi thư mục cục bộ và chạy lệnh sync với cờ --delete:

Cờ delete

Hình 16 - Cờ delete (2)

Như bạn thấy, lệnh không chỉ đồng bộ tệp mới và đã chỉnh sửa mà còn xóa các tệp trên S3 bucket không còn tồn tại trong thư mục cục bộ.

Thiết lập chạy thử (dry run) để đồng bộ an toàn

Những thao tác S3 sync nguy hiểm nhất là thao tác có cờ --delete. Để tránh vô tình xóa tệp quan trọng, bạn có thể dùng cờ --dryrun để mô phỏng thao tác mà không thực hiện thay đổi nào:

aws s3 sync /Users/dradecic/Documents/code-files s3://testbucket-dradecic/backup --delete --dryrun

Để minh họa, tôi đã xóa các tệp requirements.txt và settings.toml khỏi thư mục cục bộ rồi thực thi lệnh:

Dry run

Hình 17 - Dry run

Điều này sẽ cho bạn thấy chính xác điều gì sẽ xảy ra nếu bạn chạy lệnh thật, bao gồm tệp nào sẽ được tải lên, tải xuống hoặc xóa.

Tôi luôn khuyến nghị dùng --dryrun trước khi thực thi bất kỳ lệnh S3 sync nào có cờ --delete, đặc biệt khi làm việc với dữ liệu quan trọng.

Còn rất nhiều tùy chọn khác cho lệnh S3 sync, như --acl để đặt quyền truy cập, --storage-class để chọn tầng lưu trữ S3, và --recursive để duyệt các thư mục con. Tham khảo tài liệu chính thức của AWS CLI để xem đầy đủ danh sách tùy chọn.

Giờ khi bạn đã quen với các tùy chọn S3 sync cơ bản và nâng cao, hãy xem cách dùng các lệnh này cho các tình huống thực tế như sao lưu và khôi phục.

Sử dụng AWS S3 Sync để Sao lưu và Khôi phục

Một trong những trường hợp sử dụng phổ biến nhất của AWS S3 sync là sao lưu tệp quan trọng và khôi phục khi cần. Hãy khám phá cách bạn có thể triển khai chiến lược sao lưu và khôi phục đơn giản bằng lệnh sync.

Tạo bản sao lưu lên S3

Tạo bản sao lưu với S3 sync rất đơn giản — bạn chỉ cần chạy lệnh sync từ thư mục cục bộ lên S3 bucket. Tuy nhiên, có vài thực hành tốt nên theo để sao lưu hiệu quả.

Đầu tiên, bạn nên tổ chức bản sao lưu theo ngày hoặc phiên bản. Đây là cách đơn giản bằng cách dùng dấu thời gian trong đường dẫn S3:

# Tạo biến timestamp
TIMESTAMP=$(date +%Y-%m-%d-%H-%M-%S)

# Chạy sao lưu
aws s3 sync /Users/dradecic/Documents/code-files s3://testbucket-dradecic/backups/$TIMESTAMP

Cách này tạo một thư mục mới cho mỗi lần sao lưu với timestamp như 2025-03-10-18-56-42. Trên S3 sẽ hiển thị như sau:

Sao lưu có gắn timestamp

Hình 18 - Sao lưu có gắn timestamp

Với dữ liệu quan trọng, bạn có thể muốn giữ nhiều phiên bản sao lưu. Điều này dễ dàng bằng cách chạy sao lưu theo timestamp thường xuyên.

Bạn cũng có thể dùng tùy chọn --storage-class để chọn lớp lưu trữ tiết kiệm chi phí cho bản sao lưu:

aws s3 sync /Users/dradecic/Documents/code-files s3://testbucket-dradecic/backups/$TIMESTAMP --storage-class STANDARD_IA

Nội dung sao lưu với lớp lưu trữ tùy chỉnh

Hình 19 - Nội dung sao lưu với lớp lưu trữ tùy chỉnh

Tùy chọn này dùng lớp lưu trữ S3 Infrequent Access, chi phí thấp hơn nhưng có phí truy xuất nhẹ. Với lưu trữ dài hạn, bạn thậm chí có thể dùng lớp Glacier:

aws s3 sync /Users/dradecic/Documents/important-data s3://testbucket-dradecic/backups/$TIMESTAMP --storage-class GLACIER

Lưu ý các tệp lưu trên Glacier mất hàng giờ để truy xuất, nên không phù hợp với dữ liệu bạn cần nhanh.

Khôi phục tệp từ S3

Khôi phục từ bản sao lưu cũng dễ tương tự — chỉ cần đảo ngược nguồn và đích trong lệnh sync của bạn:

# Khôi phục từ bản sao lưu gần nhất (giả sử bạn biết timestamp)
aws s3 sync s3://testbucket-dradecic/backups/2025-03-10-18-56-42 /Users/dradecic/Documents/restored-data

Lệnh này sẽ tải toàn bộ tệp từ bản sao lưu đó về thư mục cục bộ restored-data của bạn:

Khôi phục tệp từ S3

Hình 20 - Khôi phục tệp từ S3

Nếu bạn không nhớ chính xác timestamp, bạn có thể liệt kê tất cả bản sao lưu trước:

aws s3 ls s3://testbucket-dradecic/backups/

Lệnh sẽ hiển thị như sau:

Danh sách bản sao lưu

Hình 21 - Danh sách bản sao lưu

Bạn cũng có thể khôi phục các tệp hoặc thư mục cụ thể từ một bản sao lưu bằng cách dùng các cờ exclude/include đã nói ở trên:

# Chỉ khôi phục các tệp cấu hình
aws s3 sync s3://testbucket-dradecic/backups/2025-03-10-18-56-42 /Users/dradecic/Documents/restored-configs --exclude "*" --include "*.config" --include "*.toml" --include "*.yaml"

Với các hệ thống trọng yếu, tôi khuyến nghị tự động hóa sao lưu bằng tác vụ theo lịch (cron trên Linux/macOS hoặc Task Scheduler trên Windows). Cách này đảm bảo bạn luôn sao lưu đều đặn mà không cần nhớ làm thủ công.

Khắc phục sự cố AWS S3 Sync

AWS S3 sync là công cụ ổn định, nhưng đôi khi bạn có thể gặp sự cố. Dù vậy, hầu hết lỗi bạn thấy là do con người.

Lỗi đồng bộ thường gặp

Hãy điểm qua một số vấn đề phổ biến và cách khắc phục.

  • Lỗi Access denied thường có nghĩa người dùng IAM của bạn không có quyền cần thiết để truy cập S3 bucket hoặc thực hiện thao tác. Để khắc phục, thử một trong các cách sau:
    • Kiểm tra người dùng IAM có quyền S3 phù hợp (s3:ListBucket, s3:GetObject, s3:PutObject).
    • Xác minh policy của bucket không từ chối truy cập của người dùng bạn.
    • Đảm bảo bản thân bucket không chặn truy cập công khai nếu bạn cần thao tác công khai.
  • No such file or directory thường xuất hiện khi đường dẫn nguồn bạn chỉ định trong lệnh sync không tồn tại. Cách giải quyết rất dễ — kiểm tra lại đường dẫn và đảm bảo chúng tồn tại. Đặc biệt chú ý lỗi gõ sai tên bucket hoặc thư mục cục bộ.
  • Giới hạn kích thước tệp có thể gây lỗi khi bạn muốn đồng bộ tệp lớn. Mặc định, S3 sync xử lý được tệp tới 5GB. Với tệp lớn hơn, bạn có thể gặp timeout hoặc truyền không hoàn chỉnh.
    • Với tệp lớn hơn 5GB, bạn nên dùng cờ --only-show-errors kết hợp --size-only. Kết hợp này giúp truyền tệp lớn tốt hơn bằng cách giảm lượng xuất và chỉ so sánh kích thước tệp:
aws s3 sync /Users/dradecic/large-files s3://testbucket-dradecic/large-files --only-show-errors --size-only

Tối ưu hiệu năng đồng bộ

Nếu S3 sync chạy chậm hơn kỳ vọng, có vài tinh chỉnh bạn có thể làm để tăng tốc.

  • Dùng truyền song song. Mặc định, S3 sync chỉ dùng số lượng thao tác song song hạn chế. Bạn có thể tăng với tham số --max-concurrent-requests:
aws s3 sync /Users/dradecic/Documents/code-files s3://testbucket-dradecic/backup --max-concurrent-requests 20
  • Điều chỉnh kích thước phần (chunk). Với tệp lớn, bạn có thể tối ưu tốc độ truyền bằng cách điều chỉnh kích thước phần. Cách này chia nhỏ tệp lớn thành các phần 16MB thay vì mặc định 8MB, có thể nhanh hơn khi kết nối mạng tốt:
aws s3 sync /Users/dradecic/large-files s3://testbucket-dradecic/backup --cli-read-timeout 120 --multipart-threshold 64MB --multipart-chunksize 16MB
  • Dùng --no-progress cho script. Nếu bạn chạy S3 sync trong script tự động, dùng cờ --no-progress để giảm lượng hiển thị và cải thiện hiệu năng:
aws s3 sync /Users/dradecic/Documents/code-files s3://testbucket-dradecic/backup --no-progress
  • Dùng endpoint khu vực (local). Nếu tài nguyên AWS của bạn cùng khu vực, chỉ định endpoint theo vùng có thể giảm độ trễ:
aws s3 sync /Users/dradecic/Documents/code-files s3://testbucket-dradecic/backup --endpoint-url https://s3.eu-central-1.amazonaws.com

Những tối ưu này có thể cải thiện đáng kể hiệu năng đồng bộ, đặc biệt với truyền dữ liệu lớn hoặc khi chạy trên máy yếu hơn.

Nếu vẫn gặp vấn đề sau khi thử các cách trên, AWS CLI có sẵn tùy chọn gỡ lỗi. Chỉ cần thêm --debug vào lệnh để xem chi tiết những gì diễn ra trong quá trình đồng bộ:

aws s3 sync /Users/dradecic/Documents/code-files s3://testbucket-dradecic/backup --debug

Hãy kỳ vọng sẽ thấy rất nhiều thông điệp log chi tiết, tương tự như sau:

Chạy sync ở chế độ debug

Hình 22 - Chạy sync ở chế độ debug

Và đó gần như là tất cả về việc khắc phục sự cố AWS S3 sync. Vẫn có những lỗi khác có thể xảy ra, nhưng 99% thời gian bạn sẽ tìm được lời giải trong phần này.

Tổng kết về AWS S3 Sync

Tóm lại, AWS S3 sync là một trong số ít công cụ vừa đơn giản để sử dụng lại cực kỳ mạnh mẽ. Bạn đã học từ lệnh cơ bản đến tùy chọn nâng cao, chiến lược sao lưu và mẹo khắc phục sự cố.

Với nhà phát triển, quản trị hệ thống, hoặc bất kỳ ai làm việc với AWS, lệnh S3 sync là công cụ thiết yếu — tiết kiệm thời gian, giảm băng thông sử dụng và đảm bảo tệp của bạn ở đúng nơi, đúng lúc.

Dù bạn đang sao lưu dữ liệu quan trọng, triển khai tài nguyên web, hay chỉ giữ cho các môi trường khác nhau đồng bộ, AWS S3 sync khiến quá trình trở nên đơn giản và đáng tin cậy.

Cách tốt nhất để làm quen với S3 sync là bắt đầu sử dụng. Hãy thử thiết lập một thao tác đồng bộ đơn giản với chính tệp của bạn, rồi dần khám phá các tùy chọn nâng cao để phù hợp nhu cầu cụ thể.

Luôn nhớ dùng --dryrun trước khi làm việc với dữ liệu quan trọng, đặc biệt khi dùng cờ --delete. Tốt hơn là dành thêm một phút để xác minh hơn là vô tình xóa tệp quan trọng.

Để tìm hiểu thêm về AWS, hãy xem các khóa học sau của DataCamp:

Bạn thậm chí có thể dùng DataCamp để chuẩn bị cho kỳ thi chứng chỉ AWS - AWS Cloud Practitioner (CLF-C02).

Câu hỏi thường gặp

AWS S3 sync là gì và hoạt động như thế nào?

AWS S3 sync là công cụ dòng lệnh đi kèm AWS CLI, được thiết kế để đồng bộ hóa tệp giữa hệ thống cục bộ và S3 bucket của Amazon. Nó hoạt động bằng cách so sánh tệp ở vị trí nguồn và đích, xác định khác biệt, rồi chỉ truyền những gì cần thiết để chúng khớp nhau, giúp tiết kiệm băng thông và thời gian so với việc tải lên hoặc tải xuống toàn bộ.

Tôi có thể đồng bộ tệp cả lên và từ S3 bucket không?

Có, AWS S3 sync hoạt động hai chiều. Bạn có thể đồng bộ tệp cục bộ lên S3 bucket bằng aws s3 sync /local/directory s3://my-bucket/path hoặc đồng bộ tệp từ S3 bucket về hệ thống cục bộ bằng aws s3 sync s3://my-bucket/path /local/directory. Lệnh luôn khiến đích khớp với nguồn.

AWS S3 sync có tự động xóa tệp không?

Mặc định, S3 sync không xóa các tệp ở đích nếu chúng không tồn tại ở nguồn. Tuy nhiên, bạn có thể thêm cờ --delete vào lệnh sync để khiến đích phản chiếu chính xác nguồn, bao gồm cả xóa. Hãy dùng tính năng này cẩn trọng và cân nhắc kiểm tra trước với cờ --dryrun.

Làm sao tối ưu AWS S3 sync cho tệp lớn?

Với tệp lớn, bạn có thể tối ưu hiệu năng S3 sync bằng nhiều tham số, gồm --max-concurrent-requests để tăng truyền song song, --multipart-chunksize để điều chỉnh kích thước phần, và --cli-read-timeout để tránh timeout. Với tệp trên 5GB, kết hợp cờ --only-show-errors và --size-only để đạt hiệu năng tốt hơn.

Tôi có thể tự động hóa sao lưu bằng AWS S3 sync không?

Có, AWS S3 sync rất phù hợp để tạo sao lưu tự động. Bạn có thể thiết lập tác vụ theo lịch (cron trên Linux/macOS hoặc Task Scheduler trên Windows) để chạy lệnh sync thường xuyên với timestamp trong đường dẫn đích. Với lưu trữ dài hạn tiết kiệm chi phí, dùng tham số --storage-class để chọn lớp như STANDARD_IA hoặc GLACIER.

Dario Radečić

Tác giả

Dario Radečić

Chuyên gia Khoa học Dữ liệu Cấp cao, làm việc tại Croatia. Tác giả Công nghệ Hàng đầu với hơn 700 bài viết đã xuất bản, đạt trên 10 triệu lượt xem. Tác giả cuốn sách Tự động hóa Machine Learning với TPOT.

Chủ đề

Liên quan