Jak wyczyścić wolne miejsce na dysku w systemie Linux?

145

Po usunięciu pliku jego zawartość może pozostać w systemie plików, chyba że zostanie wyraźnie nadpisany czymś innym. wipePolecenia można bezpiecznie usunąć pliki, ale nie wydaje się, aby umożliwić usuwanie wolnego miejsca na dysku nie używany przez wszystkich plików.

Czego powinienem użyć, aby to osiągnąć?

Alex B.
źródło
Jedynym bezpiecznym rozwiązaniem może być zapisanie plików w innym miejscu, wyczyszczenie całej partycji, odtworzenie systemu plików, a następnie przywrócenie plików. Uruchomiłem photorec i byłem zszokowany tym, ile rzeczy można odzyskać nawet po „wyczyszczeniu” wolnego miejsca. Rozwiązaniem kompromisowym jest przesunięcie lewej granicy partycji o 6% jej rozmiaru po wyczyszczeniu pozornie wolnego miejsca.
user39559,

Odpowiedzi:

107

Ostrzeżenie: nowoczesny sprzęt dyskowy / SSD i nowoczesne systemy plików mogą wycisnąć dane w miejscach, w których nie można ich usunąć, więc proces ten może nadal pozostawiać dane na dysku. Jedynymi bezpiecznymi sposobami wymazywania danych jest polecenie Bezpieczne usuwanie ATA (jeśli jest poprawnie zaimplementowane) lub fizyczne zniszczenie. Zobacz także Jak w sposób niezawodny usunąć wszystkie informacje z dysku twardego?

Możesz użyć pakietu narzędzi o nazwie bezpieczne usuwanie.

sudo apt-get install secure-delete

Ma cztery narzędzia:

srm- bezpiecznie usuń istniejący plik
smem- bezpiecznie usuń ślady pliku z pamięci RAM
sfill- wyczyść całe miejsce oznaczone jako puste na dysku twardym
sswap- wyczyść wszystkie dane z twojego miejsca wymiany.

Ze strony podręcznika użytkownika srm

srm został zaprojektowany do bezpiecznego usuwania danych z nośników, których nie mogą odzyskać złodzieje, organy ścigania ani inne zagrożenia. Algorytm czyszczenia jest oparty na artykule „Bezpieczne usuwanie danych z pamięci magnetycznej i półprzewodnikowej” przedstawionym na 6. Sympozjum Bezpieczeństwa Usenix przez Petera Gutmanna, jednego z wiodących cywilnych kryptografów.

Bezpieczny proces usuwania danych z srm wygląda następująco:

  • 1 przejście z 0xff
  • 5 losowych przejść. /dev/urandomsłuży do bezpiecznego RNG, jeśli jest dostępny.
  • 27 przejść ze specjalnymi wartościami zdefiniowanymi przez Petera Gutmanna.
  • 5 losowych przejść. /dev/urandomsłuży do bezpiecznego RNG, jeśli jest dostępny.
  • Zmień nazwę pliku na losową wartość
  • Obetnij plik

Jako dodatkowy środek bezpieczeństwa plik jest otwierany w trybie O_SYNC i po każdym przejściu fsync()wykonywane jest wywołanie. srmzapisuje 32k bloków w celu zwiększenia prędkości, wypełniając bufory pamięci podręcznych dysków, aby zmusić je do opróżnienia i nadpisania starych danych, które należały do ​​pliku.

