Як стерти вільний простір на диску в Linux?


145

Коли файл видаляється, його вміст все ще може залишатися у файловій системі, якщо явно не перезаписано чимось іншим. wipeКоманда може надійно стирати файли, але , здається, не дозволяє прати вільний дисковий простір не використовується будь-якими файлами.

Що я повинен використовувати для досягнення цього?


Єдиним безпечним рішенням може бути збереження файлів в іншому місці, витирання всього розділу, відтворення файлової системи та відновлення файлів. Я запускав фоторепортаж і був вражений тим, скільки матеріалів можна отримати навіть після витирання вільного місця. Компромісне рішення полягає в переміщенні лівої межі вашої секції на 6% від її розміру після витирання, очевидно, вільного місця.
користувач39559

Відповіді:


107

Попередження: Сучасні апаратні диски / SSD та сучасні файлові системи можуть видаляти дані в місцях, де ви не можете їх видалити, тому цей процес все ще може залишити дані на диску. Єдині безпечні способи витирання даних - це команда ATA Secure Erase (якщо вона реалізована правильно) або фізичне знищення. Також див. Як я можу надійно стерти всю інформацію на жорсткому диску?

Ви можете використовувати набір інструментів, що називаються безпечно-видалити.

sudo apt-get install secure-delete

Це чотири інструменти:

srm- надійно видаліть наявний файл
smem- надійно видаліть сліди файлу з оперативної пам’яті
sfill- витріть увесь простір, позначений як порожній на жорсткому диску,
sswap- витріть усі дані з вашого місця обміну.

З чоловічої сторінки srm

srm призначений для безпечного видалення даних на носіях, які не можуть бути відновлені злодіями, правоохоронними органами чи іншими загрозами. Алгоритм очищення заснований на роботі "Безпечне видалення даних з магнітної та твердотільної пам'яті", представленій на 6-му симпозіумі з безпеки Пеніта Гутмана, одного з провідних цивільних криптографів.

Процес безпечного видалення даних srm відбувається так:

  • 1 прохід з 0xff
  • 5 випадкових проходів. /dev/urandomвикористовується для безпечного RNG, якщо він є.
  • 27 проходів із спеціальними значеннями, визначеними Пітером Гутманом.
  • 5 випадкових проходів. /dev/urandomвикористовується для безпечного RNG, якщо він є.
  • Перейменуйте файл у випадкове значення
  • Обрізати файл

В якості додаткової міри безпеки файл відкривається в режимі O_SYNC і після кожного передачі fsync()виконується дзвінок. srmзаписує 32k блоки з метою швидкості, заповнюючи буфери кеш-дисків, щоб змусити їх змивати та перезаписувати старі дані, що належали до файлу.


5
Важко знайти поточну "офіційну" домашню сторінку безпечного видалення. Можливо, старіша версія стверджує, що звітів про помилки немає, але в той же час немає відкритої системи пошуку помилок, де я міг би повідомити про виявлену помилку. Домашня сторінка безпечного видалення також вказує, що вона може не стирати всі невикористані блоки даних, залежно від використовуваної файлової системи, що відповідає дійсності.
користувач39559

11
З сучасними жорсткими дисками (об’ємом більше 20 ГБ) робити даремно кілька пропусків і чекати віків абсолютно марно. Тож установка спеціалізованих інструментів також стала марною (що може пояснити, чому безпечне видалення не має більше домашньої сторінки). Просто зробіть це з відповідного розділу: cat /dev/zero >nosuchfile; rm nosuchfile.
mivk

1
@mivk: Чому марно робити більше одного проходу? І навіщо використовувати / dev / zero замість / dev / random? Це пов'язано зі швидкістю?
naught101

5
Використання / dev / zero набагато швидше. Якщо ви пишете вільний простір з / dev / random, ядро ​​повинно генерувати всі ці випадкові дані на льоту. Це цікавий спосіб спостерігати за тим, як ваш середній навантаження підскочить до максимуму ...
dafydd


71

Найшвидший спосіб, якщо вам потрібен лише один пропуск і просто хочете замінити все нулями, це:

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

