Рейтинг:1

Индикатор выполнения/значок загрузки при создании хэша MD5 для USB

флаг cm

Я пытаюсь создать индикатор выполнения или какой-то значок загрузки, чтобы показать, что создается хеш, а не пустой экран, на котором ничего не происходит... Это то, что у меня есть до сих пор:

if [[ $hashing != "y" && $hashing != "Y" ]]; тогда
                        эхо -е "\n"
                        sudo dd if=dev/"$source" | md5sum
                                читать -r сравнить результат
                                        я=1
                                                сп="/-\|"
                                                эхо -н ''
                                                пока правда
                                                делать
                                                        printf "\b${sp:i++%${#sp}:1}"
                                                сделано
                                        выход        
                    фи ;;

Это использует вращающееся колесо для представления значка загрузки. И это работает, используя то, что выше. А на данный момент нет? Не уверен, что порядок неправильный или я что-то упускаю. Любая помощь будет большой спасибо

#!/бин/баш
#Clone_Command
пока правда
    делать
    судо -с
    эхо "==========================="
    эхо "Команда клонирования"
    эхо "==========================="
    эхо -е "\n"
    
    эхо -е "\n"
    
    echo "Введите 1 для исходного устройства"
    echo "Введите 'a' для хэширования исходного устройства"
    echo "Введите 2 для целевого устройства"
    echo "Введите 3, чтобы вывести список всех доступных дисков"
    echo "Введите 4, чтобы выполнить команду dd"
    echo "Введите 5, чтобы сравнить хеши MD5"
    echo "Введите q для выхода"
    эхо -е "\n"
    echo "ВНИМАНИЕ, ПЕРЕЧИСЛЕНИЕ ВСЕХ ДИСКОВ ТРЕБУЕТСЯ ПЕРЕЗАГРУЗИТЬ СЦЕНАРИЙ"
    эхо -е "\n"
    echo -e "Введите свой выбор\c"
    читать -r выбор
    случай "$выбор" в
        р) выход;
        1) echo -e "Введите исходное устройство '/dev/---'
                
Введите последние 3 буквы устройства, например, sdf или sdb и т. д.»

            прочитать -r источник ;;
            
        a) echo -e "Хеширование этого устройства может занять некоторое время в зависимости от его размера"
                эхо -е "\n"
                echo -e "Нажмите Enter, если хотите хешировать это устройство"
                
                читать -r хеширование 
                
                        if [[ $hashing != "y" && $hashing != "Y" ]]; тогда
                        эхо -е "\n"
                        sudo dd if=dev/"$source" | md5sum
                                читать -r сравнить результат
                                        я=1
                                                сп="/-\|"
                                                эхо -н ''
                                                пока правда
                                                делать
                                                        printf "\b${sp:i++%${#sp}:1}"
                                                сделано
                                        выход        
                    фи ;;
            
        2) echo -e "Введите целевое устройство "/dev/---"
                
Введите последние 3 буквы устройства, например, sdf или sdb и т. д.»

            читать -r пункт назначения ;;
            
        3) echo -e "Нажмите Enter, чтобы вывести список всех доступных дисков \c"
            читать -r ответ
        если [[ $answ != "y" && $answ != "Y" ]]; тогда
        чистый
        sudo lshw -диск класса
        выход
        фи ;;
        
        4) echo -e "Это отформатирует $destination. Если вы хотите продолжить, нажмите Enter\c"  
            читать -r ответ
        если [[ $ans != "y" && $ans != "Y" ]]; тогда
        эхо -е "\n"
            sudo dd if=/dev/"$source" of=/dev/"$destination" bs=4096 status=progress
            выход
        фи ;;
        
        5) echo -e "Если вы хотите сравнить хэш MD5 обоих USB, нажмите "Enter"\c"
                читать -r сравнить
        если [[ $compare != "y" && $compare != "Y" ]]; тогда
               эхо -е "\n"
               echo -e "Обратите внимание, что это не быстрый процесс"
               эхо -е "н"
               md5sum -c <<<"$compareresult /dev/$destination"
        фи ;;
    эсак
сделано            
sudodus avatar
флаг jp
Какое программное обеспечение или данные находятся на USB-накопителе? Ты сделал это сам? Или вы хотите проверить что-то, что вы установили из файла образа или файла iso? Что вы планируете прочитать в `compareresult`? -- Спиннер запускается *после* завершения md5sum. Я предлагаю перевести его в фоновый режим (с помощью `&`) и проверить завершение процесса или перевести счетчик в фоновый режим. -- Альтернативой является создание файла изображения (возможно, это то, что вам нужно), а затем запуск `md5sum` на этом файле. -- Другой альтернативой является использование `pv` (представление прогресса) вместо `dd`.
флаг cm
@sudodus USB-накопитель состоит из PDF-файлов, документов Word и т. Д. На нем также есть шифрование битлокатора. Я надеялся, что `compareresult` возьмет созданный хэш md5 всего USB-накопителя для проверки на клонированном USB-накопителе, что, я не думаю, не работает, лол. Что касается размещения счетчика в фоновом режиме, где бы я это добавил? Я также добавлю весь сценарий, чтобы его было легче понять.
bac0n avatar
флаг cn
Вы должны получить свои вкладки и пространство, чтобы оно выглядело слишком жалким.
Рейтинг:0
флаг jp

