Ecco il mio problema: ho bisogno di archiviare per tarare molti file (fino a 60 TB) di file di grandi dimensioni (di solito da 30 a 40 GB ciascuno). Vorrei fare checksum (md5, sha1, qualunque cosa) di questi file prima dell'archiviazione; tuttavia non leggere ogni file due volte (una volta per il checksum, due volte per il tar) è più o meno una necessità per ottenere prestazioni di archiviazione molto elevate (LTO-4 richiede 120 MB / s sostenuti e la finestra di backup è limitata).
Quindi avrei bisogno di un modo per leggere un file, alimentare uno strumento di checksum da un lato e costruire un tar su nastro dall'altro lato, qualcosa lungo:
tar cf - files | tee tarfile.tar | md5sum -
Solo che non voglio il checksum dell'intero archivio (questo codice di shell di esempio fa proprio questo) ma un checksum per ogni singolo file nell'archivio.
Ho studiato le opzioni GNU tar, Pax, Star. Ho guardato la fonte da Archive :: Tar . Non vedo alcun modo ovvio per raggiungere questo obiettivo. Sembra che dovrò costruire a mano qualcosa in C o simile per ottenere ciò di cui ho bisogno. Perl / Python / etc semplicemente non lo taglieranno dal punto di vista delle prestazioni, e ai vari programmi tar manca la necessaria "architettura plug-in". Qualcuno conosce qualche soluzione esistente prima di iniziare a modificare il codice?
7z
è possibile scegliere l'hash e stamparlo in un modo che sha1sum
e sha256sum
in grado di capire: 7zip.bugaco.com/7zip/7zip_15_09/MANUAL/cmdline/commands/... (e sami-lehtinen.net/blog/... ) Provalo: 7z h -scrcsha256 mydir/* | sed --regexp-extended 's, +[0-9]+ +, ,g' > mydir.sha256sum ; sha256sum -c mydir.sha256sum
(testato con p7zip Versione 15.09 beta)
tar
se decidi di scriverlo;)