(запустити з каталогу у файловій системі, яку ви хочете стерти)
( syncкоманда - це параноя міра, яка забезпечує, що всі дані записуються на диск - інтелектуальний кеш-кеш може випрацювати, що він може скасувати запис для будь-яких відкладених блоків при від’єднанні файлу. )

Під час цієї операції настане час, коли у файловій системі взагалі не буде вільного місця, що може скласти десятки секунд, якщо отриманий файл великий і фрагментований, тому для видалення потрібен певний час. Щоб скоротити час, коли вільний простір повністю дорівнює нулю:

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

Цього має бути достатньо, щоб хтось не міг читати старий вміст файлу без дорогої криміналістичної операції. Для дещо більш безпечного, але повільнішого варіанту замініть /dev/zeroна /dev/urandom. Для більшої параноїя виконайте кілька кроків /dev/urandom, хоча якщо вам знадобиться стільки зусиль, shredутиліта з пакету 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

Зауважте, що вище наведений невеликий файл подрібнюється перед створенням більшого, тому його можна видалити, як тільки більший завершиться, замість того, щоб чекати, коли він буде подрібнений, залишивши у файловій системі нульовий вільний простір на час, який займає. Процес подрібнення займає тривалий час над великим файлом, і якщо ви не намагаєтесь приховати щось від NSA, насправді не потрібно IMO.

Все вищезазначене має працювати в будь-якій файловій системі.

Обмеження розміру файлу:

Як зазначає DanMoulding у коментарі нижче, це може мати проблеми з обмеженням розміру файлів у деяких файлових системах.

Для FAT32 це, безумовно, викликає занепокоєння через обмеження файлу 2GiB: більшість томів більше, ніж це в наші дні (8TiB - обмеження розміру гучності IIRC). Ви можете подолати це, проклавши великий cat /dev/zeroвихідний вихід, splitщоб генерувати кілька менших файлів, і відповідно регулювати етапи клаптиків та видалення.

Що стосується ext2 / 3/4, це викликає занепокоєння: з блоком 4K за замовчуванням / загальним обмеженням розміру файлу є 2TiB, тому вам доведеться мати величезний об'єм, щоб це було проблемою (максимальний розмір гучності за цих умов становить 16TiB).

З (ще експериментальними) btrfs як максимальний розмір файлу, так і об'єм є великими 16EiB.

У NTFS в деяких випадках максимальна довжина файлу більша, ніж максимальна довжина гучності.

Початкові точки для отримання додаткової інформації:
http://en.wikipedia.org/wiki/Ext3#Size_limits
http://en.wikipedia.org/wiki/Btrfs
http://en.wikipedia.org/wiki/Ntfs#Scalability

Віртуальні пристрої

Як згадувалося в коментарях нещодавно, для віртуальних пристроїв є додаткові міркування:

  • Для рідко виділених віртуальних дисків інші методи, такі як ті, якими користуються, zerofreeбудуть швидшими (хоча на відміну від цього, catі ddце не стандартний інструмент, на який можна розраховувати, що він доступний майже в будь-якій ОС Unix-a).

  • Пам’ятайте, що обнулення блоку на розрідженому віртуальному пристрої може не стерти блок на базовому фізичному пристрої, адже я б хотів сказати, що навряд чи це - віртуальний диспетчер просто зробить блок як більше не використовується тож вона може бути виділена на щось інше пізніше.

  • Навіть для віртуальних пристроїв фіксованого розміру ви можете не контролювати, де пристрій фізично живе, щоб його можна було перемістити навколо поточного місця розташування або на новий набір фізичних дисків у будь-який час, і найбільше, що ви можете стерти, це поточне місцезнаходження, не будь-які попередні місця, в яких блок міг проживати раніше.

  • Для вищезазначених проблем на віртуальних пристроях: якщо ви не керуєте хостом (-ами) і не зможете захистити їх нерозподілений простір після цього, витираючи диски у вітрині чи переміщуючи віртуальний пристрій, ви нічого не можете з цим зробити після факт. Єдиним способом є використання повного шифрування диска з самого початкутому нічого незашифрованого не пишеться у фізичному носії в першу чергу. Звичайно, все ще може бути дзвінок про скасування вільного простору в межах VM. Зауважте також, що FDE може зробити розріджені віртуальні пристрої набагато менш корисними, оскільки шар віртуалізації насправді не може побачити, які блоки не використовуються. Якщо рівень файлової системи ОС надсилає віртуальні пристрої команд обрізки (ніби це SSD), а віртуальний контролер інтерпретує це, то це може вирішити це питання, але я не знаю жодних обставин, коли це насправді відбувається і в більш широких місцях обговорення цього питання є іншим (ми вже наближаємось до того, що виходити з теми для початкового питання, тому, якщо це викликало ваш інтерес, деякі експерименти та / або подальші запитання можуть бути в порядку).