fnord_ix
źródło
5
Trudno znaleźć aktualną „oficjalną” stronę główną bezpiecznego usuwania. Być może starsza wersja twierdzi, że nie ma zgłoszeń błędów, ale jednocześnie nie ma otwartego systemu śledzenia błędów, w którym mógłbym zgłosić znaleziony błąd. Strona główna bezpiecznego usuwania wskazuje również, że może nie wyczyścić wszystkich nieużywanych bloków danych, w zależności od używanego systemu plików, co jest prawdą.
user39559
11
W przypadku nowoczesnych dysków twardych (większych niż około 20 GB) nie ma sensu wykonywać kilku przejść i czekać na wieki. Dlatego instalowanie specjalistycznych narzędzi stało się również bezużyteczne (co może wyjaśniać, dlaczego bezpieczne usuwanie nie ma już strony głównej). Po prostu zrób to z odpowiedniego podziału cat /dev/zero >nosuchfile; rm nosuchfile.
czwartek
1
@mivk: Dlaczego nie ma sensu wykonywać więcej niż jednego przejścia? I po co używać / dev / zero zamiast / dev / random? Czy to z powodu problemów z prędkością?
naught101
5
Używanie / dev / zero jest znacznie szybsze. Jeśli piszesz wolne miejsce z / dev / random, jądro musi generować wszystkie losowe dane w locie. To zabawny sposób na obserwowanie, jak średnia ładunek skacze do maksimum ...
dafydd
3
Odpowiedź na pytanie, czy konieczne jest wielokrotne czyszczenie danych, znajduje się tutaj: dlaczego
sleske
71

Najszybszym sposobem, jeśli potrzebujesz tylko jednego przejścia i po prostu chcesz zastąpić wszystko zerami, jest:

cat /dev/zero > zero.file
sync
rm zero.file

(uruchom z katalogu w systemie plików, który chcesz wyczyścić)
( syncpolecenie jest miarą paranoi, która zapewnia, że ​​wszystkie dane są zapisywane na dysku - inteligentny menedżer pamięci podręcznej może się przekonać, że może anulować zapisy dla wszelkich oczekujących bloków, gdy plik jest odłączony )

Podczas tej operacji będzie czas, kiedy w systemie plików nie będzie wolnego miejsca, co może potrwać kilkadziesiąt sekund, jeśli wynikowy plik jest duży i pofragmentowany, więc jego usunięcie zajmuje trochę czasu. Aby skrócić czas, w którym wolna przestrzeń jest całkowicie zerowa:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
cat /dev/zero > zero.file
sync
rm zero.small.file
rm zero.file

Powinno to wystarczyć, aby ktoś nie czytał starej zawartości pliku bez kosztownej operacji kryminalistycznej. Dla nieco bardziej bezpieczny, ale wolniej, wariantu zastąpić /dev/zeroz /dev/urandom. Aby uzyskać więcej paranoi, uruchom wiele kroków /dev/urandom, choć jeśli potrzebujesz tyle wysiłku shred, skorzystaj z pakietu z pakietu coreutils:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
shred -z zero.small.file
cat /dev/zero > zero.file
sync
rm zero.small.file
shred -z zero.file
sync
rm zero.file

Zauważ, że w powyższym przypadku mały plik jest niszczony przed utworzeniem większego pliku, więc można go usunąć, gdy tylko większy plik zostanie ukończony, zamiast czekać na jego zniszczenie, pozostawiając system plików z zerową ilością wolnego miejsca na czas. Proces niszczenia zajmuje dużo czasu w przypadku dużego pliku i chyba, że ​​próbujesz ukryć coś przed NSA, nie jest tak naprawdę konieczne IMO.

Wszystkie powyższe powinny działać na dowolnym systemie plików.

Limity rozmiaru pliku:

Jak zauważa DanMoulding w komentarzu poniżej, może to mieć problemy z ograniczeniami wielkości plików w niektórych systemach plików.

W przypadku FAT32 byłby to z pewnością problem ze względu na limit plików 2GiB: większość woluminów jest obecnie większa niż obecnie (8TiB to limit wielkości woluminu IIRC). Można obejść ten problem, cat /dev/zeroprzepuszczając duże dane wyjściowe, splitaby wygenerować wiele mniejszych plików i odpowiednio dostosować etapy niszczenia i usuwania.

W przypadku ext2 / 3/4 nie ma to większego znaczenia: przy domyślnym / wspólnym bloku 4K limit rozmiaru pliku wynosi 2 TB, więc aby mieć problem , musisz mieć dużą objętość (maksymalny rozmiar głośności w tych warunkach to 16TiB).

W przypadku (wciąż eksperymentalnych) plików btrfs maksymalne rozmiary plików i woluminów to ogromne 16EiB.

W systemie NTFS maksymalna długość pliku jest w niektórych przypadkach większa niż maksymalna długość woluminu.

