TCH (statz) | #1, Főfasz (10466) |
2732 | #46e2 | ^ | Idézet | Tue, 14 Nov 2017 19:07:17 +01 |
94.21.*.* | *.pool.digikabel.hu |
SSD-vel a winhate bootideje is begyorsul, azonkívül inkább bootoljon lassabban, mint szopasson állandóan. A systemd-vel is felgyorsul a bootidő a SysVInithez képest, én mégis letöröltem a shitsteamd-t a faszba. Ha az ember maradéktalanul el akarja takarítani egy könyvtár tartalmát (mert pl. forráskód volt egy olyan gépen, ahol csak tesztelt/buildelt az ipse), akkor azt a sima rm értelemszerűen nem teszi meg, hiszen a tartalom marad, pl. ext* FS-ekről extundelete-tel vissza lehet nyerni. A teendő tehát, hogy egyrészt a fájlok tartalma megsemmisüljön, másrészt a fájlok (és könyvtárak) neve is megsemmisüljön, hogy véletlenül se lehessen következtetni arra, hogy mi volt ott. Miután végigszoptam (meg végigkerestem) az egész délutánt és ismét ezerszer elátkoztam azt aki az Internal Field Separatort-t kitalálta, végül SO-n valaki benyögte a nyertes megoldást, hogy hogy lehet végigiterálni egy olyan fájllistán, amiben space-k is lehetnek. Sajnos bezártam az ablakot és már elfelejtettem a nickjét (és mint említettem, kurwa nehezen találtam meg), így nem tudok neki creditet adni, de életem végéig hálás leszek neki. És akkor a script: #!/bin/sh
if [ "$1" = "." ] || [ "$1" = ".." ]; then
echo "Not allowed."
exit
fi
if [ ! -d "$1" ]; then
echo "Not a directory."
exit
fi
cd $1
find . | sort -r | while read file
do
if [ "$file" != "." ]; then
if [ -f "$file" ]; then
dd if=/dev/zero of="$file" bs=$(expr "$(stat -c %s "$file")" + "$(tr -cd 0-9 </dev/urandom | head -c 3)") count=1 > /dev/null 2>&1
fi
mv "$file" $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
fi
done
cd ..
rm -rf $1 Ez egyébként mellékhatásként még az eredeti könyvtárszerkezetet is megsemmisíti, de nem azért, mert kell, hanem mert úgy egyszerűbb, mint megőrizni (a mv mindent véletlen névvel áthajít a törlendő könyvtár gyökerébe és itt extra effort lenne, hogy még ráhúzzak egy dirname-t, meg amúgy se kell).Sz*rk: Itt van egy file-ra is: #!/bin/sh
if [ ! -f "$1" ]; then
echo "Not a file."
exit
fi
dd if=/dev/zero of="$1" bs=$(expr "$(stat -c %s "$1")" + "$(tr -cd 0-9 </dev/urandom | head -c 3)") count=1 > /dev/null 2>&1
file=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
mv "$1" "$file"
rm "$file"
|