Як розпакувати та видалити зображення диска на SD-карту за допомогою однієї команди?


15

Я перебуваю під такими обмеженнями:

  • У мене .zipна комп’ютері є 1,0 ГБ файл, який містить один файл, зображення диска raspbian. Якщо не стискається, цей файл розміром 3,2 ГБ і названий 2015-11-21-raspbian-jessie.img.
  • Завантаживши поштовий файл, у мене на комп’ютері трохи менше 1,0 ГБ місця для зберігання, не вистачає місця для отримання зображення на мій комп'ютер.
  • Цей файл потрібно розпакувати та записати на SD-карту, використовуючи звичайну стару dd.

Чи можна мені записати зображення на SD-карту за цими обмеженнями?

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


Я розумію, що міг би просто витягнути zip-файл на зовнішню флешку, але це веселіше. Я хочу вирішити це для вирішення проблеми (та досвіду навчання)!
IQAndreas

3
Якщо ваша SD-карта є пристроєм /dev/sdh, запустіть unzip -p file.zip >/dev/sdh. (Я знаю, що використання ddтрадиційного, але це не обов’язково.)
John1024

Ага. Це б спрацювало без dd? Я вважав, що потрібен буде параметр Розмір блоку.
CRThaze

2
Так, це працює без dd. У минулому розмір блоку був дуже важливим під час запису на стрічки. Для дисків це не має значення.
John1024

1
@TheCzar Окрім стрічок, параметр розміру блоку до ddможе лише втрачати дані або сповільнювати (або в рідкісних випадках трохи прискорити, якщо досить великий). Забудьте dd, це дуже рідко корисно.
Жил "ТАК - перестань бути злим"

Відповіді:


24

Використання unzip -p:

unzip -p 2015-11-21-raspbian-jessie.zip 2015-11-21-raspbian-jessie.img | dd of=/dev/sdb bs=1M

Код працює, і ні мій жорсткий диск, ні моя ОЗУ не закінчується. Все добре поки що.
IQAndreas

5
Або просто unzip -p … >/dev/sdb.
Жил "ТАК - перестань бути злим"

1
@Gilles окрім недоліків, ddіноді корисний із sudo:unzip -p ... | sudo dd of=/dev/sdb bs=1M
yaegashi

5
@yaegashi unzip -p … | sudo 'cat >/dev/sdb'Але я вважаю за краще, sudo chown $USER /dev/sdbщо дає мені додаткову можливість перевірити, що я пишу на потрібний пристрій.
Жил "ТАК - перестань бути злим"

Це прекрасно працювало! Майте на увазі, якщо я редагую саме те саме ім'я файлу, якщо хтось просто хоче скопіювати та вставити команду?
IQAndreas

0

Після невеликої боротьби з колишнім рішенням:

 unzip -p ~/Downloads/2020-02-05-raspbian-buster-lite.zip | sudo dd of=/dev/disk2 bs=1m

або, якщо ви хочете побачити прогрес і ви встановили pv:

 unzip -p ~/Downloads/2020-02-05-raspbian-buster-lite.zip | pv | sudo dd of=/dev/disk2 bs=1m
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.