Làm thế nào để đồng bộ hóa an toàn hai thư mục mà không trùng lặp?


0

Tôi có một tài khoản trên mega và tôi muốn đồng bộ hóa nó với một thư mục trên máy tính của tôi. Vấn đề là, rằng tài khoản này được công khai với một mức độ nào để tôi có thể không chỉ cần sử dụng rsyncvới --deletetrong trường hợp ai đó chỉ cần xóa tất cả các file.

Tôi nghĩ rằng có thể rsynctất cả các tệp vào máy tính của tôi mà không cần xóa bất cứ thứ gì, sau đó tìm các bản sao (ai đó đã chuyển tệp sang thư mục khác, v.v.) bằng cách sử dụng lệnh find -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 33 | cut -c 35-và chỉ giữ phiên bản mới nhất.

Nhưng nếu tôi không nhầm thời gian tạo tập tin thì bị bỏ lại sau khi sao chép. Điều đó thật đáng tiếc vì dữ liệu chủ yếu bao gồm các hình ảnh và tệp pdf không thay đổi.

Có cách nào để chuyển (chỉ) các tệp được sao chép sang touchví dụ hoặc có cách nào tốt hơn để giải quyết vấn đề này không?

Câu trả lời:


1

Bạn đã nói :

Nhưng nếu tôi không nhầm thời gian tạo tập tin thì bị bỏ lại sau khi sao chép.

Không phải lúc nào.

Khi bạn sao chép các tập tin và thư mục, bạn có thể duy trì thời gian sửa đổi.
ví dụ: cp -rpbảo toàn thời gian tạo, quyền sở hữu ... (từ man cp):

-a, --archive giống như -dR --preserve = all
-p giống như --preserve = chế độ, quyền sở hữu, dấu thời gian


Đồng thời rsync -tbảo toàn thời gian sửa đổi (lần này từ man rsync):

-t , --times giữ thời gian sửa đổi

Thường rsyncđược sử dụng với -avrcác tùy chọn vì vậy với việc -tsử dụng ngầm .

-a , - chế độ lưu trữ tổng thể; bằng -rlptgoD (không -H, -A, -X)


Vì vậy, tôi có thể sử dụng chỉ rsync (không có -t) và xóa các tệp cũ hơn khỏi danh sách được tạo bởi lệnh đó?
Kostrahb

Đối với tôi là một chút không rõ ràng những gì bạn muốn. BTW nếu bạn sao chép lần đầu tiên với cp -rphoặc scp -rpđiều này sẽ bảo toàn thời gian tạo. Sau đó, nếu bạn đồng bộ hóa với rsync -avr bạn, bạn sẽ cập nhật những cái mới duy nhất, giữ lại thời gian. Nếu bạn cần xóa một số tệp không có ở bên nhận (những tệp không có ở phía gửi), bạn có thể sử dụng tùy chọn rsync -avr --delete. Nhưng hãy kiểm tra cẩn thận những gì bạn đang làm với DRY RUN ( -n) trước (sử dụng rsync -avr --delete -n) và kiểm tra cục bộ để kiểm tra xem bạn đã viết đúng chưa.
Hastur

Tôi muốn giữ tất cả các tệp trong trường hợp ai đó xóa bất kỳ thứ gì (có thể, tài khoản được chia sẻ) nhưng nếu người khác chỉ di chuyển tệp đến một vị trí khác trên cây thì tôi không muốn giữ các tệp trùng lặp
Kostrahb

Ok tôi đề nghị bạn chiến lược này: Bắt đầu với một bản sao được đồng bộ hóa ( scp -rp ...), chúng ta hãy nói hôm nay. Sau đó tạo một danh sách sắp xếp của tổng kiểm tra md5 cho các tệp cục bộ. DỪNG LẠI. Ngày mai (khi bạn sẽ kiểm tra bản cập nhật) hãy thực hiện DRY RUN với `rsync -a - chỉ dành cho danh sách ... ...`. Phân tích đầu ra để tạo một danh sách mà bạn sẽ làm lại md5sum cho các tệp từ xa trên đường dẫn từ xa. Sau đó làm việc trên 2 danh sách cập nhật các tập tin và danh sách md5sum cục bộ. Tôi đề nghị bạn tạo một cơ chế LOCK để tránh các vấn đề.
Hastur
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.