Προς το περιεχόμενο

Πλήρης/ασφαλής διαγραφή σκληρού δίσκου.


Dracon.74

Προτεινόμενες αναρτήσεις

Καλησπέρα.

 

Έστω ότι έχουμε έναν σκληρό δίσκο στον οποίο "πρέπει" να γίνει πλήρης διαγραφή. Δύο λύσεις που βρήκα (ως επαρκείς) είναι οι εντολές (core utilities) dd και scrub:

# dd if=/dev/urandom of=/dev/sdX bs=10MB

και

# scrub /dev/sdX

αντιστοίχως. Θα ήθελα να ρωτήσω τα εξής:

1. Για την πρώτη (dd) θα προτείνατε άλλη τιμή στο bs;

2. Για την πρώτη (dd) χρειάζεται και άλλος διακόπτης;

3. Για την δεύτερη (scrub) απαιτείται κάτι επιπλέον;

4. Εξ ιδίας πείρας (αλλά και από αναφορές τρίτων) η συμπεριφορά της dd είναι περίπου γραμμική: π.χ. αν για ~250GB χρειάζονται ~8 ώρες για ~500GB θα χρειαστούν ~16 ώρες. Υπάρχει κάποιος που να ξέρει κάτι αντίστοιχο για την scrub; 

 

Eυχαριστώ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλησπέρα.

 

Έστω ότι έχουμε έναν σκληρό δίσκο στον οποίο "πρέπει" να γίνει πλήρης διαγραφή. Δύο λύσεις που βρήκα (ως επαρκείς) είναι οι εντολές (core utilities) dd και scrub:

# dd if=/dev/urandom of=/dev/sdX bs=10MB
και

# scrub /dev/sdX
αντιστοίχως. Θα ήθελα να ρωτήσω τα εξής:

1. Για την πρώτη (dd) θα προτείνατε άλλη τιμή στο bs;

2. Για την πρώτη (dd) χρειάζεται και άλλος διακόπτης;

3. Για την δεύτερη (scrub) απαιτείται κάτι επιπλέον;

4. Εξ ιδίας πείρας (αλλά και από αναφορές τρίτων) η συμπεριφορά της dd είναι περίπου γραμμική: π.χ. αν για ~250GB χρειάζονται ~8 ώρες για ~500GB θα χρειαστούν ~16 ώρες. Υπάρχει κάποιος που να ξέρει κάτι αντίστοιχο για την scrub; 

 

Eυχαριστώ.

 

Δεν θυμάμαι πως δουλεύει το scrub αλλά συνήθως τέτοια utils γράφουν 3-4 φορές κάποια patterns με αποτέλεσμα πολύ χρονοβόρα διαδικασία χωρίς παραπάνω κέρδος. Αν δεν μιλάμε για SSD αλλά για ένα απλό δίσκο και με δεδομένο ότι δεν προσπαθείς να αποφύγεις την nsa, ένα απλό γράψιμο με την dd ακόμη και μηδενικών είναι υπεραρκετό.

 

Έτσι για γράψιμο μηδενικών μπορείς να χρησιμοποιήσεις

dd if=/dev/zero of=/dev/sdX bs=10M
Αν θέλεις να γράψεις σκουπίδια τότε η 1η εντολή που έγραψες είναι καλή. Ένα άλλο που μπορείς να κάνεις για να κερδίσεις σε ταχύτητα είναι να γράψεις 100MB από την urandom σε ένα αρχείο και μετά με χρήση της παραμέτρου seek της dd και μιας ανακύκλωσης να γράψεις το αρχείο στο δίσκο. Έτσι, τα σκουπίδια θα είναι μεν τα ίδια κάθε 100MB αλλά δεν σε πειράζει.
  • Like 4
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Aν θέλεις να γράψεις σκουπίδια τότε η 1η εντολή που έγραψες είναι καλή. Ένα άλλο που μπορείς να κάνεις για να κερδίσεις σε ταχύτητα είναι να γράψεις 100MB από την urandom σε ένα αρχείο και μετά με χρήση της παραμέτρου seek της dd και μιας ανακύκλωσης να γράψεις το αρχείο στο δίσκο. Έτσι, τα σκουπίδια θα είναι μεν τα ίδια κάθε 100MB αλλά δεν σε πειράζει.

 