4
Просте занулення, очевидно, може бути здійснено і з secure-deleteінструментами: використання sfill -llzзводить всю процедуру до одного проходу, який пише лише "0".
foraidt

Це займає певний час. Це справді найшвидший спосіб? Я думаю, що запис даних у ГБ завжди займе певний час ...
endolith

2
@endolith: якщо ви хочете звільнити вільний простір в активній файловій системі, ви не зможете обійти необхідність записувати стільки даних через накладні файлові системи. Засоби безпечного видалення, запропоновані fnord_ix, можуть бути швидшими, оскільки вони оптимізовані для цього типу завдань.
Девід Спіллетт

2
@endolith: з опису на сторінці man я б очікував, що варіант zerofree є лише швидшим для рідко виділених віртуальних дисків, адже він може бути повільнішим на реальних або віртуальних фіксованих розмірах, якщо він робить перед читанням перед записом щоб підтвердити, що в блоці немає вмісту. Повітряна куля для віртуального диска не повинна відбуватися, оскільки більшість розріджених драйверів приймають усі нулі, оскільки "не виділяти цей блок". Крім того , catі ddдоступні практично на будь-якій Unix-а-подібних ОС , оскільки вони вважаються стандартними інструментами , де , zerofreeймовірно, не , якщо він не був явно доданий.
Девід Спіллетт

