bup-restore - trích xuất các tập tin từ một bộ sao lưu
bup restore [-r host:[path]] [--outdir=outdir] [--exclude-rx pattern] [--exclude-rx-from filename] [-v] [-q] <paths...>
khôi phục bup trích xuất các tệp từ bộ sao lưu (được tạo bằng bup-save(1)) vào hệ thống tệp cục bộ.
đường dẫn được chỉ định có dạng /nhánh/bản sửa đổi/một số/nơi. Các thành phần của đường dẫn như sau:
tên của bộ sao lưu để khôi phục từ đó; điều này tương ứng với tùy chọn --name (-n) để bup save.
bản sửa đổi của bộ sao lưu để khôi phục. Bản sửa đổi mới nhất luôn là bản sao lưu gần đây nhất trên nhánh đã cho. Bạn có thể khám phá các phiên bản khác bằng cách sử dụng bup ls /branch.
đường dẫn đã lưu trước đó (sau khi tách/ghép bất kỳ) mà bạn muốn khôi phục. Ví dụ, vv/passwd.
Nếu some/where đặt tên cho một thư mục, khôi phục bup sẽ khôi phục thư mục đó và sau đó khôi phục đệ quy nội dung của nó.
Nếu some/where đặt tên cho một thư mục và kết thúc bằng dấu gạch chéo (ví dụ: đường dẫn/đến/dir/), khôi phục bup sẽ khôi phục các thư mục con của thư mục đó trực tiếp vào thư mục hiện tại (hoặc --outdir). Nếu some/where không kết thúc bằng dấu gạch chéo, phần tử con sẽ được khôi phục vào thư mục con của thư mục hiện tại.
Nếu some/where đặt tên cho một thư mục và kết thúc bằng `/.' (ví dụ: đường dẫn/đến/dir/.), khôi phục bup sẽ thực hiện chính xác những gì lẽ ra nó phải làm cho đường dẫn/đến/dir, sau đó khôi phục siêu dữ liệu của dir vào thư mục hiện tại (hoặc --outdir). Xem phần VÍ DỤ.
Trong trường hợp đặc biệt, nếu some/where đặt tên cho liên kết tượng trưng “mới nhất”, ví dụ: khôi phục bup /foo/latest, sau đó bup sẽ hoạt động chính xác như thể điểm lưu mà điểm “mới nhất” đã được chỉ định và khôi phục điểm đó, thay vì bản thân liên kết tượng trưng “mới nhất”.
Bất cứ khi nào siêu dữ liệu đường dẫn có sẵn, khôi phục bup sẽ cố gắng khôi phục nó. Khi khôi phục quyền sở hữu, bup thực hiện ngữ nghĩa giống như tar/rsync. Thông thường, nó sẽ ưu tiên tên người dùng và nhóm hơn là uid và gids khi chúng khả dụng, nhưng nó sẽ không cố khôi phục người dùng trừ khi chạy bằng quyền root và nó sẽ chuyển về dạng số uid hoặc gid bất cứ khi nào siêu dữ liệu chứa người dùng hoặc tên nhóm không tồn tại trên hệ thống hiện tại. Việc sử dụng tên người dùng và tên nhóm có thể bị vô hiệu hóa thông qua --numeric-ids (ví dụ: điều này có thể quan trọng khi khôi phục chroot) và trong trường hợp đặc biệt, uid hoặc gid bằng 0 sẽ không bao giờ được ánh xạ lại theo tên. Ngoài ra, một số hệ thống không cho phép đặt uid/gid không tương ứng với người dùng/nhóm đã biết. Trên các hệ thống đó, bup sẽ ghi lỗi cho từng đường dẫn có liên quan.
Các tùy chọn --map-user, --map-group, --map-uid, --map-gid có thể được sử dụng để điều chỉnh thông tin quyền sở hữu có sẵn trước khi bất kỳ quy tắc nào ở trên được áp dụng, nhưng lưu ý rằng do các quy tắc đó , --map-uid và --map-gid sẽ không có hiệu lực bất cứ khi nào đường dẫn có người dùng hoặc nhóm hợp lệ. Trong những trường hợp đó, --numeric-ids phải được chỉ định hoặc người dùng hoặc nhóm phải được xóa bởi --map-user foo= hoặc --map-group foo= phù hợp.
Liên kết cứng cũng sẽ được khôi phục khi có thể, nhưng ít nhất là hiện tại, sẽ không có liên kết nào được tạo tới các mục tiêu bên ngoài cây khôi phục và nếu cây khôi phục kéo dài một cách sắp xếp hệ thống tệp khác với cây lưu, một số bộ liên kết cứng có thể không được khôi phục hoàn toàn.
Cũng lưu ý rằng việc thay đổi bộ liên kết cứng trên đĩa giữa chỉ mục và lưu có thể tạo ra kết quả không mong muốn. Với cách triển khai hiện tại, bup sẽ cố gắng tạo lại bất kỳ tập hợp liên kết cứng cụ thể nào như nó đã tồn tại tại thời điểm lập chỉ mục, ngay cả khi tất cả các tệp trong tập hợp vẫn chưa được liên kết cứng (nhưng nếu không thì giống hệt nhau) vào thời điểm lưu.
Lưu ý rằng trong quá trình khôi phục, quyền truy cập vào dữ liệu trong cây khôi phục có thể dễ dàng hơn so với trong nguồn ban đầu. Trừ khi bảo mật không liên quan, bạn phải khôi phục thư mục con riêng, sau đó di chuyển cây kết quả đến vị trí cuối cùng của nó. Xem phần VÍ DỤ để minh họa.
khôi phục bộ sao lưu từ máy chủ từ xa đã cho. Nếu đường dẫn bị bỏ qua, hãy sử dụng đường dẫn mặc định trên máy chủ từ xa (bạn vẫn cần bao gồm `:'). Kết nối đến máy chủ từ xa được thực hiện bằng SSH. Nếu bạn muốn chỉ định cổng, người dùng hoặc khóa riêng nào sẽ sử dụng cho kết nối SSH, chúng tôi khuyên bạn nên sử dụng tệp ~/.ssh/config.
tạo và thay đổi thư mục outdir trước khi giải nén tệp.
khôi phục ID số (người dùng, nhóm, v.v.) thay vì tên.
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 đủ bắt nguồn từ đỉnh của cây khôi phục, không có điểm 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ể được chỉ định nhiều lần)
Lưu ý rằng gốc của cây khôi phục (khớp với `^/') là đỉnh của cây lưu trữ đang được khôi phục và không liên quan gì đến đích của hệ thống tệp. Với “khôi phục ... /foo/latest/etc/”, mẫu `^/passwd$' sẽ khớp nếu một tệp có tên passwd đã được lưu dưới dạng `/foo/latest/etc/passwd'.
Ví dụ:
loại trừ bất kỳ tệp nào có tên foo
loại trừ mọi thư mục có tên foo
loại trừ nội dung của bất kỳ thư mục nào có tên foo
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.
ghi dữ liệu đầu ra một cách thưa thớt khi hợp lý. Hiện tại, hợp lý chỉ có nghĩa là “ít nhất bất cứ khi nào có từ 512 số 0 liên tiếp trở lên”.
đối với mọi đường dẫn, hãy khôi phục tên người dùng cũ (đã lưu) thành mới. Chỉ định “ ” cho mới sẽ xóa người dùng. Ví dụ: “–map-user foo= ” sẽ cho phép uid có hiệu lực đối với bất kỳ đường dẫn nào ban đầu có người dùng “foo ”, trừ khi bị phản đối bởi đặc tả “–map-user foo=...” tiếp theo. Xem MÔ TẢ ở trên để biết thêm thông tin.
đối với mọi đường dẫn, hãy khôi phục tên nhóm cũ (đã lưu) thành mới. Chỉ định “ ” cho mới sẽ xóa nhóm. Ví dụ: “–map-group foo= ” sẽ cho phép gid có hiệu lực đối với bất kỳ đường dẫn nào ban đầu có một nhóm “foo ”, trừ khi bị phản đối bởi đặc tả “–map-group foo=...” tiếp theo. Xem MÔ TẢ ở trên để biết thêm thông tin.
đối với mọi đường dẫn, hãy khôi phục uid cũ (đã lưu) thành mới, trừ khi bị phản đối bởi tùy chọn “–map-uid old=...” tiếp theo. Lưu ý rằng uid sẽ chỉ phù hợp với các đường dẫn không có người dùng. Xem MÔ TẢ ở trên để biết thêm thông tin.
đối với mọi đường dẫn, hãy khôi phục gid cũ (đã lưu) thành mới, trừ khi bị phản đối bởi lệnh “–map-gid old=... " lựa chọn. Lưu ý rằng gid sẽ chỉ phù hợp với các đường dẫn không có người dùng. Xem MÔ TẢ ở trên để biết thêm thông tin.
tăng sản lượng nhật ký. Đưa ra một lần, in mọi thư mục khi nó được khôi phục; được đưa ra hai lần, in mọi tệp và thư mục.
triệt tiêu đầu ra, bao gồm cả bộ đo tiến trình. Thông thường, nếu thiết bị xuất chuẩn là một tty, đồng hồ đo tiến trình sẽ hiển thị tổng số tệp được khôi phục.
Tạo một bộ sao lưu thử nghiệm đơn giản:
$ bup index -u /etc
$ bup save -n mybackup /etc/passwd /etc/profileChỉ khôi phục một tệp:
$ bup restore /mybackup/latest/etc/passwd
Restoring: 1, done.
$ ls -l passwd
-rw-r--r-- 1 apenwarr apenwarr 1478 2010-09-08 03:06 passwdKhôi phục vv để kiểm tra (không có dấu gạch chéo):
$ bup restore -C test /mybackup/latest/etc
Restoring: 3, done.
$ find test
test
test/etc
test/etc/passwd
test/etc/profileKhôi phục nội dung của vv để kiểm tra (dấu gạch chéo):
$ bup restore -C test /mybackup/latest/etc/
Restoring: 2, done.
$ find test
test
test/passwd
test/profileKhôi phục nội dung của siêu dữ liệu vv và vv để kiểm tra (dấu “/.”):
$ bup restore -C test /mybackup/latest/etc/.
Restoring: 2, done.
# At this point test and etc's metadata will match.
$ find test
test
test/passwd
test/profileKhôi phục cây mà không có nguy cơ bị truy cập trái phép:
# mkdir --mode 0700 restore-tmp
# bup restore -C restore-tmp /somebackup/latest/foo
Restoring: 42, done.
# mv restore-tmp/foo somewhere
# rmdir restore-tmpKhôi phục cây, ánh xạ lại người dùng và nhóm cũ thành người dùng và nhóm mới:
# ls -l /original/y
-rw-r----- 1 foo baz 3610 Nov 4 11:31 y
# bup restore -C dest --map-user foo=bar --map-group baz=bax /x/latest/y
Restoring: 42, done.
# ls -l dest/y
-rw-r----- 1 bar bax 3610 Nov 4 11:31 yKhôi phục cây, ánh xạ lại uid cũ sang uid mới. Lưu ý là phải xóa user cũ đi để bup không thích nó hơn uid:
# ls -l /original/y
-rw-r----- 1 foo baz 3610 Nov 4 11:31 y
# ls -ln /original/y
-rw-r----- 1 1000 1007 3610 Nov 4 11:31 y
# bup restore -C dest --map-user foo= --map-uid 1000=1042 /x/latest/y
Restoring: 97, done.
# ls -ln dest/y
-rw-r----- 1 1042 1007 3610 Nov 4 11:31 yMột cách khác để làm điều tương tự bằng cách hủy bỏ người dùng/nhóm phổ biến với --numeric-ids:
# bup restore -C dest --numeric-ids --map-uid 1000=1042 /x/latest/y
Restoring: 97, done.bup-save(1), bup-ftp(1), bup-fuse(1), bup-web(1)
Một phần của bộ bup(1).
Avery Pennarun