Ευχαριστώ πολύ για την απάντησή σου. Ήλπιζα η scrub να πάρει λιγότερο χρόνο -κρίμα που διαψεύδομαι. Όσον αφορά αυτό που γράφεις, θα σου ήταν εύκολο να μου πεις αναλυτικώς τον τρόπο; (Υποθέτω μιλάς για κάποιο batch αρχείο). 

 

Πάντως η dd, όπως την έγραψα, για 250GB ήθελε περί τις 8 ώρες.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

αυτό που λέει είναι

φτιάχνεις ένα αρχείο με σκουπίδια 100mb

dd if=/dev/urandom of=/tmp/shitfile bs=10M count=10

και μετά χρησιμοποιείς, για να μην σε καθυστερεί το random, την dd μέσα σε ένα loop που κάθε φορά θα κάνει seek 100ΜB

 

 

αυτό δε θα δούλευε με το ανάλογο count?

dd if=/tmp/shitfile of=/dev/sdX bs=10M count=...
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

αυτό που λέει είναι

φτιάχνεις ένα αρχείο με σκουπίδια 100mb

dd if=/dev/urandom of=/tmp/shitfile bs=10M count=10

και μετά χρησιμοποιείς, για να μην σε καθυστερεί το random, την dd μέσα σε ένα loop που κάθε φορά θα κάνει seek 100ΜB

 

 

αυτό δε θα δούλευε με το ανάλογο count?

dd if=/tmp/shitfile of=/dev/sdX bs=10M count=...

Δεν είμαι σίγουρος ότι έχω "πιάσει" το δεύτερο σκέλος της διαδικασίας.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ούτε εγώ είμαι σίγουρος οτι το έχω γράψει σωστά οπότε περίμενε τον ημίθεο

η ουσία είναι οτι γράφεις συνέχεια τα ίδια 100mb μέχρι να γεμίσει ο δίσκος

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ούτε εγώ είμαι σίγουρος οτι το έχω γράψει σωστά οπότε περίμενε τον ημίθεο

η ουσία είναι οτι γράφεις συνέχεια τα ίδια 100mb μέχρι να γεμίσει ο δίσκος

Το γενικό σενάριο το κατάλαβα... Οι λεπτομέρειες μου λείπουν :P

 

Eπίσης, σκέφτομαι ότι αυτό που περιγράφει ο imitheos ίσως δεν διαφέρει (ως αποτέλεσμα) και πολύ από αυτό:

# shred -n 1 -v /dev/sdΧ
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ευχαριστώ πολύ για την απάντησή σου. Ήλπιζα η scrub να πάρει λιγότερο χρόνο -κρίμα που διαψεύδομαι. Όσον αφορά αυτό που γράφεις, θα σου ήταν εύκολο να μου πεις αναλυτικώς τον τρόπο; (Υποθέτω μιλάς για κάποιο batch αρχείο). 

 

Πάντως η dd, όπως την έγραψα, για 250GB ήθελε περί τις 8 ώρες.

 

Η urandom χρειάζεται εντροπία οπότε λογικό να αργεί για αυτό πρότεινα το άλλο σενάριο. Εκτός ότι δεν τρως πολύτιμη εντροπία και δεν θέλεις 100 ώρες δεν χάνεις και τίποτα ιδιαίτερο με το να επαναλαμβάνονται τα "τυχαία" σκουπίδια κάθε 100MB.

 

αυτό που λέει είναι

φτιάχνεις ένα αρχείο με σκουπίδια 100mb

dd if=/dev/urandom of=/tmp/shitfile bs=10M count=10
και μετά χρησιμοποιείς, για να μην σε καθυστερεί το random, την dd μέσα σε ένα loop που κάθε φορά θα κάνει seek 100ΜB

 

 

αυτό δε θα δούλευε με το ανάλογο count?