Punkty początkowe po więcej informacji:
http://en.wikipedia.org/wiki/Ext3#Size_limits
http://en.wikipedia.org/wiki/Btrfs
http://en.wikipedia.org/wiki/Ntfs#Scalability

Urządzenia wirtualne

Jak wspomniano w komentarzach, istnieją dodatkowe uwagi dotyczące urządzeń wirtualnych:

  • W przypadku rzadko przydzielanych dysków wirtualnych inne metody, takie jak używane przez, zerofreebędą szybsze (choć w przeciwieństwie catdo ddtego i nie jest to standardowe narzędzie, na którym można polegać w prawie każdym systemie operacyjnym uniksopodobnym).

  • Należy pamiętać, że wyzerowanie bloku na rzadkim urządzeniu wirtualnym może nie wyczyścić bloku na podstawowym urządzeniu fizycznym , w rzeczywistości posunę się aż do stwierdzenia, że ​​jest mało prawdopodobne - menedżer dysków wirtualnych po prostu spowoduje, że blok nie będzie już używany dzięki czemu można go później przypisać do czegoś innego.

  • Nawet w przypadku urządzeń wirtualnych o stałym rozmiarze możesz nie mieć żadnej kontroli nad tym, gdzie fizycznie żyje urządzenie, aby można go było w dowolnym momencie przenieść wokół jego bieżącej lokalizacji lub na nowy zestaw dysków fizycznych, a najbardziej można wyczyścić bieżącą lokalizację, a nie wszelkie poprzednie lokalizacje, w których mógł znajdować się blok w przeszłości.

  • W przypadku powyższych problemów na urządzeniach wirtualnych: o ile nie kontrolujesz hosta (hostów) i nie możesz wykonać bezpiecznego czyszczenia nieprzydzielonego miejsca po wyczyszczeniu dysków na maszynie wirtualnej lub przeniesieniu urządzenia wirtualnego, nic nie możesz zrobić po tym fakt. Jedynym rozwiązaniem jest zastosowanie pełnego szyfrowania dysku od samego początkuwięc przede wszystkim nic niezaszyfrowanego nie jest zapisywane na nośniku fizycznym. Oczywiście w maszynie wirtualnej nadal może być wymagane wymazanie wolnego miejsca. Zauważ również, że FDE może sprawić, że rzadkie urządzenia wirtualne będą o wiele mniej przydatne, ponieważ warstwa wirtualizacji nie może tak naprawdę zobaczyć, które bloki są nieużywane. Jeśli warstwa systemu plików systemu operacyjnego wysyła polecenia przycinania do urządzenia wirtualnego (tak jakby to był dysk SSD), a kontroler wirtualny je interpretuje, może to rozwiązać ten problem, ale nie znam żadnych okoliczności, w których tak się dzieje i szerzej dyskusja na ten temat jest sprawą gdzie indziej (jesteśmy już blisko omijania pierwotnego pytania, więc jeśli to wzbudziło twoje zainteresowanie, niektóre eksperymenty i / lub dalsze pytania mogą być w porządku).