1
@endolith: сказавши вище сказане, zerofreeбезумовно, спрацює, звичайно, "вся файлова система тимчасово повна", що згадується на сторінці "man" (майже, але не зовсім пом'якшена покерним файлом small.file в моїх прикладах), викликає справжнє занепокоєння. якщо ви робите це в активно діючій системі і zerofreeдійсно буде швидше в конкретному екземплярі, вона оптимізована для: рідко виділених пристроїв віртуального блоку. Хоча в цілях безпеки ви не можете покластися на будь-яке стирання на віртуальному пристрої: єдиний вірний відповідь у такому випадку - це шифрування повного пристрою з самого початку.
Девід Спіллетт

45

УВАГА

Мене вразило, скільки файлів фотореклам може отримати з мого диска навіть після витирання.

Чи є більше безпеки у заповненні "вільного простору" лише 1 раз 0x00 або 38 разів з різними кабалістичними стандартами - це більше академічна дискусія. Автор насіннєвої статті про подрібнення 1996 року написав собі епілог, в якому говорив, що це є застарілим і непотрібним для сучасного обладнання. Немає жодного документально підтвердженого випадку, коли дані фізично замінювали нулі та відновлювались після цього.

Справжньою крихкою ланкою в цій процедурі є файлова система . Деякі файлові системи резервують простір для спеціального використання, і він не стає доступним як "вільний простір". Але ваші дані можуть бути там . Це включає в себе фотографії, особисті текстові електронні листи, що завгодно. Я просто зарезервував Google + пробіл + ext4 і дізнався, що 5% мого homeрозділу було зарезервовано. Я здогадуюсь, що тут photorecзнайдено стільки моїх речей. Висновок: метод подрібнення не є найважливішим, навіть багатопрохідний метод все ще залишає дані на місці .

Ви можете спробувати # tune2fs -m 0 /dev/sdn0перед його монтажем. (Якщо це буде кореневий розділ після перезавантаження, переконайтеся, що запустіть -m 5або -m 1після його відключення).

Але все одно, так чи інакше, може залишитися місце.

Єдиний справді безпечний спосіб - стерти весь розділ, знову створити файлову систему, а потім відновити файли з резервної копії.


Швидкий шлях (рекомендується)

Запустіть з каталогу файлової системи, яку потрібно стерти:

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

Примітки: мета невеликого файлу - скоротити час, коли вільний простір повністю дорівнює нулю; мета синхронізації - переконатися, що дані фактично записані.

Це повинно бути досить добре для більшості людей.

Повільний шлях (параноїчний)

Немає жодного документально підтвердженого випадку відновлення даних після вищеописаного очищення. Це було б дорого і вимагати ресурсів, якщо це можливо взагалі.

Однак якщо у вас є підстави думати, що секретні органи витратять багато ресурсів на відновлення ваших файлів, цього має бути достатньо:

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

Це займає набагато більше часу.

Увага. Якщо ви вибрали параноїдальний шлях, після цього ви все-таки хочете зробити швидке протирання, і це не параноїя. Наявність чисто випадкових даних легко і дешево виявити, і викликає підозру, що це фактично зашифровані дані. Ви можете загинути під катуваннями за те, що не розкриєте ключ розшифровки.

Дуже повільний шлях (божевільний параноїк)

Навіть автор насіннєвої статті про подрібнення 1996 року написав епілог, в якому говорив, що це є застарілим і непотрібним для сучасного обладнання.

Але якщо все-таки у вас багато вільного часу і ви не проти витрачати свій диск з великою кількістю перезаписів, це відбувається:

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

Примітка: це по суті еквівалентно використанню інструмента безпечного видалення.


До редагування ця публікація була переписаною книгою Девіда Спіллета. Команда "cat" видає повідомлення про помилку, але я не можу писати коментарі до публікацій інших людей.


Ви можете коментувати публікації інших людей з 50 репутацією .
Gnoupi

1
catКоманда , як очікується , дати «немає вільного місця» помилки в моїх прикладах, в кінці його пробігу. Ви можете приховати це, переадресувавши stderr, /dev/nullякщо це проблема. Я зазвичай використовую pvзамість catабо ddдля такого роду речей, для того , щоб отримати індикацію корисного ходу.
Девід Спіллетт

4
...raises the suspicion that it is actually encrypted data. You may die under torture for not revealing the decryption key.Хе, саме так я думав. Я думаю, це означає, що я параноїк ...
Навін

2
Корінь завжди може використовувати зарезервоване місце. Отже, якщо ви виконаєте нульове заповнення як root, ви зможете заповнити також 5% зарезервованого простору; мелодії не потрібні. Зрозуміло, що в інших частинах файлової системи можуть бути дані.
Нейт Елдредж

1
@NateEldredge Чи є у вас джерело, яке вказувало б, що ddзапуск як root дає доступ до більшості файлової системи, ніж ddбез кореня? Я хочу вірити, що це правда, але наразі не бачу причин.
Хашим

27

Принаймні, в Ubuntu є утиліта, яка не є безкоштовною:

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.

Також перевірте це посилання про zerofree: Зберігання зображень файлової системи рідкісне - це від її автора - Ron Yorston (9 серпня 2012)


3
Важливо, щоб файльну систему потрібно було відключити або встановити лише для читання, щоб вона працювала нульово.
AntonioK

1
Було б непогано включити трохи інформації про те, як це зробити в кореневій файловій системі. Моє відчуття, що це не спрацює, тому що вам доведеться демонтувати файлову систему, одночасно запускаючи інструмент із зазначеної файлової системи.
Ant6n

Сюди ж доходить CentOS
davidgo

3

Ось як це зробити з графічним інтерфейсом.

  1. Встановіть BleachBit
  2. Запустіть як корінь, натиснувши Програми - Системні інструменти - BleachBit як адміністратор.
  3. У налаштуваннях скажіть, які шляхи ви хочете. Як правило, вони добре їх здогадуються. Ви хочете включити один шлях для запису для кожного розділу. Як правило, це / home / username та / tmp, якщо вони не є тим самим розділом, і в цьому випадку виберіть лише один.
  4. Поставте прапорець Система - Витріть вільний простір на диску.
  5. Натисніть Видалити.

Просування BleachBit над DD (що інакше дуже приємно) - коли диск остаточно заповнений, BleachBit створює невеликі файли, щоб стерти вставки (які містять метадані, як імена файлів тощо).


Перевірте код відкритого джерела python Bleachbit, щоб витерти вільну простір з диска для себе.
shadowbq

2

Я використовую ddдля виділення одного або декількох великих файлів, щоб заповнити вільний простір, а потім використовую утиліту безпечного видалення.

Для виділення файлів з dd спробуйте:

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

Це створить файл з назвою delete_meрозміром 100 Мб. (Ось bs"розмір блоку" встановлено в 1 к, і countце кількість блоків для виділення.)

Потім використовуйте улюблену утиліту безпечного видалення (я використовував shred) у створених файлах.

Але ПРИМІТКА ЦЕ: буферизація означає, навіть якщо ви робите весь диск, можливо, ви не отримаєте абсолютно все!


Це посилання рекомендує використовувати scrubдля вільного витирання місця. Не пробував.


О, якщо пам'ять слугує мені, я спробував scrubодин раз, і це пошкодило всю файлову систему. На щастя, я вперше експериментував на тестовій файловій системі, а не на своїх реальних даних.
landroni

2

Протріть привід на максимальній швидкості.

Типові інструкції щодо шифрування накопичувача в наш час підкажуть вам спочатку WIPE накопичувач.

Команда, що наведена нижче, заповнить ваш диск з шифротекстом AES.

Використовуйте живий компакт-диск, якщо вам потрібно витерти основний завантажувальний диск.

Відкрийте термінал і підвищуйте свої пільги:

sudo bash

Перелічимо всі диски в системі для безпечності:

cat /proc/partitions

ПРИМІТКА. Замініть /dev/sd{x}пристрій, який ви бажаєте витерти.

ПОПЕРЕДЖЕННЯ: Це не для любителів! Ви можете зробити вашу систему незавантаженою !!!

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}