dd if=/tmp/shitfile of=/dev/sdX bs=10M count=...

 

 

Δεν είμαι σίγουρος ότι έχω "πιάσει" το δεύτερο σκέλος της διαδικασίας.

 

 

ούτε εγώ είμαι σίγουρος οτι το έχω γράψει σωστά οπότε περίμενε τον ημίθεο

η ουσία είναι οτι γράφεις συνέχεια τα ίδια 100mb μέχρι να γεμίσει ο δίσκος

 

Όπως σωστά είπε ο warlock, γράφεις συνέχεια τα ίδια τυχαία δεδομένα για να γίνει πιο γρήγορα η δουλειά. Το πρόβλημα είναι ότι η dd σταματάει όταν τελειώσει το αρχείο εισόδου οπότε αν βάλεις ως είσοδο ένα αρχείο 100MB θα σταματήσει αφού γράψει 100MB άσχετα αν εσύ του πεις με το συνδυασμό bs/count να γράψει 5GB. Για αυτό το λόγο ανέφερα την ανακύκλωση. 

 

Μια εκδοχή (δεν την δοκίμασα οπότε μπορεί να έχει συντακτικά λάθη) θα μπορούσε να είναι η εξής:

 

CCC=0
while true; do
  dd if=/tmp/τάδε of=/dev/sdX bs=100M seek=$CCC
  # Αν τέλειωσε ο δίσκος και απέτυχε η dd, τότε σταμάτα
  if [ $? != 0 ]; then
    break
  fi
  let CCC++
done

Το γενικό σενάριο το κατάλαβα... Οι λεπτομέρειες μου λείπουν :P

 

Eπίσης, σκέφτομαι ότι αυτό που περιγράφει ο imitheos ίσως δεν διαφέρει (ως αποτέλεσμα) και πολύ από αυτό:

# shred -n 1 -v /dev/sdΧ

 

Υποθέτω πως το -n1 γράφει μόνο ένα pattern οπότε θα είναι το ίδιο γρήγορο με την dd που έδωσες. Πολύ πιθανώς πάντως το shred να κάνει εύκολα και αυτό που περιγράφω ή να υπάρχει κάποιος ακόμη πιο εύκολος/γρήγορος τρόπος.

 

Αν πάντως σε ενδιαφέρει απλά να πουλήσεις το δίσκο ή να τον δώσεις πίσω για rma, τότε και απλά μηδενικά να γράψεις είσαι οκ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

Η urandom χρειάζεται εντροπία οπότε λογικό να αργεί για αυτό πρότεινα το άλλο σενάριο. Εκτός ότι δεν τρως πολύτιμη εντροπία και δεν θέλεις 100 ώρες δεν χάνεις και τίποτα ιδιαίτερο με το να επαναλαμβάνονται τα "τυχαία" σκουπίδια κάθε 100MB.

 

 

 

 

 

 

Όπως σωστά είπε ο warlock, γράφεις συνέχεια τα ίδια τυχαία δεδομένα για να γίνει πιο γρήγορα η δουλειά. Το πρόβλημα είναι ότι η dd σταματάει όταν τελειώσει το αρχείο εισόδου οπότε αν βάλεις ως είσοδο ένα αρχείο 100MB θα σταματήσει αφού γράψει 100MB άσχετα αν εσύ του πεις με το συνδυασμό bs/count να γράψει 5GB. Για αυτό το λόγο ανέφερα την ανακύκλωση. 

 

Μια εκδοχή (δεν την δοκίμασα οπότε μπορεί να έχει συντακτικά λάθη) θα μπορούσε να είναι η εξής:

 

CCC=0
while true; do
  dd if=/tmp/τάδε of=/dev/sdX bs=100M seek=$CCC
  # Αν τέλειωσε ο δίσκος και απέτυχε η dd, τότε σταμάτα
  if [ $? != 0 ]; then
    break
  fi
  let CCC++
done
Υποθέτω πως το -n1 γράφει μόνο ένα pattern οπότε θα είναι το ίδιο γρήγορο με την dd που έδωσες. Πολύ πιθανώς πάντως το shred να κάνει εύκολα και αυτό που περιγράφω ή να υπάρχει κάποιος ακόμη πιο εύκολος/γρήγορος τρόπος.

 

