Inilah masalah saya: Saya perlu mengarsipkan file tar banyak (hingga 60 TB) file besar (biasanya masing-masing 30 hingga 40 GB). Saya ingin membuat checksum (md5, sh1, apa pun) dari file-file ini sebelum pengarsipan; namun tidak membaca setiap file dua kali (satu kali untuk checksumming, dua kali untuk tar'ing) lebih atau kurang suatu keharusan untuk mencapai kinerja pengarsipan yang sangat tinggi (KPP-4 menginginkan 120 MB / s berkelanjutan, dan jendela cadangan terbatas).
Jadi saya perlu beberapa cara untuk membaca file, memberi makan alat checksumming di satu sisi, dan membangun tar untuk ditempelkan di sisi lain, sesuatu bersama:
tar cf - files | tee tarfile.tar | md5sum -
Kecuali bahwa saya tidak ingin checksum dari seluruh arsip (kode shell sampel ini hanya melakukan ini) tetapi checksum untuk setiap file individu dalam arsip.
Saya telah mempelajari opsi GNU tar, Pax, Star. Saya telah melihat sumber dari Archive :: Tar . Saya tidak melihat cara yang jelas untuk mencapai ini. Sepertinya saya harus membangun sendiri sesuatu dalam C atau serupa untuk mencapai apa yang saya butuhkan. Perl / Python / etc tidak akan memotong kinerja-bijaksana, dan berbagai program tar kehilangan "arsitektur plugin" yang diperlukan. Adakah yang tahu solusi yang ada untuk ini sebelum saya mulai kode-churning?
7z
Anda dapat memilih hash dan mencetaknya dengan cara yang sha1sum
dan sha256sum
dapat memahami: 7zip.bugaco.com/7zip/7zip_15_09/MANUAL/cmdline/commands/… (dan sami-lehtinen.net/blog/… ) Cobalah: 7z h -scrcsha256 mydir/* | sed --regexp-extended 's, +[0-9]+ +, ,g' > mydir.sha256sum ; sha256sum -c mydir.sha256sum
(diuji dengan p7zip Versi 15.09 beta)
tar
jika Anda memutuskan untuk menulisnya;)