uutils/coreutils

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

Open

#11,611 创建于 2026年4月3日

在 GitHub 查看
 (4 评论) (0 反应) (0 负责人)Rust (23,246 star) (1,852 fork)batch import
U - shredgood first issuereported-canonical-2

描述

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());
}

贡献者指南

uu shred has a different probability distribution of overwrites from GNU shred · uutils/coreutils#11611 | Good First Issue