2012-07-21 27 views
7

Tôi muốn đồng bộ hóa thư mục cục bộ với nhóm trong Google Cloud Storage. Tôi muốn sao chép các tệp cục bộ không tồn tại từ xa, bỏ qua các tệp đã tồn tại cả từ xa và cục bộ. Điều này có thể thực hiện điều này với GSUtil không? Tôi không thể tìm thấy tùy chọn "đồng bộ hóa" cho GSUtil hoặc "không ghi đè". Có thể viết kịch bản này không?Google Cloud Storage - GSUtil - Sao chép tệp, bỏ qua hiện tại, không ghi đè

Tôi đang sử dụng Linux (Ubuntu 12.04)?

Trả lời

9

gsutil bây giờ hỗ trợ cờ noclobber (-n) trên lệnh cp. Cập nhật gsutil của bạn lên phiên bản mới nhất (sử dụng cập nhật gsutil) và sau đó sử dụng cờ -n khi thực hiện một bản sao.

Cờ này sẽ bỏ qua các tệp đã tồn tại ở đích.

+6

CẬP NHẬT: gsutil bây giờ (tháng 5 năm 2014) hỗ trợ tùy chọn rsync. –

1

gsutil không hỗ trợ thao tác đồng bộ hóa, nhưng bạn có thể viết mã bằng gsutil ls để tìm các tệp tồn tại từ xa.

+0

bất kỳ ý tưởng nào về cách viết mã này? – ECII

4

Bạn cần phải thêm (-n) để lệnh, đề cập chính thức vào Google Cloud Platform:

-n: Không-clobber. Khi được chỉ định, các tệp hoặc đối tượng hiện có tại đích sẽ không bị ghi đè. Bất kỳ mục nào bị bỏ qua bởi tùy chọn này sẽ được báo cáo là bị bỏ qua. Tùy chọn này sẽ thực hiện một yêu cầu GET bổ sung để kiểm tra xem một mục có tồn tại hay không trước khi thử tải lên dữ liệu. Điều này sẽ tiết kiệm truyền lại dữ liệu, nhưng các yêu cầu HTTP bổ sung có thể làm cho việc chuyển đối tượng nhỏ chậm hơn và tốn kém hơn.

Ví dụ (Sử dụng đa luồng):

gsutil -m cp -n -a public-read -R large_folder gs://bucket_name 
1

Sử dụng rsync, bạn có thể sao chép mất tích/sửa đổi file/đối tượng:

gsutil -m rsync -r <local_folderpath> gs://<bucket_id>/<cloud_folderpath> 

Bên cạnh đó, nếu bạn sử dụng tùy chọn -d, bạn sẽ cũng xóa các tệp/đối tượng trong nhóm của bạn không còn hiện diện cục bộ nữa.

Tùy chọn khác có thể là sử dụng Object Versioning, vì vậy bạn sẽ thay thế tệp/đối tượng trong thùng bằng dữ liệu cục bộ của mình, nhưng bạn luôn có thể quay lại phiên bản trước.

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