David Spillett
źródło
4
Najprostsze zerowanie można najwyraźniej również wykonać za pomocą secure-deletenarzędzi: użycie sfill -llzzmniejsza całą procedurę do jednego przejścia, które zapisuje tylko „0”.
foraidt
To zajmuje chwilę. Czy to naprawdę najszybszy sposób? Wydaje mi się, że zapisanie GB danych zajmie zawsze trochę czasu ...
endolith
2
@endolith: jeśli chcesz zwolnić wolne miejsce w aktywnym systemie plików, nie możesz ominąć potrzeby zapisywania tak dużej ilości danych przez obciążenie systemu plików. Narzędzia bezpiecznego usuwania sugerowane przez fnord_ix mogą być szybsze, ponieważ są zoptymalizowane do tego typu zadań.
David Spillett,
2
@endolith: z opisu na stronie podręcznika spodziewam się, że wariant zerofree jest szybszy tylko dla rzadko przydzielanych dysków wirtualnych, w rzeczywistości może być wolniejszy na dyskach wirtualnych o rzeczywistym lub stałym rozmiarze, jeśli wykonuje odczyt przed zapisaniem w celu potwierdzenia, że ​​blok nie ma treści. Balonowanie dysku wirtualnego również nie powinno się zdarzyć, ponieważ większość rzadkich sterowników dysków przyjmuje wszystkie zera, ponieważ „nie przydzielaj tego bloku”. Również cati ddsą dostępne w prawie każdym systemie UNIX-a-like OS ponieważ są one uważane standardowych narzędzi, gdzie zerofreeprawdopodobnie nie jest, chyba że zostało wyraźnie dodał.
David Spillett,
1
@endolith: powiedziawszy to, zerofreez pewnością zadziałałoby, rzecz jasna, że ​​„cały system plików tymczasowo pełny” wspomniany na stronie podręcznika (prawie, ale nie do końca złagodzony przez small.file jiggery pokery w moich przykładach) jest prawdziwą troską jeśli robisz to w aktualnie aktywnym systemie i zerofreerzeczywiście byłby szybszy w konkretnej instancji, jest on zoptymalizowany dla: rzadko przydzielonych wirtualnych urządzeń blokowych. Chociaż ze względów bezpieczeństwa nie można polegać na żadnym czyszczeniu urządzenia wirtualnego: jedyną prawdziwą odpowiedzią w tym przypadku jest pełne szyfrowanie urządzenia od samego początku.
David Spillett,
45

OSTRZEŻENIE

Byłem zszokowany liczbą plików, które photorec może pobrać z mojego dysku, nawet po wyczyszczeniu.

To, czy istnieje większe bezpieczeństwo w wypełnianiu „wolnej przestrzeni” tylko 1 raz 0x00 lub 38 razy różnymi kabalistycznymi standardami, jest raczej dyskusją akademicką. Autor przełomowego artykułu z 1996 roku o niszczeniu napisał epilog, mówiąc, że jest to przestarzałe i niepotrzebne w przypadku współczesnego sprzętu. Nie ma udokumentowanego przypadku fizycznego zastąpienia zer zerami i odzyskania ich później.

Prawdziwym kruchym linkiem w tej procedurze jest system plików . Niektóre systemy plików rezerwują miejsce do specjalnego użytku i nie są udostępniane jako „wolne miejsce”. Ale twoje dane mogą tam być . Obejmuje to zdjęcia, osobiste wiadomości e-mail w postaci zwykłego tekstu, cokolwiek. Właśnie google zarezerwowałem + spację + ext4 i dowiedziałem się, że 5% mojej homepartycji jest zarezerwowane. Wydaje mi się, że w tym miejscu photorecznaleziono tak wiele moich rzeczy. Wniosek: metoda niszczenia nie jest najważniejsza, nawet metoda wieloprzebiegowa nadal pozostawia dane na miejscu .

Możesz spróbować # tune2fs -m 0 /dev/sdn0przed montażem. (Jeśli będzie to partycja root po ponownym uruchomieniu, upewnij się, że uruchomisz ją -m 5lub -m 1po odmontowaniu).

Ale nadal, w ten czy inny sposób, może pozostać trochę miejsca.

Jedynym naprawdę bezpiecznym sposobem jest wyczyszczenie całej partycji, ponowne utworzenie systemu plików, a następnie przywrócenie plików z kopii zapasowej.


Szybki sposób (zalecane)

Uruchom z katalogu w systemie plików, który chcesz wyczyścić:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file

Uwagi: celem małego pliku jest skrócenie czasu, w którym wolne miejsce jest całkowicie zerowe; celem synchronizacji jest upewnienie się, że dane są rzeczywiście zapisane.

To powinno wystarczyć większości ludzi.

Wolna droga (paranoik)

Nie ma udokumentowanego przypadku odzyskiwania danych po powyższym czyszczeniu. W miarę możliwości byłoby to drogie i wymagające zasobów.

Jeśli jednak masz powód, by sądzić, że tajne agencje wydałyby dużo zasobów na odzyskanie plików, powinno to wystarczyć:

dd if=/dev/urandom of=random.small.file bs=1024 count=102400
dd if=/dev/urandom of=random.file bs=1024
sync ; sleep 60 ; sync
rm random.small.file
rm random.file