Αν πάντως σε ενδιαφέρει απλά να πουλήσεις το δίσκο ή να τον δώσεις πίσω για rma, τότε και απλά μηδενικά να γράψεις είσαι οκ.

 

Eυχαριστώ!

 

Να σε ρωτήσω...Επειδή όλο αυτό θα γίνει ως εξής: θα εκκινήσω από ένα live dvd (π.χ. GParted) για να κάνω όσα είπες στον εσωτερικό σκληρό δίσκο. Το αρχείο που θα χρειαστεί, πού θα γίνει εγγραφή; Στον σκληρό; 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Eυχαριστώ!

 

Να σε ρωτήσω...Επειδή όλο αυτό θα γίνει ως εξής: θα εκκινήσω από ένα live dvd (π.χ. GParted) για να κάνω όσα είπες στον εσωτερικό σκληρό δίσκο. Το αρχείο που θα χρειαστεί, πού θα γίνει εγγραφή; Στον σκληρό;

Είθισται το αρχείο να βρίσκεται εκτός του δίσκου που θέλεις να σβήσεις και αυτός να είναι unmounted.

 

Edit: Από ό,τι βλέπω, το shred υποστηρίζει την επιλογή --random-source=FILE οπότε μπορείς και κατευθείαν με την shred να κάνεις το ίδιο χωρίς να μπλέξεις με αυτά που έγραψα.

 

Οπότε αυτό που προτείνω είναι 1) Χρήση της dd για γράψιμο μηδενικών που είναι εύκολη διαδικασία και θα τελειώσει πολύ γρήγορα, 2) Χρήση του shred με -n1 για να μη μπλέξεις άδικα με αυτά που περιέγραψα πριν.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Είθισται το αρχείο να βρίσκεται εκτός του δίσκου που θέλεις να σβήσεις και αυτός να είναι unmounted.

 

Edit: Από ό,τι βλέπω, το shred υποστηρίζει την επιλογή --random-source=FILE οπότε μπορείς και κατευθείαν με την shred να κάνεις το ίδιο χωρίς να μπλέξεις με αυτά που έγραψα.

 

Οπότε αυτό που προτείνω είναι 1) Χρήση της dd για γράψιμο μηδενικών που είναι εύκολη διαδικασία και θα τελειώσει πολύ γρήγορα, 2) Χρήση του shred με -n1 για να μη μπλέξεις άδικα με αυτά που περιέγραψα πριν.

Ιmitheos, σε ευχαριστώ πάρα πολύ για την βοήθεια και τον χρόνο σου.

Είθισται το αρχείο να βρίσκεται εκτός του δίσκου που θέλεις να σβήσεις και αυτός να είναι unmounted.

 

Edit: Από ό,τι βλέπω, το shred υποστηρίζει την επιλογή --random-source=FILE οπότε μπορείς και κατευθείαν με την shred να κάνεις το ίδιο χωρίς να μπλέξεις με αυτά που έγραψα.

 

Οπότε αυτό που προτείνω είναι 1) Χρήση της dd για γράψιμο μηδενικών που είναι εύκολη διαδικασία και θα τελειώσει πολύ γρήγορα, 2) Χρήση του shred με -n1 για να μη μπλέξεις άδικα με αυτά που περιέγραψα πριν.

Απλή επιβεβαίωση. Αυτό που χρειάζομαι λοιπόν είναι:

# umount /dev/sdX
# dd if=/dev/zero of=/dev/sdX bs=10MB

σωστά;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ιmitheos, σε ευχαριστώ πάρα πολύ για την βοήθεια και τον χρόνο σου.

 

Απλή επιβεβαίωση. Αυτό που χρειάζομαι λοιπόν είναι:

# umount /dev/sdX
# dd if=/dev/zero of=/dev/sdX bs=10MB
σωστά;

 

Ναι αρκεί αυτό. Μόνο πρόσεχε το sdX να είναι το σωστό.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...