Thực hiện sao lưu chính xác và sao lưu gia tăng đến một máy chủ từ xa


7

Tôi có một vài máy chủ Ubuntu (và có khả năng là RHEL) mà tôi muốn sao lưu vào máy chủ sao lưu trung tâm (thông qua rsh / SSH). Tôi muốn thực hiện cả sao lưu và sao lưu gia tăng. Mục tiêu là nếu một trong những máy chủ được sao lưu đột ngột chết, tôi có thể cài đặt hình ảnh bootstrap, khôi phục từ bản sao lưu và lý tưởng là được chạy ngay lập tức sau đó.

Các máy chủ này có người dùng và nhóm duy nhất và một số gids và uids khác nhau cho cùng tên. Tôi đã xem xét rsync (sao lưu cục bộ hoạt động tốt và tôi có quyền kiểm soát chi tiết để tôi có thể sao lưu xattrs và ACL) nhưng sau đó tôi nhận ra rsync đến một máy chủ từ xa có thể sẽ không giữ được những sắc thái này như mong đợi.

Vì vậy, cách tốt hơn để thực hiện điều này là gì? Có một gói thường được sử dụng cho mục đích này?


1
Âm thanh như bạn đang mô tả Bacula, hoặc tương tự.
derobert

Rất có thể ... tôi sẽ xem xét điều đó.
MartyMacGyver

Thay vì đăng câu trả lời của bạn dưới dạng chỉnh sửa cho câu hỏi, hãy nhấp vào 'trả lời câu hỏi của bạn' và đăng nó dưới dạng câu trả lời ... hoặc, thậm chí tốt hơn, chỉnh sửa nó thành câu trả lời của Stephane Chazelas.
derobert

Thêm câu trả lời của riêng tôi thay vào đó. rsync - mà tôi đã bắt đầu và tôi nhận thấy hầu hết các tùy chọn cho - không phải là giải pháp duy nhất, nhưng nó sẽ làm trong thời gian hiện tại.
MartyMacGyver

Câu trả lời:


4

rsynccó các tùy chọn để bảo tồn ACL, thuộc tính mở rộng, thuộc tính ext2, liên kết cứng, người dùng số, độ thưa thớt ...

Tôi đã từng có một hệ thống gắn hệ thống tập tin vào máy chủ dự phòng với btrfshệ thống tập tin (để chụp ảnh nhanh trên máy chủ sao lưu) và do vấn đề ổn định, đã chuyển sang zfs-on-linux (tiếc là chưa hỗ trợ POSIX ACLs , nhưng có những công việc xung quanh).

rsynccác tùy chọn bạn có thể quan tâm: --archive --one-file-system --xattrs --hard-links --delete --numeric-ids --sparse --aclsvà có thể là các tùy chọn để đồng bộ tại chỗ.

Một điều mà rsync không làm là phát hiện các đổi tên (mặc dù có một bản vá cho điều đó, nhưng tôi không chắc nó có thể tin cậy được bao nhiêu và nó chỉ phát hiện các đổi tên tệp).

zfszfs sendgửi chỉ những sửa đổi được thực hiện kể từ khi một bản chụp nhất định (để zfs khác zpool sử dụng zfs receive). Nếu tôi hiểu chính xác, tính năng đó đã được thêm vào gần đây btrfs. Vì vậy, nếu sao lưu một btrfsFS lên một btrfsFS khác trên kernel mới nhất, đó có thể là một tùy chọn.


Tôi đã nêu một số tùy chọn rsync trong câu hỏi ban đầu, đã sử dụng chúng trong các bản sao lưu cục bộ (cho một phân vùng / đĩa khác trên cùng hệ thống). Nhưng các UID, GID, ACL, v.v có được bảo toàn khi sao lưu hoàn toàn qua SSH sang một hộp khác, một nhóm có thể không có các nhóm hoặc người dùng mà máy ban đầu không? Về mặt kiến ​​trúc, câu trả lời dường như là "không", vì vậy tôi đã hỏi, đâu là lựa chọn tốt hơn (một lựa chọn sẽ hoạt động trên nhiều thứ hơn là Ubuntu và với ext3, ext4, xfs, v.v.)?
MartyMacGyver

Một hệ thống tập tin không quan tâm đến cơ sở dữ liệu người dùng của hệ thống. Tất cả những gì nó quan tâm là id người dùng. Vì vậy, với --numeric-id, không có vấn đề gì khi gửi dữ liệu đến một máy khác, việc người dùng có những uids đó hay không không thành vấn đề. Tương tự cho ACL (thực sự được lưu trữ dưới dạng các thuộc tính mở rộng). Vấn đề duy nhất bạn có thể tìm thấy là khi FS mục tiêu không hỗ trợ cùng tính năng được đặt như nguồn gốc (như POSIX ACL cho ZFS)
Stéphane Chazelas

Bạn cũng có thể thử --fake-supertùy chọn trên rsync từ xa . Ví dụ từ trang này:rsync -av --rsync-path="rsync --fake-super" /src/ host:/dest/
derobert

Tôi sẽ xem xét tùy chọn này và sẽ chạy một số thử nghiệm để xem điều gì xảy ra trên mục tiêu (và trong quá trình khôi phục).
MartyMacGyver