To zajmuje znacznie więcej czasu.

Ostrzeżenie. Jeśli wybrałeś sposób paranoiczny, po tym nadal będziesz chciał wykonać szybkie czyszczenie, a to nie jest paranoja. Obecność czysto przypadkowych danych jest łatwa i tania do wykrycia i budzi podejrzenie, że są to faktycznie dane zaszyfrowane. Możesz umrzeć pod torturami za nie ujawnienie klucza deszyfrującego.

Bardzo wolna droga (szalony paranoik)

Nawet autor przełomowego artykułu o niszczeniu z 1996 roku napisał epilog, mówiąc, że jest to przestarzałe i niepotrzebne dla współczesnego sprzętu.

Ale jeśli masz jeszcze dużo wolnego czasu i nie masz nic przeciwko marnowaniu dysku z dużą ilością nadpisywania, oto:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
sync ; sleep 60 ; sync
shred -z zero.small.file
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
shred -z zero.file
sync ; sleep 60 ; sync
rm zero.file

Uwaga: jest to zasadniczo równoważne z użyciem narzędzia bezpiecznego usuwania.


Przed edycją ten post został przepisany przez Davida Spilletta. Polecenie „cat” powoduje wyświetlenie komunikatu o błędzie, ale nie mogę pisać komentarzy do postów innych osób.

użytkownik39559
źródło
Możesz komentować posty innych osób o reputacji 50 .
Gnoupi,
1
catOczekuje się komenda dać „brak miejsca” błąd w moich przykładów, na końcu jej biegu. Możesz to ukryć, przekierowując stderr na, /dev/nulljeśli jest to problem. Zwykle używam pvzamiast tego catlub dddo tego typu rzeczy, aby uzyskać przydatne wskazanie postępu.
David Spillett
4
...raises the suspicion that it is actually encrypted data. You may die under torture for not revealing the decryption key.Heh, właśnie o tym myślałem. To chyba oznacza, że ​​jestem paranoikiem ...
Navin
2
Root zawsze może korzystać z zarezerwowanego miejsca. Więc jeśli wykonasz zerowanie jako root, będziesz mógł wypełnić również 5% zarezerwowanego miejsca; tunefs jest niepotrzebny. Nadal można sobie wyobrazić, że w innych częściach systemu plików mogą znajdować się dane.
Nate Eldredge
1
@NateEldredge Czy masz jakieś źródło, które wskazywałoby, że dduruchomienie jako root daje dostęp do większej ilości systemu plików niż ddbez root? Chcę wierzyć, że to prawda, ale w tej chwili nie widzę powodu.
Hashim
27

W Ubuntu istnieje narzędzie zerofree:

http://manpages.ubuntu.com/manpages/natty/man8/zerofree.8.html

   zerofree — zero free blocks from ext2/3 file-systems

   zerofree  finds  the  unallocated, non-zeroed blocks in an ext2 or ext3
   filesystem (e.g. /dev/hda1) and fills them with zeroes. This is  useful
   if  the  device  on  which this file-system resides is a disk image. In
   this case, depending on the type of disk image, a secondary utility may
   be  able  to  reduce the size of the disk image after zerofree has been
   run.

   The usual way to achieve  the  same  result  (zeroing  the  unallocated
   blocks)  is to run dd (1) to create a file full of zeroes that takes up
   the entire free space on the drive, and then delete this file. This has
   many disadvantages, which zerofree alleviates:

      ·  it is slow;

      ·  it makes the disk image (temporarily) grow to its maximal extent;

      ·  it  (temporarily)  uses  all  free  space  on  the disk, so other
         concurrent write actions may fail.

   filesystem has to be unmounted or mounted  read-only  for  zerofree  to
   work.  It  will exit with an error message if the filesystem is mounted
   writable. To remount the  root  file-system  readonly,  you  can  first
   switch to single user runlevel (telinit 1) then use mount -o remount,ro
   filesystem.

Sprawdź także ten link o zerofree: Utrzymywanie rzadkich obrazów systemu plików - pochodzi od jego autora - Rona Yorstona (9 sierpnia 2012)

