ฉีกโฟลเดอร์อย่างไร?


18

ฉันต้องการให้คำสั่งฉีกเนื้อหาทั้งหมดของโฟลเดอร์ / ไดเรกทอรี (ซึ่งอาจอยู่ในโฟลเดอร์ / ไดเรกทอรี) โปรดอธิบายคำสั่งด้วย


กำหนด "ฉีก" หากคุณเพียงแค่หมายถึงสิ่งที่shredคำสั่งนั้นมีคำตอบของคุณ
psusi

มีความเกี่ยวข้องกันมาก: askubuntu.com/questions/57572/…
Takkat

@ psusi- โดยฉีกฉันหมายถึงลบไฟล์เกินกว่าจะกู้คืน ฉันใช้คำสั่ง shred แต่เนื่องจากมันใช้ได้กับไฟล์เท่านั้นฉันต้องการคำสั่งที่คล้ายกันเพื่อลบโฟลเดอร์และไฟล์ที่อยู่ภายใน
Ashu

ซึ่งหนึ่งจะทำงานได้อย่างสมบูรณ์แบบshredหรือsecure-delete?
Ashu

1
สำหรับผู้ใช้อื่นที่สะดุดที่นี่ระวังshred ไม่ได้มีประสิทธิภาพเท่าที่คุณคิดเพราะระบบไฟล์และฮาร์ดแวร์ที่ทันสมัยไม่ได้เขียนทับข้อมูลในสถานที่ แต่แทนที่จะบันทึกการเปลี่ยนแปลงหรือย้ายไปรอบ ๆ เพื่อสวมใส่ระดับ ที่เกี่ยวข้อง: unix.stackexchange.com/questions/27027/ …
Mike Ounsworth

คำตอบ:


27
  1. secure-deleteติดตั้งแพคเกจ
  2. ใช้คำสั่งsrm -r pathnameเพื่อลบโฟลเดอร์และไฟล์ของคุณ

การตั้งค่าเริ่มต้นสำหรับ 38 (!!!) pass of overwrites ซึ่งเป็น overkill มากเกินไป imho (ดูข้อมูลเพิ่มเติมเกี่ยวกับที่นี่ )

srm -rfll pathnameสำหรับการใช้งานของฉันฉันต้องการเพียงบัตรเดียวของข้อมูลแบบสุ่มดังนั้นฉันใช้

หากคุณต้องการสร้างตัวเลือกคลิกขวาใน GUI สำหรับไฟล์และโฟลเดอร์ใช้ gnome-actions เพื่อเรียกใช้สคริปต์เช่นนี้:

#!/bin/bash
if dialog=`zenity --window-icon=warning --question --title="Secure Delete" --no-wrap --text="Are you sure you want to securely delete:\n\n     $1\n\nand any other files and folders selected? File data will be overwritten and cannot be recovered."` 
then /usr/bin/srm -fllrv "$@"| zenity --progress --pulsate --text="File deletion in progress..." --title="Secure Delete" --auto-close
fi 

หากคุณต้องการการตั้งค่าหวาดระแวงมากขึ้นโปรดแก้ไขสคริปต์ด้านบน


1
-f fast (and insecure mode): no /dev/urandom, no synchronize mode. -l lessens the security (use twice for total insecure mode). คุณช่วยอธิบายสองสิ่งนี้ได้ไหม 38 การเขียนทับเป็นค่าเริ่มต้นสิ่งเหล่านี้มีผลต่อค่า '38' และทำไมlสองครั้งใน-rfll
Ashu

2
ตกลงกระบวนการเริ่มต้นทั้งหมดคือ: 1 pass ด้วย 0xff (การลบศูนย์), 5 การสุ่มแบบสุ่มด้วย / dev / urandom จะใช้สำหรับ RNG ที่ปลอดภัยหากมี 27 การผ่านด้วยค่าพิเศษที่กำหนดโดย Peter Gutmann การสุ่มอีก 5 ครั้งจาก / dev / สุ่ม จากนั้นเปลี่ยนชื่อไฟล์เป็นค่าสุ่ม & ตัดไฟล์ IIRC, / dev / random ถือเป็นระบบสร้างหมายเลขสุ่มที่ดีกว่า การใช้ -fll เราจะข้าม 1 + 5 + 27 + 5 pass และแทนที่ด้วย single pass ของข้อมูลสุ่มซึ่งอาจมาจากเครื่องกำเนิด "สุ่มอย่างแท้จริง" น้อยกว่า
Veazer

