rsync tập tin w / mã hóa hữu ích?


5

Là rsync hiệu quả để chuyển tập tin được mã hóa? Cụ thể hơn:

  • Tôi mã hóa 'x' bằng khóa chung của mình và gọi kết quả là 'y'.
  • Tôi rsync 'y' đến máy chủ dự phòng của mình.
  • 'x' thay đổi một chút
  • Tôi mã hóa 'x' đã sửa đổi và rsync 'y' đã sửa đổi vào máy chủ dự phòng của mình.

Đây có phải là hiệu quả? Tôi biết một thay đổi nhỏ trong 'x' mang lại một thay đổi lớn trong 'y', nhưng sự thay đổi đó có được bản địa hóa không? Hoặc 'y' đã thay đổi triệt để đến nỗi rsync không tốt hơn nhiều so với scp?

Tôi hiện đang sao lưu các tệp "quan trọng" của mình bằng cách tarring / bzipping chúng hàng đêm, sau đó mã hóa tệp .tar.bz và rsync nó vào máy chủ sao lưu của tôi.

Nhiều tệp riêng lẻ không thay đổi, nhưng, tất nhiên, tệp tar thay đổi nếu thậm chí một trong các tệp thay đổi.

Đây có phải là hiệu quả? Tôi có nên mã hóa và sao lưu từng tệp riêng lẻ không? Bằng cách đó, các tệp không thay đổi sẽ không mất thời gian để rsync.

Chỉnh sửa để thêm thông tin:

  • Nguồn là máy nhà tôi. Tôi sở hữu nó và xem xét nó an toàn.

  • Mục tiêu là một máy chủ colocated. Nó là của tôi, nhưng công ty colocation có thể thấy bất kỳ / tất cả lưu lượng truy cập mạng và bất cứ thứ gì trên ổ cứng của máy đó.

  • Nguồn có rất ít không gian trống. Tôi không muốn giảm một nửa không gian của nó bằng cách lưu trữ một bản sao lưu được mã hóa trên đó.

  • Mục tiêu có rất nhiều không gian.

Bất kỳ suy nghĩ dựa trên thông tin mới này?


"Tôi mã hóa 'x' bằng khóa chung của mình và gọi kết quả là 'y'" Tôi nghĩ bạn có nghĩa là khóa chung của máy chủ.
nc3b

2
Chà, tôi thực sự đang sử dụng khóa công khai của riêng mình, nhưng tôi cho rằng tôi có thể cung cấp cho máy chủ nguồn của mình một khóa và sử dụng ... sự khác biệt đó, phải không?
barrycarter

Câu trả lời:



4

Trước hết, xin chúc mừng vì đã sao lưu nghiêm túc.

Nhìn hoàn toàn từ quan điểm hiệu quả chuyển giao rsync, bạn sẽ tốt hơn rất nhiều khi nén và mã hóa các tệp riêng lẻ và sau đó tạo tarball của những tệp mà bạn không mã hóa hoặc nén thêm.

Bạn thậm chí sẽ tốt hơn (một lần nữa, chỉ nhìn vào thời gian chuyển) bằng cách bỏ qua các tarball và chỉ cần phân cấp một hệ thống phân cấp các tệp được mã hóa / nén.

Với bất kỳ tệp được nén và mã hóa nào, tôi tin rằng đến thời điểm thay đổi (hoặc thực sự, khối thay đổi đầu tiên trong một trình nén khối như bzip2), bạn sẽ nhận được cùng một tệp, nhưng sau đó bạn sẽ không bao giờ đồng bộ hóa Dòng suối cũ; tức là phần còn lại của tarball sẽ khác.

OTOH, từ quan điểm bảo mật, mã hóa tarball sẽ ẩn tên tệp và các mẫu sửa đổi, ngăn phân tích lưu lượng.

Tôi không thấy cách nào chỉ sử dụng rsync để có được cả bản sao lưu gia tăng và bảo mật hoàn toàn.

Cập nhật:

Nếu bạn kiểm soát cả hai đầu, bạn có thể sử dụng rsync -e ssh -a ...; điều này sẽ sử dụng một đường hầm ssh (cũng sẽ cung cấp nén với ssh_config của bạn được thiết lập đúng) và sau đó bạn có thể thực sự có được cả hai thế giới tốt nhất.