osgx
źródło
3
Ważne jest, aby system plików był odmontowany lub zamontowany tylko do odczytu, aby zeroofree działało.
AntonioK,
1
Byłoby miło dołączyć informacje o tym, jak to zrobić w systemie plików root. Mam wrażenie, że to nie zadziała, ponieważ trzeba będzie odmontować system plików, jednocześnie uruchamiając narzędzie z tego systemu plików.
Ant6n
To także pochodzi z CentOS
davidgo
3

Oto jak to zrobić za pomocą GUI.

  1. Zainstaluj BleachBit
  2. Uruchom jako root, klikając Aplikacje - Narzędzia systemowe - BleachBit jako Administrator.
  3. W preferencjach powiedz, które ścieżki chcesz. Ogólnie dobrze je zgaduje. Chcesz dołączyć jedną ścieżkę do zapisu dla każdej partycji. Ogólnie jest to / home / nazwa użytkownika i / tmp, chyba że są to te same partycje, w którym to przypadku wystarczy wybrać jedną.
  4. Zaznacz pole System - Wyczyść wolne miejsce na dysku.
  5. Kliknij Usuń.

Przewaga BleachBit nad dd (co poza tym jest bardzo miłe) polega na tym, że gdy dysk jest w końcu zapełniony, BleachBit tworzy małe pliki, aby wyczyścić i-węzły (które zawierają metadane, takie jak nazwy plików itp.).


źródło
Sprawdź kod python opensource Bleachbit do usuwania własnego dysku z dysku.
shadowbq
2

Używam dddo przydzielania jednego lub więcej dużych plików, aby wypełnić wolne miejsce, a następnie korzystam z bezpiecznego narzędzia do usuwania.

Aby przydzielić pliki za pomocą dd spróbuj:

dd if=/dev/zero of=delete_me bs=1024 count=102400

Spowoduje to wygenerowanie pliku o nazwie delete_me100 MB. (Oto bs„rozmiar bloku” ustawiony na 1k i countjest to liczba bloków do przydzielenia.)

Następnie użyj ulubionego narzędzia bezpiecznego usuwania (używam shred) z tak utworzonych plików.

UWAGA: buforowanie oznacza, że ​​nawet jeśli zrobisz cały dysk, możesz nie uzyskać absolutnie wszystkiego!


Ten link zaleca scrubwymazywanie wolnego miejsca. Nie próbowałem tego.

dmckee
źródło
Och, jeśli pamięć mi służy, próbowałem scrubraz i to uszkodziło cały system plików. Na szczęście miałem poczucie, że najpierw eksperymentowałem na testowym systemie plików, a NIE na moich prawdziwych danych.
landroni
2

Przetrzyj dysk z maksymalną prędkością.

Typowe instrukcje szyfrowania dysku w dzisiejszych czasach podpowiedzą, aby najpierw wyczyścić dysk.

Poniższe polecenie wypełni twój dysk tekstem szyfrowanym AES.

Użyj płyty CD na żywo, jeśli chcesz wyczyścić główny dysk rozruchowy.

Otwórz terminal i podnieś swoje uprawnienia:

sudo bash

Wymieńmy wszystkie dyski w systemie, aby były bezpieczne:

cat /proc/partitions

UWAGA: Zamień /dev/sd{x}na urządzenie, które chcesz wyczyścić.

OSTRZEŻENIE: To nie jest dla amatorów! Możesz uniemożliwić uruchomienie systemu !!!

sudo openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero > /dev/sd{x}

Jestem zdumiony, jak szybko to jest.

Roger Lawhorn
źródło
2

Prawdopodobnie masz już zainstalowany pakiet GNU coreutils w swoim systemie. Zapewnia niszczenie polecenia .

dkaylor
źródło
4
Shred nie wyczyści nieużywanego miejsca na dysku bez uprzedniego przekształcenia go w pliki ...
dmckee,
2

Możesz wyczyścić wolne miejsce, korzystając z pakietu bezpiecznego usuwania.

W tym pakiecie można znaleźć sfillnarzędzie, które służy do bezpiecznego usuwania danych znajdujących się na dostępnej przestrzeni dyskowej na nośnikach w bezpieczny sposób, którego nie mogą odzyskać złodzieje, organy ścigania ani inne zagrożenia.

