Cách sao lưu cấu trúc thư mục bỏ qua tệp & thư mục mà không có quyền đọc


9

Bất kỳ ý tưởng làm thế nào để sao lưu cấu trúc thư mục có một số tệp và / hoặc thư mục mà bạn không có quyền đọc? Tôi chỉ muốn bỏ qua những cái đó, mà không sao lưu (tar? Jar?) Sụp đổ.

Câu trả lời:


8

Gnu tar có một tùy chọn --ignore-failed-readchỉ làm điều đó.

Nếu bạn không sử dụng GNU tar, bạn có thể tạo danh sách các tệp để sao lưu hoặc danh sách các tệp để loại trừ. GNU find có một -readablevị từ kiểm tra xem bạn có cho phép đọc tệp không. Với các phiên bản tìm kiếm khác, để ở findmột mình, bạn sẽ cần xấp xỉ điều này với quyền truy cập tệp ( -perm) và quyền sở hữu ( -user, group), điều này gây khó khăn cho việc đối phó với các nhóm, ACL, v.v. Bạn có thể kiểm tra chính xác bằng cách gọi chương trình bên ngoài hoặc shell dựng sẵn test. Dưới đây là một ví dụ giả sử bạn tarcó tùy chọn -Xđọc danh sách tên tệp được phân tách bằng dòng mới để loại trừ (tên tệp chứa dòng mới được bỏ qua, để tránh các vấn đề phân tích cú pháp):

find . ! -name '*
*' -exec sh -c 'for x; do [ -r "$x" ] || printf "%s\\n" "$x"; done' _ {} |
tar -cf backup.tar -X - .

Làm việc hoàn hảo lần đầu tiên với --ignore-fail-read, cảm ơn rất nhiều. Hệ thống là Red Hat nên GNU tar đã được đưa ra.
dùng3228053

2

Nếu bạn không có dòng mới trong đường dẫn thì bạn có thể làm điều này:

find . -type f -readable -print | tar cf test.tar -T -

Điều này có thể bị giới hạn ở GNU findtarcó thể không hoạt động với một số hệ thống tệp nhất định (NFS, FUSE). Nếu có hoặc có thể có dòng mới thì sử dụng -print0thay vì -printcho findvà thêm --nullcho tar.

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.