uutils/coreutils

uu shred has a different probability distribution of overwrites from GNU shred

Open

#11.611 aperta il 3 apr 2026

Vedi su GitHub
 (5 commenti) (0 reazioni) (0 assegnatari)Rust (1852 fork)batch import
U - shredgood first issuereported-canonical-2

Metriche repository

Star
 (23.246 star)
Metriche merge PR
 (Merge medio 9g 14h) (216 PR mergiate in 30 g)

Descrizione

uu shred implements both algorithms, and the following test demonstrates that, for 1000 passes, uu shred's default algorithm has 246 multibyte overwrites, in contrast to 318 for GNU's.

#[test]
fn test_pattern_multicount() {
    use std::{cell::RefCell, fs::OpenOptions, io::Write};
    let mut f = OpenOptions::new().read(true).write(true).create(true).truncate(true).open("/tmp/uu_shred_test_pattern").unwrap();
    // create_test_compatible_sequence requires that the random source consist of only 0x55's
    f.write(&[0x55; 1024]).unwrap();
    f.flush().unwrap();
    let rng = Some(RefCell::new(f));
    let n = 1000;
    let a = crate::create_test_compatible_sequence(n, rng.as_ref()).unwrap();
    let b = crate::create_standard_pass_sequence(n).unwrap();
    use crate::{PassType,Pattern};
    println!("a {:?}", a.iter().filter(|x| matches!(x, PassType::Pattern(Pattern::Multi(_)))).count());
    println!("b {:?}", b.iter().filter(|x| matches!(x, PassType::Pattern(Pattern::Multi(_)))).count());
}

Guida contributor