Aby zainstalować pakiet bezpiecznego usuwania w systemie Linux (Ubuntu), zainstaluj go za pomocą następującego polecenia:

$ sudo apt-get install secure-delete

Następnie, aby usunąć dane bez wolnego miejsca, spróbuj wykonać następujące polecenie:

sfill -f -v -ll /YOUR_MOUNTPOINT/OR_DIRECTORY

Gdzie / YOUR_MOUNTPOINT / OR_DIRECTORY jest twoim punktem montowania ( df -h, mount) lub katalogiem, aby wyczyścić wolne miejsce.

Przeczytaj instrukcję na stronie http://manpages.ubuntu.com/manpages/hardy/man1/sfill.1.html

kenorb
źródło
1

użyj dd i po prostu wyzeruj wolne miejsce. to mit, że dane muszą być wielokrotnie zapisywane (wystarczy zapytać Petera Guntmanna) i dane losowe, w przeciwieństwie do 1, wtedy 0 oznacza nienaturalną aktywność. efektem końcowym jest czysty dysk ze znacznie krótszym czasem pisania. poza tym programy bezpiecznego usuwania nie mogą zagwarantować, że nawet zastąpią prawdziwy plik na nowoczesnych systemach plików (zapisanych w dzienniku). zrób sobie przysługę i zrób zdjęcie, zeskanuj dysk, aby zobaczyć bałagan, wyczyść go za pomocą 1 i opcjonalnie zerami, aby wyglądał nietknięty. jeśli photorec nadal znajdzie rzeczy, pamiętaj, że skanuje wszystko, co dostępne, więc zrób to ponownie ostrożnie z użytkownikiem root.

pamiętaj, że cia / fbi / nsa nie ma fantazyjnej maszyny, która może odczytać aktualny stan twoich bitów mediów magnetycznych. to był po prostu artykuł napisany dawno temu. „co-jeśli”. wystarczy wyczyścić tylko raz.

Fred
źródło
1
Jest kilka interesujących rzeczy, które powiedziałeś, ale czy rzeczywiście masz jakieś źródła, które mogłyby poprzeć te informacje? Trudno uwierzyć, że całe to nadpisywanie jest bezużyteczne. Popraw też swój post, trudno jest czytać z taką interpunkcją.
gronostaj
@gronostaj: „To mit, że dane muszą być wielokrotnie zapisywane”, przynajmniej w przypadku wielu współczesnych dysków, udowodniono, że współczesne dyski są co najmniej potwierdzone. Wszystkie te 30+ przepustki zalecane przez Gutmanna nie są już wymagane, co potwierdza sam autor.
Karan
1

Łatwiej jest używać peelingu :

scrub -X dump

Spowoduje to utworzenie dumpfolderu w bieżącej lokalizacji i utworzenie pliku do momentu zapełnienia dysku. Możesz wybrać wzór za pomocą -popcji ( nnsa|dod|bsi|old|fastold|gutmann).

Zainstalowanie szorowania nie jest łatwe ( zobacz fora Ubuntu na ten temat ), ale po zakończeniu instalacji masz naprawdę PROSTE i wydajne narzędzie.

FMaz008
źródło
Jeśli pamięć mi służy, próbowałem scrubraz i to uszkodziło cały system plików. Na szczęście miałem poczucie, że najpierw eksperymentowałem na testowym systemie plików, a NIE na moich prawdziwych danych.
landroni
Nie wiem, co zrobiłeś lub co się stało, ale szoruj w zasadzie utwórz nowy plik, aż wypełni system plików. Nie jest odtwarzany z istniejącym plikiem, ani nie usuwa żadnego z nich (przynajmniej nie polecenia, które wydałem) ...
FMaz008
1
W rzeczy samej. Próbowałem scrub -X dump_diri wydaje się, że działało ładnie. BTW, instalacji na Ubuntu 14.04 jest bardzo prosta: apt-get install scrub.
landroni
1

Oto skrypt „sdelete.sh”, którego używam. Zobacz komentarze, aby uzyskać szczegółowe informacje.

# Install the secure-delete package (sfill command).