4

Hãy xem rsnapshot , đây là một trình bao bọc perl xung quanh rsynctiện ích dòng lệnh. Rsnapshot thêm một lớp cấu hình bổ sung vào rsync, giúp sao lưu dễ dàng. (Các phiên bản cũ hơn của tệp được liên kết cứng với phiên bản hiện tại khi chúng không thay đổi. Vì vậy, mỗi phiên bản gia tăng của hệ thống tệp được sao lưu của bạn trông giống như một bản sao đầy đủ.)

Một khả năng tương tự khác là sự trùng lặp , thay vào đó dựa trên librsync. Tôi hiểu điều này có giao diện người dùng bóng bẩy hơn, nhưng tôi chưa sử dụng nó. Hoặc sao lưu dự phòng , mà tôi nghĩ là từ cùng một nhà phát triển, hoặc ở bất kỳ tỷ lệ nào đã từng đúng.

Tất nhiên có rất nhiều và rất nhiều hệ thống dự phòng. Đây là danh sách những cái có sẵn trên FreeBSD, hầu hết trong số đó cũng sẽ có trên Linux. Nhưng tôi nghĩ ba điều tôi đã đề cập ở trên là những điều tự nhiên cần xem xét nếu bạn đã quen rsync. (Một công cụ tuyệt vời.)


Chúng sẽ giữ lại siêu dữ liệu, GID, UID phù hợp, v.v., ngay cả khi máy chủ đích không biết về các nhóm và người dùng đó?
MartyMacGyver

Tôi biết rằng rsync sẽ, với các đối số dòng lệnh phù hợp và rsnapshot có thể được cấu hình để chuyển bất kỳ đối số tùy chỉnh nào sang rsync mà bạn muốn. (Nếu nó chưa được cấu hình chính xác ngoài hộp.) Tôi sẽ sử dụng các đối số rsync -a --delete(chúng chắc chắn sẽ có ở đó theo mặc định) cộng với có lẽ --numeric-ids, có lẽ --hard-links, có lẽ --xattrshoặc --aclsnếu bạn cần giữ lại chúng. Rất khuyên bạn nên làm quen với man rsync.
dubiousjim

Tôi đã có những thứ này và nhiều hơn nữa, nhưng điều tôi không biết là liệu nó sẽ hoạt động tốt hay kém cho mục đích này. Hóa ra họ đã hoạt động tốt (mặc dù thật tuyệt khi có thể lưu trữ hoàn toàn điều này với các tùy chọn như vậy, thay vì để nó hoạt động như một hệ thống tệp phẳng với ID số và ... thật không may là tar AFAIK không hoạt động nhiệm vụ).
MartyMacGyver

Tôi không chắc ý của bạn ở đây là "phẳng". Đối với việc sao lưu được hiển thị dưới dạng một hệ thống tệp trực tiếp, sao lưu dự phòng iirc không làm điều đó và có lẽ sự trùng lặp cũng không phải vì nó sử dụng một cơ chế cơ bản tương tự.
dubiousjim

Căn hộ như trong bản sao lưu của tôi là một loạt các tệp và thư mục trên đĩa, so với blob (s) có chứa dữ liệu giống như tarball.
MartyMacGyver

3

Chỉnh sửa: Cảm ơn tất cả! Bây giờ tôi biết một số gói khác để thực hiện công việc và tôi biết nhiều hơn về nội bộ rsync. Đối với những người cũng có thể tự hỏi điều này, nếu bạn đồng bộ hóa với máy khác với tùy chọn --numeric_ids, nó sẽ không thử và ánh xạ hoặc tạo UID / GID, nó sẽ vượt qua chúng như hiện tại. Quyền sở hữu của các mục trong thư mục sao lưu có thể trông kỳ lạ, nhưng nó sẽ khớp với tỷ lệ 1: 1 khi khôi phục (giả sử một phần của những gì bạn khôi phục liên quan đến các tệp ánh xạ gốc, nếu bạn đang khôi phục máy mới).

Đây là danh sách đầy đủ các tùy chọn tôi hiện đang sử dụng để sao lưu toàn bộ hệ thống (dưới dạng root thông qua sudo). Lưu ý rằng {{my_exinating}} là một bài tập cho người đọc (Tôi vẫn gặp một số khó khăn khi làm việc đó như bình thường). Cũng lưu ý việc sử dụng --link-Dest ... nếu thư mục đó tồn tại trên mục tiêu, các liên kết cứng sẽ được tạo ở bất kỳ nơi nào có tệp trong bản sao lưu trước đó không thay đổi trong thư mục hiện tại.

rsync \
  --recursive \
  --links \
  --hard-links \
  --perms \
  --acls \
  --xattrs \
  --owner \
  --group \
  --devices \
  --specials \
  --times \
  --one-file-system \
  --partial \
  --numeric-ids \
  --compress \
  --delete-during \
  --stats \
  --human-readable \
  --progress \
  --verbose \
  --super \
  --log-file=/tmp/my.log \
  --link-dest=/backup/latest_backup \
  --exclude={{my_exclusions}} \
  --link-dest=/backup/latest \
  / \
  {{remote_hostname_or_ip}}:/backup/new_backup
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.