Я приголомшений тим, наскільки це швидко.



2

Ви можете видалити вільний простір за допомогою пакета захищеного видалення.

У цьому пакеті ви можете знайти sfillінструмент, призначений для безпечного видалення даних, що знаходяться на доступному диску на носіях, які не можуть бути відновлені злодіями, правоохоронними органами чи іншими загрозами.

Щоб встановити захищений пакет видалення в Linux (Ubuntu), встановіть його за допомогою наступної команди:

$ sudo apt-get install secure-delete

Потім, щоб стерти дані без вільного місця, спробуйте виконати таку команду:

sfill -f -v -ll /YOUR_MOUNTPOINT/OR_DIRECTORY

Де / YOUR_MOUNTPOINT / OR_DIRECTORY - ваша точка монтажу ( df -h, mount) або каталог, щоб витерти вільний простір.

Прочитайте посібник на веб- сайті http://manpages.ubuntu.com/manpages/hardy/man1/sfill.1.html


1

використовуйте dd і просто нульовий простір. це міф, дані повинні бути надписані кілька разів (просто запитайте петера Гунтмана) і випадкові дані, на відміну від 1-х, а потім 0-х означає неприродну активність. тоді кінцевим результатом є чистий диск з меншим витраченим часом на написання. окрім того, захищені програми видалення не можуть гарантувати, що вони навіть перезаписують справжній файл у сучасних файлових системах (прокладені в журналі). зробіть собі прихильність і отримайте фоторекламу, скануйте свій привід, щоб побачити безлад, протріть його цифрами 1 і, можливо, нулями, щоб він виглядав не зачепленим. якщо фотореклам все-таки знайде матеріал, пам’ятайте, що він сканує все доступне, тому зробіть це ретельно ще раз із користувачем root.

