bup-index - in và/hoặc cập nhật chỉ mục hệ thống tập tin bup
bup index <-p|-m|-s|-u|--clear|--check> [-H] [-l] [-x] [--fake-valid] [--no-check-device] [--fake-invalid] [-f indexfile] [--exclude path] [--exclude-from filename] [--exclude-rx pattern] [--exclude-rx-from filename] [-v] <paths...>
chỉ mục bup thao tác chỉ mục hệ thống tệp, đây là bộ đệm của các đường dẫn tuyệt đối và siêu dữ liệu của chúng (các thuộc tính, hàm băm SHA-1, v.v.). Chỉ mục bup có chức năng tương tự như chỉ mục git(1) và chỉ mục mặc định có thể được tìm thấy trong $BUP_DIR/bupindex.
Tạo bản sao lưu trong bup bao gồm hai bước: cập nhật chỉ mục bằng bup index, sau đó thực sự sao lưu các tệp (hoặc một tập hợp con của các tệp) bằng bup save. Sự tách biệt tồn tại vì những lý do sau:
Có nhiều cách để tạo danh sách các tệp cần được sao lưu. Ví dụ: bạn có thể muốn sử dụng inotify(7) hoặc dnotify(7).
Ngay cả khi bạn sao lưu tệp vào nhiều đích (để bổ sung dự phòng), tên tệp, thuộc tính và hàm băm sẽ giống nhau mỗi lần. Do đó, bạn có thể đỡ phải tạo lại nhiều lần danh sách các tệp cho mỗi bộ sao lưu.
Bạn có thể muốn sử dụng dữ liệu được theo dõi bởi bup index cho các mục đích khác (chẳng hạn như tăng tốc các chương trình khác cần thông tin tương tự).
Hiện tại, bup sẽ bỏ qua các thuộc tính Linux (cf. chattr(1) và lsattr(1)) trên một số hệ thống (bất kỳ hệ thống big-endian nào có sizeof(long) < sizeof(int)). Điều này là do nhân Linux và FUSE hiện không đồng ý về loại đối số cuộc gọi hệ thống attr, và do đó, trên các hệ thống big-endian, không có cách nào để có được kết quả mà không có nguy cơ hỏng ngăn xếp (http://lwn.net/Articles /575846/). Trong những tình huống này, bup sẽ in một cảnh báo khi lần đầu tiên các attr của Linux có liên quan trong bất kỳ thao tác lập chỉ mục/lưu/khôi phục nào.
bup tạo điều kiện cho độ phân giải dấu thời gian của hệ thống tệp "trường hợp xấu nhất" dự kiến - hiện tại là một giây; các ví dụ bao gồm VFAT, ext2, ext3, small ext4, v.v. Vì bup không thể biết độ phân giải dấu thời gian của hệ thống tệp và có thể đi qua nhiều hệ thống tệp trong bất kỳ lần chạy nhất định nào nên nó luôn giả định rằng độ phân giải có thể không tốt hơn một giây.
Trên thực tế, điều này có nghĩa là các cập nhật chỉ mục hơi thiếu chính xác và do đó, bup save đôi khi có thể ghi lại các thay đổi hệ thống tệp mà bạn không mong đợi. Đó là bởi vì, trong quá trình cập nhật chỉ mục, nếu bup gặp một đường dẫn có dấu thời gian thực tế mới hơn một giây trước khi quá trình cập nhật bắt đầu, thì bup sẽ đặt dấu thời gian chỉ mục cho đường dẫn đó (mtime và ctime) thành chính xác một giây trước khi chạy – giới hạn các giá trị đó một cách hiệu quả.
Điều này đảm bảo rằng không có thay đổi tiếp theo nào đối với những đường dẫn đó có thể dẫn đến dấu thời gian giống hệt với dấu thời gian trong chỉ mục. Nếu điều đó là có thể, bụp có thể bỏ qua các sửa đổi.
Bạn có thể thấy ảnh hưởng của hành vi này trong ví dụ này (giả sử rằng chưa đến một giây trôi qua giữa quá trình tạo tệp ban đầu và lần chạy chỉ mục đầu tiên):
$ touch src/1 src/2
# A "sleep 1" here would avoid the unexpected save.
$ bup index src
$ bup save -n src src # Saves 1 and 2.
$ date > src/1
$ bup index src
$ date > src/2 # Not indexed.
$ bup save -n src src # But src/2 is saved anyway.Nói một cách chính xác, bụp sẽ không nhận thấy sự thay đổi đối với src/2, nhưng nó lại có, do những điều chỉnh được mô tả ở trên.
cập nhật đệ quy chỉ mục cho các đường dẫn đã cho và hậu duệ của chúng. Một hoặc nhiều đường dẫn phải được chỉ định và nếu một đường dẫn kết thúc bằng một liên kết tượng trưng, thì chính liên kết đó sẽ được lập chỉ mục chứ không phải đích. Nếu không có tùy chọn chế độ nào được cung cấp, --update là tùy chọn mặc định và các đường dẫn có thể bị loại trừ bởi các tùy chọn --exclude, --exclude-rx và --one-file-system.
in nội dung của chỉ mục. Nếu các đường dẫn được đưa ra, hãy hiển thị các mục đã cho và hậu duệ của chúng. Nếu không có đường dẫn nào được đưa ra, hãy hiển thị các mục bắt đầu từ thư mục làm việc hiện tại (.).
chỉ in các tệp được đánh dấu là đã sửa đổi (nghĩa là đã thay đổi kể từ lần sao lưu gần đây nhất) trong chỉ mục. Ngụ ý -p.
thêm mã trạng thái (A, M, D hoặc dấu cách) trước mỗi đường dẫn. Ngụ ý -p. Các mã tương ứng có nghĩa là một tệp được đánh dấu trong chỉ mục là đã thêm, sửa đổi, xóa hoặc không thay đổi kể từ lần sao lưu cuối cùng.
kiểm tra cẩn thận tính toàn vẹn của tệp chỉ mục trước và sau khi cập nhật. Hầu hết hữu ích cho các bài kiểm tra tự động.
xóa chỉ mục mặc định.
đối với mỗi tệp được in, hãy thêm mã băm được ghi gần đây nhất vào trước. Mã băm thường được tạo bởi bup save. Đối với các đối tượng chưa được sao lưu, mã băm sẽ là 0000000000000000000000000000000000000000. Lưu ý rằng mã băm được in ngay cả khi tệp được biết là đã bị sửa đổi hoặc bị xóa trong chỉ mục (tức là tệp trên hệ thống tệp không còn khớp với băm được ghi lại). Nếu đây là vấn đề của bạn, hãy sử dụng --status.
in thêm thông tin về từng tệp, ở định dạng tương tự với tùy chọn -l của ls(1).
không vượt qua các ranh giới của hệ thống tệp khi duyệt qua hệ thống tệp - mặc dù như với tar và rsync, bản thân các điểm gắn kết sẽ vẫn được lập chỉ mục. Chỉ áp dụng nếu bạn đang sử dụng -u.
đánh dấu các đường dẫn được chỉ định là cập nhật ngay cả khi chúng không cập nhật. Điều này có thể hữu ích cho việc thử nghiệm hoặc để tránh sao lưu không cần thiết các tệp mà bạn biết là nhàm chán.
đánh dấu các đường dẫn được chỉ định là không cập nhật, buộc lần chạy “bup save ” tiếp theo kiểm tra lại nội dung của chúng.
sử dụng tên tệp chỉ mục khác thay vì $BUP_DIR/bupindex.
loại trừ đường dẫn khỏi bản sao lưu (có thể lặp lại).
đọc – loại trừ các đường dẫn khỏi tên tệp, một đường dẫn trên mỗi dòng (có thể lặp lại). Bỏ qua các dòng hoàn toàn trống.
loại trừ mọi mẫu khớp với đường dẫn, phải là một biểu thức chính quy của Python (http://docs.python.org/library/re.html). Mẫu sẽ được so sánh với đường dẫn đầy đủ, không có neo, vì vậy “x/y ” sẽ khớp với “ox/yard” hoặc “box/yard”. Để loại trừ nội dung của /tmp, chứ không phải chính thư mục, hãy sử dụng “^/tmp/. ”. (có thể lặp đi lặp lại)
Ví dụ:
`/foo$' - loại trừ bất kỳ tệp nào có tên foo
`/foo/$' - loại trừ mọi thư mục có tên foo
`/foo/.' - loại trừ nội dung của bất kỳ thư mục nào có tên foo
`^/tmp/.' - loại trừ nội dung của /tmp cấp gốc, nhưng không phải chính /tmp
đọc các mẫu –exclude-rx từ filename, một mẫu trên mỗi dòng (có thể lặp lại). Bỏ qua các dòng hoàn toàn trống.
không đánh dấu mục nhập không hợp lệ nếu số thiết bị (stat(2) st_dev) thay đổi. Điều này có thể hữu ích khi lập chỉ mục các hệ thống tệp từ xa, tự động đếm hoặc ảnh chụp nhanh (LVM, Btrfs, v.v.), trong đó số thiết bị không cố định.
tăng đầu ra nhật ký trong khi cập nhật (có thể được sử dụng nhiều lần). Với một -v, in từng thư mục khi nó được cập nhật; với hai -v, in từng tệp luôn.
bup index -vux /etc /var /usrbup-save(1), bup-drecurse(1), bup-on(1)
Một phần của bộ bup(1).
Avery Pennarun