Các mục tôi có thể loại trừ một cách an toàn khi thực hiện sao lưu


10

Tôi đang lên kế hoạch cho một chiến lược sao lưu dựa trên rsnapshot .

Tôi muốn thực hiện sao lưu toàn bộ hệ thống, ngoại trừ các tệp và thư mục sẽ vô dụng để khôi phục để có hệ thống hoạt động trở lại. Tôi đã loại trừ:

# System:
exclude /dev/*
exclude /proc/*
exclude /sys/*
exclude /tmp/*
exclude /run/*
exclude /mnt/*
exclude /media/*
exclude /lost+found

# Application:
exclude /*.pyc
exclude /*.pyo

Tôi tự hỏi những mục khác tôi có thể thêm vào danh sách loại trừ mà không ảnh hưởng đến hệ thống được khôi phục. Nói về một hệ thống Linux "chung chung", bạn có thể đề xuất các tiện ích mở rộng toàn cầu, thư mục tạm thời, bộ nhớ cache, v.v. Tôi có thể loại trừ một cách an toàn không?

Câu trả lời:


11

Trước hết, bạn nên đọc một chút về cú pháp bao gồm / loại trừ của rsync. Tôi có cảm giác rằng những gì bạn muốn làm được thực hiện tốt hơn bằng cách sử dụng các khối u **hơn là các khối *. ( **Mở rộng tới bất kỳ số lượng các mục, trong khi *nở chỉ với một mục duy nhất có thể phù hợp với nhiều mục mục. Các chi tiết có tại man rsyncdưới Bao gồm / Loại trừ quy Pattern .)

Điều đó nói rằng, nếu bạn muốn có thể khôi phục hệ thống về trạng thái làm việc đã biết từ bản sao lưu với ít rắc rối nhất, bạn nên cẩn thận với việc loại trừ các tệp hoặc thư mục. Tôi sử dụng rsnapshot cho mình và thực sự đã sử dụng cách tiếp cận ngược lại: bao gồm mọi thứ trừ một vài thư mục được lựa chọn cẩn thận.

Vì vậy, rsnapshot.conf của tôi thực sự phát biểu (với các tab để làm cho trình phân tích tệp cấu hình của rsnapshot hài lòng):

interval backup NNN # pick your poison
one_fs 0
exclude /backup/**
exclude /dev/**
exclude /proc/**
exclude /run/**
exclude /sys/**
exclude /tmp/**
backup / ./

và rất ít khác. Vâng, điều đó có nghĩa là tôi có thể sao chép nhiều hơn một chút so với những gì thực sự cần thiết, nhưng nó đảm bảo rằng bất cứ điều gì không có ý định như ephermal đều được sao chép. Do rsnapshot sử dụng hành vi trùng lặp liên kết cứng của rsync, chi phí thực sự duy nhất cho việc này là trong lần chạy đầu tiên; sau đó, giả sử bạn có một vị trí mục tiêu sao lưu có kích thước hợp lý (so với tổng kích thước tập dữ liệu của bạn), sẽ mất thêm rất ít thời gian hoặc dung lượng ổ đĩa. Tôi loại trừ nội dung của / sao lưu vì đó là nơi tôi gắn hệ thống tệp mục tiêu sao lưu; không loại trừ nó sẽ dẫn đến tình trạng sao chép bản sao lưu vào chính nó. Tuy nhiên, để đơn giản nếu tôi cần khôi phục lại kim loại trần, tôi muốn giữ điểm gắn kết!

Trong trường hợp của tôi, tôi cũng không thể sử dụng hợp lý one_fs 1; Tôi chạy ZFS với hệ thống tập tin hiện tại ~ 40. Liệt kê tất cả những thứ đó rõ ràng sẽ là một cơn ác mộng bảo trì và làm việc với các hệ thống tệp ZFS liên quan nhiều hơn mức cần thiết.

Dù sao đi nữa, hầu như bất cứ điều gì bạn muốn loại trừ ở trên và ngoài những điều trên sẽ phụ thuộc vào phân phối, vì vậy hầu như không thể đưa ra câu trả lời chung chung. Điều đó nói rằng, bạn có thể tìm thấy một số ứng cử viên dưới / var.


1
exclude /somepath/*là hoàn toàn tốt trong trường hợp này; nó loại trừ mọi thứ trong /somepath/, đúng như mong đợi. Bạn không cần **bởi vì không cần phải nhìn sâu hơn khi mọi thứ trong đó /somepath/đã bị loại trừ.
Martin von Wittich

Hoặc chỉ sử dụng exclude /somepathvà bỏ qua các thư mục này hoàn toàn - không chỉ nội dung của chúng.
Frank Kuster 10/2/2015

4
@spaceknarf Điều đó phá vỡ việc gắn kết khi bạn khôi phục lại kim loại trần, vì khi đó điểm gắn kết không tồn tại.
một CVn

4

Hầu hết những gì bạn đang cố gắng có thể được thực hiện chỉ bằng cách sử dụng one_fscài đặt. Đặt những loại phân vùng bạn muốn bao gồm trong bản sao lưu của bạn, sau đó sử dụng cài đặt đó để bỏ qua phần còn lại ( proc, sys, dev, vv). Tôi bao gồm /lost+foundvì thư mục đó sẽ luôn trống trừ khi bạn sao lưu hệ thống tệp bị hỏng, trong trường hợp đó bạn có thể muốn sao lưu mọi thứ đã fsckphục hồi. Ngoài ra, .pyc.pyokhông nên thực sự nằm trong thư mục gốc ở vị trí đầu tiên, vì vậy tôi cũng sẽ xóa các dòng đó. /tmp/var/tmplà về các đường dẫn duy nhất còn lại trên một hệ thống "chung" có chứa dữ liệu có thể được loại trừ đáng tin cậy khỏi các bản sao lưu. Vì vậy, có thể thử một cái gì đó như:

one_fs 1

exclude /tmp/
exclude /var/tmp/

Tôi không thực sự có ý nghĩa /*.pyc/*.pycnhưng hệ thống rộng *.pyc*.pyo, tôi đã sửa nó. Tôi không chắc chắn nếu one_fsđược đặt thành 1có thể loại trừ bất cứ điều gì tôi muốn, mặc dù.
Paolo

1
Điều gì nếu một gói hệ thống sử dụng các tập tin như vậy?
tước

bạn đúng, nhưng tôi gần như chắc chắn rằng mọi tệp .py sẽ được biên dịch lại tự động sớm hay muộn.
Paolo

3
Có lẽ, nhưng trên hệ thống của tôi các tập tin như vậy được cài đặt bởi các gói nhà cung cấp. Điều đó có nghĩa là nếu hệ thống được khôi phục từ bản sao lưu, các tệp mà trình quản lý gói nghĩ sẽ bị thiếu. Bạn đã hỏi về một giải pháp cho một hệ thống Linux "chung chung" và tôi không nghĩ rằng luôn an toàn khi cho rằng các tệp như vậy có thể bị mất mà không gây ra sự cố.
tước

một điều đáng chú ý tôi đã quên nói trong Q. là các ràng buộc gắn kết cũng nên được loại trừ để tránh trùng lặp dữ liệu.
Paolo

1

Tôi thấy tốt hơn là có một danh sách gói, nội dung của / etc, / home và bất kỳ dữ liệu người dùng / hệ thống nào từ / var và các nơi khác. Nó thường nhanh hơn để cài đặt lại các gói và sao chép lại cấu hình làm việc.


Tại sao cài đặt các gói, bao gồm ghi tất cả các tệp hệ thống cũng như xử lý cấu hình và dữ liệu meta sẽ nhanh hơn việc sao chép các tệp?
tước

Theo kinh nghiệm của tôi, khi cần một bản sao lưu thực sự, bạn cũng phát hiện ra rằng bạn đã không lưu trữ và ghi lại đúng tất cả các bit về một hệ thống. Thay vào đó, tập trung vào giải trí hơn là phục hồi giúp dễ dàng hơn, nhanh hơn và thường xuyên hơn. Rõ ràng là YMMV.
Sean Perry
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.