How to Series - RHash sebagai program menghitung hash
Table of Content
Reference
- https://github.com/rhash/RHash
- https://rhash.sourceforge.io/
- https://sourceforge.net/p/rhash/wiki/UsageExamples/
Summary
RHash adalah aplikasi berbabasis command line untuk menghitung / verifikasi hash file.
Personal Opinion
RHash dibutuhkan jika ingin menghitung / verifikasi hash programmatically. Contoh, recursive di dalam suatu folder hingga subfolder.
Jika hanya ingin menghitung / verifikasi satu file saja, bisa menggunakan fitur yang ada di OS masing-masing atau aplikasi yang biasa ter-install seperti 7z.
Kenapa membutuhkan RHash? tujuannya untuk backup file, verifikasi dari file corrupted seperti bit-rot atau sekedar DataHoarder.
RHash hanya memverifikasi validnya suatu data, tidak bisa restore data yang corrupt. Jika ingin restore data yang corrupt, bisa gunakan :
- 3-2-1 backup rules strategy
- at least 3 duplicates of data
- at least using 2 different type of backup storage : internal hdd, portable hdd, flash disk, etc
- at least 1 offsite storage : cloud, on different house, on friend house, etc
- RAR archive yang memiliki recovery record via
Reed-Solomon
algorithm, akan membuat file rar dengan parity recorery sekitar 5-10% redundancy dari total filesize, sudah cukup dibutuhkan untuk recover dari ~90% masalah data corrupt (tergantung besarnya penyebaran corrupt) - PAR file dengan Multipar (windows) atau ParParGUI (linux), sebagai standalone parity file via
Reed-Solomon
algorithm tanpa menggunakan WinRar. Disini, file recovery digenerate terpisah dari file asli dalam format .par2 file. Sama seperti winrar, 5-10% redundancy dari total filesize sudah cukup untuk recover dari ~90% masalah data corrupt (tergantung besarnya penyebaran corrupt). - Atau menggunakan Kopia, dimana kita bisa backup file secara incremental (blok based) dan juga terdapat fitur parity.
- Atau membangun NAS (network attached storage - mahal), dengan menggunakan ZFS Filesystem dengan RAIDz vdevs, selain sudah memiliki early block error detection, RAIDz juga membangun parity sebagai error correction.
Prerequisites
How to
create checksum
rhash -rCP --accept=[ext,ext] [src directory] > [filehash-output.sfv]
# -r : recursively
# -C : create hash dengan algoritma CRC32
# -P : show percentage
# --accept : extensions list to be accepted to be rhash
example : rhash -rCP --accept=".iso,.img" . > checksum.sfv
allternatif lain selain CRC32,
-M
: untuk md5-H
,--sha1
: untuk sha1--sha256
,--sha512
: untuk SHA-2 algorithm untuk 256 atau 512 bit--sha3-256
,--sha3-512
: untuk SHA-3 algorithm untuk 256 / 512 bit- atau gunakan
--list-hashes
untuk daftar algorithm yang disupport
Update Hash
hash -rCP --update=[filehash-output.sfv] --accept=[ext,ext] [directory]
# silahkan gunakan -M, -H, --sha412 sebagai pengganti -C untuk algoritma checksum
example : `rhash -rCP --update=checksum.sfv --accept=".iso,.img" .
Validate Hash
rhash -c [filehash-output.sfv]
# -c : check file hash
rhash -c --ignore-missing [filehash-output.sfv]
# --ignore-missing : akan ignore jika file sudah tidak ada dari list filehash-output.sfv. Jika tidak ada parameter ini, akan mengeluarkan daftar file termasuk yang missing
rhash -c --skip-ok [filehash-output.sfv]
# --skip-ok : hanya menampilkan file bermasalah
example rhash -c --ignore-missing chcksum.sfv
List Unverified (new) file
rhash -r --unverified=[filehash-output.sfv] --accept=[ext,ext] [directory]
example : rhash -r --unverified=checksum.sfv --accept=".iso,.img" .
List Missing file
rhash -r --missing=[filehash-output.sfv] --accept=[ext,ext] [directory]
example : rhash -r --missing=checksum.sfv --accept=".iso,.img" .
Create Embedded CRC32 checksum in filename
akan mernambahkan crc32 ke filename menjadi filaneme [crc32].ext
rhash -e [file]
example : rhash -e myfile.txt
atau rhash -e *.txt
Verify Embedded CRC32 checksum in filename
rhash -k [file_with_crc32_in_filename]
example rhash -k myfile [76A3EB2C].txt
atau rhash -k *.txt
Other Reading
- Berbagai Cara Menghitung Hash
- Cheatsheet : RHash
- Example Taskfile :
- Example linux Makefile :