@Ashu ย่อจาก man page (Debian Jessie) สำหรับ srm; (frist) -l: only two passes, (second) -l: only one pass. สำหรับคนอื่น ๆและ-f: fast (Non-secure random bits) ผมยังแนะนำให้สูง-r: recursive -v: verboseฉันขอแนะนำให้ใช้งานสิ่งนี้ในบางscreenกรณีอาจใช้เวลานานในการเก็บข้อมูลจำนวนมาก
ThorSummoner

1
ฉันได้แทนที่/usr/bin/srm -fllrvด้วยbleachbit -s

8

สำหรับไฟล์ที่ไม่ใช่ไดเรกทอรีนี่เป็นวิธีที่ง่ายกว่าแทนที่จะเป็น-exec shred -u {} \;วิธี:

cd to your directory.

แล้วก็

find . -type f -print0 | xargs -0 shred -fuzv -n 48

สิ่งนี้จะส่ง 48 ผ่านซ้ำไปยังไดเรกทอรีปัจจุบันที่คุณcdเข้าสู่

หวังว่านี่จะช่วยได้บ้าง


กำลังเพิ่ม '-print0' เพื่อค้นหาและ '-0' ลงใน xargs ไดเรกทอรีอาจมีช่องว่างในชื่อของพวกเขา
อ่อนตัว

คำตอบที่ดี แต่ทำไมคุณถึงใช้ xargs ฉันไม่เข้าใจ xargs
Chinmaya B

1

Shred ใช้ได้กับไฟล์เท่านั้น คุณต้องทำลายไฟล์ใน dir / subdirs ก่อนจากนั้นจึงลบไดเรกทอรี ลอง

find [PATH_TO_DIR] 

และให้แน่ใจว่าคุณเห็นไฟล์ที่คุณต้องการลบเท่านั้น

find [PATH_TO_DIR] -exec shred -u {} \;

จากนั้นลบ dirs ด้วย

rm -rf [PATH_TO_DIR]

คุณช่วยอธิบาย{} \;ได้ไหม ยังที่อื่นที่ฉันเคยเห็นคำสั่งเดียวกับคุณ แต่มัน'{}' \;เป็นความแตกต่างระหว่างสองสิ่งนี้หรือไม่?
Ashu

เนื่องจาก shred ไม่ทำงานในไดเรกทอรีวิธีเพิ่มการเลือก -type f ลงในคำสั่ง find?
andol

@ andol: ใช่ฉันกำลังคิดว่า ..
Ashu

1
ไม่สามารถอธิบายได้ดีไปกว่าหน้าค้นหาคน .... the {} และ \; เป็นส่วนหนึ่งของตัวเลือก -exec ของการค้นหา
Ruediger

1

คุณอาจต้องการใช้สิ่งที่คล้ายกับสิ่งนี้:

find dir -type f -exec shred -fuz {} +
rm -rf dir

คำสั่งแรกค้นหาเฉพาะไฟล์และส่งต่อให้ฉีก (มากที่สุดในครั้งเดียวที่เป็นไปได้ - ไม่จำเป็นต้องเริ่มกระบวนการฉีกใหม่สำหรับทุกไฟล์เช่น \; ไม่) ในที่สุดก็ลบไดเรกทอรีด้วย


1

sudo apt install wipe

$ wipe -rfi dir/*

ที่ใช้ธง: -r – tells wipe to recurse into subdirectories -f – enables forced deletion and disable confirmation query -i – shows progress of deletion process


0

ฉันได้แทรกสคริปต์ทุบตีต่อไปนี้เพื่อจุดประสงค์นี้ใน. bashrc ของฉัน

function rm2 {

  for var in $@
  do
  if [ -d $var ]
  then
     nohup $( /usr/bin/find "$var" -type f -exec  shred -n 2 -u -z -x {} \;;/bin/rm -rf "$var" ) & 
  else
    nohup /usr/bin/shred -x -n 2 -u -z "$var" & 
  fi
done
exit
}

-1

เมื่อฉันต้องการฉีกไฟล์หลาย ๆ ไฟล์หรือทั้งไดเรกทอรีฉันใช้เพียงshred -vzn 20 ./shredme/*.*ตัวอย่างซึ่งเขียนทับไฟล์ทั้งหมดด้วยนามสกุลไฟล์ใด ๆ ในโฟลเดอร์ "shredme" จากนั้นคุณสามารถใช้คำสั่ง rm -rf ./shredme มาตรฐานเพื่อลบโฟลเดอร์ (หรือคลิกขวาและลบโฟลเดอร์) เนื่องจากข้อมูลทั้งหมดถูกเขียนทับ 20 ครั้งสำหรับตัวอย่างนี้

ฉันทำตัวอย่างนี้โดยใช้รูปภาพที่ซ้ำซ้อนกันเป็นตัวอย่าง

ภาพหน้าจอของเทอร์มินัล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.