# To see progress type in new terminal:
# watch -n 1 df -hm

# Assuming that there is one partition (/dev/sda1). sfill writes to /.
# The second pass writes in current directory and synchronizes data.
# If you have a swap partition then disable it by editing /etc/fstab
# and use "sswap" or similar to wipe it out.

# Some filesystems such as ext4 reserve 5% of disk space
# for special use, for example for the /home directory.
# In such case sfill won't wipe out that free space. You
# can remove that reserved space with the tune2fs command.
# See http://superuser.com/a/150757
# and https://www.google.com/search?q=reserved+space+ext4+sfill

sudo tune2fs -m 0 /dev/sda1
sudo tune2fs -l /dev/sda1 | grep 'Reserved block count'

sudo sfill -vfllz /

# sfill with the -f (fast) option won't synchronize the data to
# make sure that all was actually written. Without the fast option
# it is way too slow, so doing another pass in some other way with
# synchronization. Unfortunately this does not seem to be perfect,
# as I've watched free space by running the "watch -n 1 df -hm"
# command and I could see that there was still some available space
# left (tested on a SSD drive).

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file

sudo tune2fs -m 5 /dev/sda1
sudo tune2fs -l /dev/sda1 | grep 'Reserved block count'
Czarek Tomczak
źródło
1

Znalazłem proste rozwiązanie, które działa w systemie Linux i MacOS. Przejdź do folderu głównego dysku i uruchom następujące polecenie:

for i in $(seq 1 //DISKSPACE//); do dd if=/dev/zero of=emptyfile${i} bs=1024 count=1048576; done; rm emptyfile*;

gdzie // DISKSPACE // to rozmiar w GB twojego dysku twardego.

Enrico
źródło
0

Czasami używam tego bash one-liner:

while :; do cat /dev/zero > zero.$RANDOM; done

Kiedy zaczyna mówić, że dysk jest pełny, wystarczy nacisnąć Ctrl+ Ci usunąć utworzone zero.*pliki.

Działa w każdym systemie, bez względu na ograniczenia rozmiaru pliku.
Zignoruj ​​wszelkie cat: write error: File too largebłędy.

Nicolas Raoul
źródło
0

To nie jest odpowiedź! Tylko komentarz dla tych, którzy chcą skorzystać pv... więc nie zawracaj sobie głowy głosowaniem.

W Linux Mint 17.3 możesz użyć pv( widok potoku ), aby uzyskać postęp pisania. Na przykład:

# Install pv (pipe view)
sudo apt-get install pv

# Write huge file of approximate size of /dev/sdb, using urandom data:
pv --timer --average-rate --progress --numeric --eta --interval 5 --size "$(blockdev --getsize64 /dev/sda )" /dev/urandom >rand.file

Zaletą jest to, że otrzymujesz pasek postępu, ETA i ciągle aktualizowaną prędkość transmisji. Wadą jest to, że jest zapisany w jednym wierszu, a gdy dysk jest pełny (zwracając błąd), znika. Dzieje się tak, ponieważ pełny rozmiar jest przybliżony, ponieważ system operacyjny prawdopodobnie użyje dysku, gdy trwa ta bardzo długa operacja, szczególnie na woluminie systemu operacyjnego.

Na bardzo starym HD uzyskuję szybkość transmisji około 13 MB / s przy użyciu /dev/urandomi około 70 MB / s przy użyciu /dev/zero. To prawdopodobnie poprawiłoby się jeszcze bardziej, gdy używasz surowego ddlub cat, i nie pv.

not2qubit
źródło
-13

Po usunięciu pliku z rejestru systemu plików dane pozostające na dysku twardym są pozbawioną znaczenia sekwencją jedynek i zer. Jeśli chcesz zastąpić tę bezsensowną sekwencję inną bezsensowną sekwencją, mogę doradzić niektórym produktom komercyjnym, jak bezpiecznie wymazać dyski, takie jak Arconis.

Ilya Biryukov
źródło
22
Ciągłe fragmenty wcześniejszej zawartości pliku nadal pozostają na dysku i są dalekie od sensu, jeśli surowe dane na dysku są sprawdzane bezpośrednio.
Alex B,