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 đổ.
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:
Gnu tar có một tùy chọn --ignore-failed-read
chỉ 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 -readable
vị 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, để ở find
mộ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 tar
có 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 - .
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 find
và tar
có 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 -print0
thay vì -print
cho find
và thêm --null
cho tar
.