Đây là vấn đề của tôi: Tôi cần lưu trữ vào các tệp tar rất nhiều (tối đa 60 TB) các tệp lớn (thường là 30 đến 40 GB mỗi tệp). Tôi muốn thực hiện tổng kiểm tra (md5, sha1, bất cứ điều gì) của các tệp này trước khi lưu trữ; tuy nhiên không đọc mọi tệp hai lần (một lần để kiểm tra, hai lần cho tar'ing) ít nhiều là cần thiết để đạt được hiệu suất lưu trữ rất cao (LTO-4 muốn duy trì 120 MB / s và cửa sổ sao lưu bị hạn chế).
Vì vậy, tôi cần một số cách để đọc một tập tin, cung cấp một công cụ kiểm tra ở một bên và xây dựng một tar để băng ở phía bên kia, một cái gì đó cùng:
tar cf - files | tee tarfile.tar | md5sum -
Ngoại trừ việc tôi không muốn tổng kiểm tra của toàn bộ kho lưu trữ (mã shell mẫu này chỉ thực hiện điều này) mà là tổng kiểm tra cho từng tệp riêng lẻ trong kho lưu trữ.
Tôi đã nghiên cứu các tùy chọn GNU tar, Pax, Star. Tôi đã xem nguồn từ Lưu trữ :: Tar . Tôi thấy không có cách rõ ràng để đạt được điều này. Có vẻ như tôi sẽ phải tự tay xây dựng một cái gì đó bằng C hoặc tương tự để đạt được những gì tôi cần. Perl / Python / etc đơn giản là sẽ không cắt giảm hiệu năng và các chương trình tar khác nhau bỏ lỡ "kiến trúc plugin" cần thiết. Có ai biết bất kỳ giải pháp hiện có nào cho việc này trước khi tôi bắt đầu viết mã không?
7z
bạn có thể chọn các hash và in nó trong một cách mà sha1sum
và sha256sum
có thể hiểu được: 7zip.bugaco.com/7zip/7zip_15_09/MANUAL/cmdline/commands/... (và sami-lehtinen.net/blog/... ) Dùng thử: 7z h -scrcsha256 mydir/* | sed --regexp-extended 's, +[0-9]+ +, ,g' > mydir.sha256sum ; sha256sum -c mydir.sha256sum
(đã thử nghiệm với p7zip Phiên bản 15.09 beta)
tar
nếu bạn quyết định viết nó;)