Và để có một suy nghĩ cuối cùng, hãy kiểm tra sao lưu dự phòng .


Cảm ơn. Mã hóa tên tệp rất quan trọng đối với tôi và là một trong những điều mà nhiều hệ thống sao lưu tệp không làm được. Tất nhiên, tôi có thể đồng bộ hóa một tệp với tên sha1 đã được muối hoặc một cái gì đó (hoặc thậm chí là nội dung của nó mà tôi cho là) ​​và theo dõi sha1 đã muối để ánh xạ tên tệp trong một tệp khác (mà tôi cũng cần mã hóa và chuyển) . Tôi đang cố gắng thực hiện việc này mà không "giữ trạng thái" - lý tưởng nhất là tôi không cần biết những tập tin nào tôi đã sao lưu (và nếu chúng đã thay đổi) trước đó. Hoặc, tìm một cách thực sự tốt, đáng tin cậy để giữ trạng thái.
barrycarter

Tôi có quyền truy cập root vào cả hai bên, nhưng máy chủ dự phòng nằm trên mạng của người khác và thuộc về người khác. Nói cách khác, các bản sao lưu trên máy chủ sao lưu phải được mã hóa. sao lưu dự phòng có thể là cách để đi. Bằng cách nào đó, tôi cảm thấy việc mã hóa nhiều tệp nhỏ (thậm chí chỉ để kiểm tra xem chúng có giống nhau ở phía bên kia không!) Đau đớn hơn so với mã hóa một tệp lớn. Tự hỏi nếu có một cách tiếp cận lai.
barrycarter

1

Nếu bạn đang sử dụng GNU tar (và có thể là những người khác), bạn có thể tạo một tệp tar của tất cả các tệp của mình để sao lưu và giữ nó được lưu trữ cục bộ sau đó sử dụng "--append" để mở rộng tệp với bất kỳ cập nhật nào. Bởi vì tất cả các bản cập nhật cho tệp cuối cùng, mã hóa không ẩn dữ liệu không thay đổi khỏi rsync nên nó chạy rất hiệu quả. Nhược điểm là nó đòi hỏi nhiều không gian ở cả hai vị trí phát triển với mỗi bản sao lưu. Ưu điểm là nó thực hiện sao lưu tuần tự với lịch sử thay đổi.

Nếu bạn đang sử dụng OS X, có một giải pháp đơn giản, hiệu quả hơn cho vấn đề của bạn: tạo một hình ảnh đĩa bó được mã hóa thưa thớt và rsync.

Gói này là một cây thư mục chứa siêu dữ liệu và các phân đoạn nhỏ của dữ liệu được mã hóa trong các tệp riêng lẻ nơi lưu trữ nội dung của hình ảnh đĩa. Số lượng phân đoạn kích thước cố định tăng lên khi hình ảnh đĩa được lấp đầy (nghĩ về chúng như các khối ổ cứng động) và chỉ những phân đoạn chứa dữ liệu được thay đổi sẽ thay đổi trên đĩa cho phép rsync hoạt động hiệu quả. Tôi nghi ngờ bạn có thể có quyền truy cập rw khi sử dụng mã hóa khóa công khai.

Bảo mật ... Bạn đang sử dụng mật mã khóa công khai, vì vậy nếu kẻ tấn công xâm nhập vào hộp của bạn đang được sao lưu, họ sẽ không có quyền truy cập vào dữ liệu lịch sử? Tôi không thể nghĩ ra bất kỳ lý do nào khác để sử dụng khóa chung trên AES. Xin lưu ý rằng rsync cho phép kẻ tấn công phá hủy tất cả các bản sao lưu hoặc ghi đè lên chúng với bất kỳ thứ gì chúng chọn khi chúng có quyền truy cập vào hộp để sao lưu.


Cảm ơn bạn đã lưu ý về "--append", tôi không bao giờ biết điều đó; có thể rất hấp dẫn đối với những người muốn có lịch sử mà không cần quay lại kho lưu trữ "mercurial / git / subversion".
dùng85116
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.