пам’ятайте, що у cia / fbi / nsa немає фантазійної машини, яка може прочитати фактичний стан ваших бітів магнітного носія. це було всього лише папір, написаний давно. a "що-якщо". протирати потрібно лише 1 раз.


1
Ви сказали кілька цікавих речей, але чи є у вас насправді джерела для підтвердження цієї інформації? Важко повірити, що все те перезапис марне. Крім того, вдосконаліть свою публікацію, важко читати подібні розділові знаки.
gronostaj

@gronostaj: Заява про "це міф потрібно багато разів писати", твердження про сучасні накопичувачі принаймні було доведено кількома дослідженнями. Усі ці 30-ти пропусків, рекомендовані Гутманом, більше не потрібні, як це визнав і сам автор.
Каран

1

Простіше використовувати скраб :

scrub -X dump

Це створить dumpпапку в поточному місці та створить файл, поки диск не заповниться. Ви можете вибрати шаблон за допомогою -pпараметра ( nnsa|dod|bsi|old|fastold|gutmann).

Встановити скраб непросто ( див. Форуми Ubuntu щодо цього ), але як тільки установка завершена, у вас в руках дійсно ПРОСТИЙ та ефективний інструмент.


Якщо пам'ять слугує мені, я спробував scrubодин раз, і це пошкодило всю файлову систему. На щастя, я вперше експериментував на тестовій файловій системі, а не на своїх реальних даних.
landroni

Не знаєте, що ви зробили або що трапилося, але скраб в основному створює новий файл до тих пір, поки він не заповнить файлову систему. Він не грає з існуючим файлом, а також не видаляє жоден із них (принаймні не команду, яку я дав) ...
FMaz008

1
Справді. Спробував, scrub -X dump_dirі, схоже, добре працював. До речі, установка на Ubuntu 14.04 дуже просто: apt-get install scrub.
ландроні

1

Ось сценарій "sdelete.sh", який я використовую. Деталі див. У коментарях.

# 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'

1

Я знайшов просте рішення, яке працює в Linux та MacOS. Перемістіться у кореневій папці вашого диска та запустіть цю команду:

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

де // DISKSPACE // - розмір жорсткого диска в ГБ.


0

Я іноді використовую цей bash однолінійний:

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

Коли почне говорити, що диск заповнений, просто натисніть Ctrl+ Cі видаліть створені zero.*файли.

Він працює в будь-якій системі, незалежно від розміру файлу.
Ігноруйте будь-які cat: write error: File too largeпомилки.


0

Це не відповідь! Просто коментар для тих, хто бажає використати pv... так що не турбуйте голосування.

На Linux Mint 17.3 ви можете використовувати pv( перегляд труби ), щоб досягти прогресу написання. Наприклад:

# 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

Перевага тут полягає в тому, що ви отримуєте смужку прогресу, ETA і постійно оновлюється швидкість передачі даних. Недоліком є ​​те, що він пишеться на одному рядку, і коли диск заповнений (повертається помилка), він зникає. Це відбувається тому, що повний розмір є приблизним, оскільки ОС, швидше за все, буде використовувати диск під час цієї дуже довгої операції, особливо на обсягах ОС.

На дуже старий HD, я отримую швидкість передачі даних близько 13 Мбайт / с використанням /dev/urandom, і близько 70 МБ / с , при використанні /dev/zero. Це, ймовірно, ще більше покращиться при використанні сировини ddчи ні cat, і ні pv.


-13

Після того, як файл вийшов із запису файлової системи, дані, що залишаються на жорсткому диску, мають безглузду послідовність 1 та 0. Якщо ви хочете замінити цю безглузду послідовність на іншу безглузду послідовність, я можу порадити деякі комерційні продукти щодо безпечного стирання накопичувачів, наприклад, arconis.


22
Суміжні шматки попереднього вмісту файлу все ще залишаються на диску, і вони далеко не безглузді, якщо безпосередньо вивчити необроблені дані диска.
Алекс Б
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.