Просмотр прогресса с пв

Существует общая проблема с вашей концепцией, потому что USB-накопители имеют немного разные размеры, даже если номинальный размер одинаков, и это повлияет на md5sum всего устройства.

  • если ты проверьте md5sum каждого раздела, вы можете проверить, что оригинал и клонированная копия совпадают.
  • Альтернативой является сохранить файл изображения и использовать md5sum и размер изображения применить на палках (проверив с помощью dd точно такое же количество байтов, как и в файле образа).

Вместо спиннера можно использовать пв, просмотр прогресса, например

$ sudo pv /dev/sdc | md5sum
29,8 ГБ 0:13:46 [37,0 МБ/с] [================================= ==============>] 100%            
2372da0e77d754a912078af8e47b36c9 -
$ 

Может быть лучше проверить только соответствующие разделы,

$ lsblk -f /dev/sdc
ИМЯ FSTYPE МЕТКА UUID ТОЧКА МОНТАЖА
sdc                                                           
ââsdc1                                                        
ââsdc2 vfat 34D9-D113                            
ââsdc3 ext4 3c66d05d-bc02-4a1e-baca-e227a161e345 
ââsdc4 crypto_LUKS 371f0cbc-3f6f-49dd-9fc4-4cdf91cb15c9 

в данном случае раздел №4,

$ sudo pv /dev/sdc4 | md5sum
1,66 ГБ 0:00:46 [36,2 МБ/с] [================================= ==============>] 100%            
35d33ae006c90b47b2e7b9aacb7f9bd7 -

Пожалуйста, не забудьте размонтировать разделы на USB-накопителе перед проверкой md5sum.

Клонирование диска с ремнем безопасности

С помощью mkusb-dus который также использует пв если установлен и смывать часы следить за ходом операции клонирования. Предположим, что исходный диск сдкс, бег

душ /dev/sdx

Это поможет вам определить правильный целевой диск (поможет вам избежать перезаписи неправильного диска), поэтому вам не нужно указывать цель в командной строке.

флаг cm
Благодарим за помощь в этом. Можно ли использовать `pv` для чего-то еще или он предназначен исключительно для создания хэша? Так как это был бы хороший индикатор выполнения, показывающий ход клонирования флешки.
sudodus avatar
флаг jp
Вы можете передать через `pv`, так что да, вы можете использовать его для чего угодно. Но при записи на медленные носители, например. USB-накопители, в ОЗУ будет буферизация, и вам также следует запустить `синхронизацию` и подождать, пока буферы будут очищены. В пакете [mkusb](https://help.ubuntu.com/community/mkusb) есть скрипт `watch-flush`, который вы можете использовать отдельно, если хотите.-- И вы можете использовать `mkusb-dus` для клонирования флешки и просмотра прогресса (встроено в mkusb).
sudodus avatar
флаг jp
Обратите внимание на другие инструменты клонирования и специальную функцию «резервное копирование таблицы разделов» таблиц разделов GUID. Подробнее об этом читайте по [этой ссылке](https://askubuntu.com/questions/958242/fastest-way-to-copy-hdd/958248#958248).
флаг cm
Пытался заставить Clonezilla работать, но по какой-то причине у меня не получилось... Может вернуться к нему, но я уже так вложился в создание собственного сценария, что могу просто продолжить то, что у меня есть :D. Спасибо за вашу помощь
sudodus avatar
флаг jp
@cameron.g, добро пожаловать и удачи с вашим собственным сценарием :-) / Если хотите, вы можете позаимствовать что-то из моего mkusb; это в основном баш./
sudodus avatar
флаг jp
@bac0n, Вы нашли ошибку в mkusb? Извините, но я не понимаю. Пожалуйста, объясните контекст.
sudodus avatar
флаг jp
@ bac0n, спасибо за предупреждение. Я проверю это, но был бы счастлив, если бы вы сказали мне, что вы нашли :-)
bac0n avatar
флаг cn
@sudodus Вероятно, есть файл с именем, например, `a$` (тонкий до нуля, но все же) `grep [az]$` будет расширяться до `grep a$` (подстановка), что, вероятно, нежелательно. Шаблон следует заключать в кавычки, чтобы избежать расширения глобуса.
sudodus avatar
флаг jp
@ bac0n, я [пытался] процитировать все «шаблоны» grep в текущих версиях mkusb: mkusb-dus и mkusb-plug. См. https://github.com/sudodus/tarballs или, если вы используете mkusb: обновите через `ppa:mkusb/unstable` до версии 12.7.2. Если/когда у вас будет время, проверьте, не нашли ли вы какую-нибудь проблемную команду, которую я еще не определил и не исправил.
bac0n avatar
флаг cn
Конечно ..........

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.