2015-06-02 33 views
9

aws s3 sync --delete đã xóa một số tệp mới.Đồng bộ hóa AWS S3 - xóa, xóa các tệp mới trong các địa chỉ

Ví dụ:

Có một tập tin trong xô - S3://my-bucket/images/1.jpg

Sau đó, Tôi đã tải lên một tập tin đến máy chủ: 2.jpg

Có 2 file trong server: 1.jpg2.jpg

Bắt đầu chạy đồng bộ hóa cronjob:

aws s3 sync s3://my-bucket/ ./ --delete 
aws s3 sync ./ s3://my-bucket/ --delete 

Tại sao chúng tôi thêm --delete - chúng tôi muốn xóa tệp trong s3 và đồng bộ hóa tệp với máy chủ.

Chúng tôi sẽ tải tệp lên máy chủ và xóa tệp trong s3.

Có cách nào để khắc phục sự cố không?

Trả lời

13

Theo mặc định, lệnh aws sync không xóa tệp. Nó chỉ đơn giản là sao chép các tập tin mới hoặc sửa đổi đến đích.

Sử dụng tùy chọn --delete xóa các tệp tồn tại ở đích nhưng không có trong nguồn.

Vì vậy, nếu nguồn của bạn có chứa: 1.jpg2.jpg và điểm đến chứa 1.jpg, 2.jpg3.jpg, sau đó sử dụng các tùy chọn --delete sẽ xóa 3.jpg từ đích.

Tôi thấy rằng bạn đang chạy lệnh sync theo cả hai hướng. Lệnh đầu tiên của bạn (đồng bộ S3 với một thư mục cục bộ) sẽ xóa bất kỳ tệp cục bộ nào không có trong S3.

Nếu mục tiêu của bạn là sao chép tất cả tệp cục bộ sang S3 và tất cả tệp S3 vào thư mục cục bộ mà không xóa bất kỳ tệp nào, thì không sử dụng tùy chọn --delete.

+0

Xin chào, Mục tiêu của tôi là xóa một số tệp cũ trong nhóm s3, sau đó tôi chạy lệnh đó bằng --delete và tôi cũng muốn xóa tệp cục bộ của mình. Và sau đó tôi có thể tải lên một số tập tin mới từ địa phương đến s3 với lệnh aws s3 sync. Có thể làm điều đó không? –

+2

Có, bạn có thể làm điều đó. Chỉ cần lưu ý rằng '--delete' sẽ xóa các tệp ở đích không có trong nguồn. Vì vậy, chỉ sử dụng nó từ vị trí "chính". Nó sẽ không xóa các tệp khỏi vị trí "cục bộ" (nguồn). Chỉ cần chơi xung quanh với thứ tự mà bạn chạy các lệnh để có được hành vi mong muốn. –

Các vấn đề liên quan