Czy mogę obliczyć sumę kontrolną pliku podczas jego tworzenia?

4

tarTworzę duże archiwum i chciałbym również utworzyć sumę kontrolną archiwum. Mógłbym to osiągnąć w następujący sposób:

$ tar cfz archive.tar.gz files
$ sha256sum archive.tar.gz > archive.tar.gz.sha256sum

Ale plik archiwum jest ogromny i działa na wolnych nośnikach, więc wolałbym nie czytać go ponownie po jego zapisaniu.

Czy mogę zbudować potok, który będzie mieszał plik podczas jego zapisywania? Pomyślałem, że mógłbym to zrobić za pomocą teenarzędzia, ale zapisuje to tylko plik, a nie standardowe wejście innego polecenia.

jl6
źródło

Odpowiedzi:

5

Odpowiadając na moje pytanie:

Tak, możesz użyć podstawienia procesu tee i bash:

tar cfz - files | tee >(sha256sum) | cat > archive.tar.gz
jl6
źródło
1
Drobne poprawki: Prawdopodobnie nie potrzebujesz części „ | cat”, możesz po prostu napisać ją bezpośrednio. Prawdopodobnie chcesz też podkomendę („ (sha256sum)” gdzieś napisać, tj.(sha256sum >archive.tar.gz.sha256sum)
MAP
3
Po prostu użyj | tee archive.tar.gz | sha256sum.
grawity