Điểm:1

Thanh tiến trình/Biểu tượng đang tải trong khi tạo hàm băm MD5 cho USB

lá cờ cm

Tôi đang cố gắng tạo một thanh tiến trình hoặc một số loại biểu tượng tải để cho biết rằng hàm băm đang được tạo, thay vì một màn hình trống không có gì xảy ra... Đây là những gì tôi có cho đến nay:

if [[ $hashing != "y" && $hashing != "Y" ]]; sau đó
                        tiếng vang -e "\n"
                        sudo dd if=dev/"$source" | md5sum
                                đọc -r so sánh kết quả
                                        tôi = 1
                                                sp="/-\|"
                                                tiếng vang -n ''
                                                trong khi đúng
                                                làm
                                                        printf "\b${sp:i++%${#sp}:1}"
                                                xong
                                        lối ra        
                    không ;;

Điều này sử dụng một bánh xe quay để đại diện cho một biểu tượng tải. Và nó hoạt động bằng cách sử dụng những gì ở trên. Nhưng không phải lúc này sao? Không chắc liệu đơn đặt hàng có sai hay tôi thiếu thứ gì đó. Bất kỳ trợ giúp sẽ là tuyệt vời, cảm ơn

#!/bin/bash
#Clone_Command
trong khi đúng
    làm
    sudo -s
    tiếng vang "==========================="
    tiếng vang "Lệnh nhân bản"
    tiếng vang "==========================="
    tiếng vang -e "\n"
    
    tiếng vang -e "\n"
    
    echo "Nhập 1 cho thiết bị nguồn"
    echo "Nhập 'a' để băm thiết bị nguồn"
    echo "Nhập 2 cho thiết bị đích"
    echo "Nhập 3 để liệt kê tất cả các đĩa có sẵn"
    echo "Nhập 4 để thực hiện lệnh dd"
    echo "Nhập 5 để so sánh giá trị băm MD5"
    echo "Nhập q để thoát"
    tiếng vang -e "\n"
    echo "XIN LƯU Ý DANH SÁCH TẤT CẢ CÁC ĐĨA SẼ YÊU CẦU BẠN TẢI LẠI TẬP ĐOẠN"
    tiếng vang -e "\n"
    echo -e "Nhập lựa chọn của bạn \c"
    đọc -r lựa chọn
    trường hợp "$choice" trong
        q) thoát ra;;
        1) echo -e "Nhập thiết bị nguồn '/dev/---'
                
Nhập 3 chữ cái cuối cùng của thiết bị, ví dụ - sdf hoặc sdb, v.v."

            đọc -r nguồn ;;
            
        a) echo -e "Việc băm thiết bị này có thể mất một lúc tùy thuộc vào kích thước"
                tiếng vang -e "\n"
                echo -e "Nhấn enter nếu bạn muốn băm thiết bị này"
                
                đọc -r băm 
                
                        if [[ $hashing != "y" && $hashing != "Y" ]]; sau đó
                        tiếng vang -e "\n"
                        sudo dd if=dev/"$source" | md5sum
                                đọc -r so sánh kết quả
                                        tôi = 1
                                                sp="/-\|"
                                                tiếng vang -n ''
                                                trong khi đúng
                                                làm
                                                        printf "\b${sp:i++%${#sp}:1}"
                                                xong
                                        lối ra        
                    không ;;
            
        2) echo -e "Nhập thiết bị đích '/dev/---'
                
Nhập 3 chữ cái cuối cùng của thiết bị, ví dụ - sdf hoặc sdb, v.v."

            đọc -r đích ;;
            
        3) echo -e "Nhấn enter để liệt kê tất cả các đĩa có sẵn \c"
            đọc -r trả lời
        if [[ $answ != "y" && $answ != "Y" ]]; sau đó
        xa lạ
        sudo lshw -đĩa lớp
        lối ra
        không ;;
        
        4) echo -e "Điều này sẽ định dạng $destination. Nếu bạn muốn tiếp tục, hãy nhấn enter \c"  
            đọc -r ans
        if [[ $ans != "y" && $ans != "Y" ]]; sau đó
        tiếng vang -e "\n"
            sudo dd if=/dev/"$source" of=/dev/"$destination" bs=4096 status=progress
            lối ra
        không ;;
        
        5) echo -e "Nếu bạn muốn so sánh MD5 Hash của cả hai USB, hãy nhấn 'Enter'\c"
                đọc -r so sánh
        if [[ $so sánh != "y" && $so sánh != "Y" ]]; sau đó
               tiếng vang -e "\n"
               echo -e "Xin lưu ý đây không phải là một quá trình nhanh chóng"
               tiếng vang -e "n"
               md5sum -c <<<"$so sánh kết quả /dev/$destination"
        không ;;
    thoát hiểm
xong            
sudodus avatar
lá cờ jp
Phần mềm hoặc dữ liệu nào có trên ổ USB? Có phải bạn tự làm cái đó? Hay bạn muốn kiểm tra thứ gì đó mà bạn đã cài đặt từ tệp hình ảnh hoặc tệp iso? Bạn định đọc gì vào `so sánh`? -- Công cụ quay vòng bắt đầu *sau khi* md5sum kết thúc. Tôi khuyên bạn nên đặt nó vào nền (với `&`) và kiểm tra xem quá trình đã hoàn tất chưa hoặc đặt công cụ quay vòng vào nền. -- Một cách khác là tạo một tệp hình ảnh (dù sao đó cũng có thể là thứ bạn muốn) và sau đó chạy `md5sum` trên tệp đó. -- Một giải pháp thay thế khác là sử dụng `pv` (chế độ xem tiến trình) thay vì `dd`.
lá cờ cm
@sudodus Thanh USB được tạo thành từ pdf, tài liệu từ, v.v. Với mã hóa bitlocker trên đó. Tôi đã hy vọng `so sánh` sẽ sử dụng hàm băm md5 đã tạo của toàn bộ USB để xác minh đối với thanh USB được nhân bản, điều mà tôi không nghĩ là nó không làm được lol. Liên quan đến việc đặt công cụ quay vòng ở chế độ nền, tôi sẽ thêm cái này vào đâu? Tôi cũng sẽ thêm toàn bộ tập lệnh để dễ hiểu hơn.
bac0n avatar
lá cờ cn
Bạn phải lấy các tab và dung lượng của mình để nó trông thật khốn khổ.
Điểm:0
lá cờ jp

xem tiến trình với pv

Có một vấn đề chung với khái niệm của bạn vì các thanh USB có kích thước hơi khác nhau ngay cả khi kích thước danh nghĩa giống nhau và điều đó sẽ ảnh hưởng đến md5sum của toàn bộ thiết bị.

  • nếu bạn kiểm tra md5sum của mỗi phân vùng, bạn có thể kiểm tra xem bản gốc và bản sao chép có giống nhau không.
  • Một cách khác là lưu trữ tệp hình ảnh và sử dụng md5sum và kích thước của hình ảnh để áp dụng trên gậy (kiểm tra bằng dd chính xác số byte như trong tệp hình ảnh).

Thay vì một spinner bạn có thể sử dụng pv, xem tiến trình, ví dụ

$ sudo pv /dev/sdc | md5sum
29,8GiB 0:13:46 [37,0MiB/s] [================================================= ==============>] 100%            
2372da0e77d754a912078af8e47b36c9 -
$ 

Có thể tốt hơn nếu chỉ kiểm tra (các) phân vùng có liên quan,

$ lsblk -f /dev/sdc
TÊN FSTYPE LABEL UUID MOUNTPOINT
sdc                                                           
ââsdc1                                                        
ââsdc2 vfat 34D9-D113                            
ââsdc3 ext4 3c66d05d-bc02-4a1e-baca-e227a161e345 
ââsdc4 crypto_LUKS 371f0cbc-3f6f-49dd-9fc4-4cdf91cb15c9 

trong trường hợp này phân vùng #4,

$ sudo pv /dev/sdc4 | md5sum
1,66GiB 0:00:46 [36,2MiB/s] [================================================= ==============>] 100%            
35d33ae006c90b47b2e7b9aacb7f9bd7 -

Hãy nhớ để ngắt kết nối các phân vùng trên thanh USB trước khi kiểm tra md5sum.

Nhân bản ổ đĩa bằng đai an toàn

Bạn có thể sao chép từ một thanh USB này sang một thanh khác (hoặc thẻ hoặc SSD, bất kỳ thiết bị lưu trữ dung lượng lớn nào) bằng mkusb-dus mà cũng sử dụng pv nếu được cài đặt và xem-flush để theo dõi tiến độ của hoạt động nhân bản. Giả sử ổ đĩa nguồn là sđx, chạy

dus/dev/sdx

Nó sẽ giúp bạn xác định đúng ổ đĩa đích (giúp bạn tránh ghi đè nhầm ổ đĩa), do đó bạn không chỉ định đích trên dòng lệnh.

lá cờ cm
Đánh giá cao sự giúp đỡ về điều này. `pv` có thể được sử dụng cho bất kỳ mục đích nào khác không hay chỉ đơn thuần là để tạo hàm băm? Vì đây sẽ là một thanh tiến trình tuyệt vời để hiển thị tiến trình nhân bản thanh.
sudodus avatar
lá cờ jp
Bạn có thể chuyển qua `pv` nên vâng, bạn có thể sử dụng nó cho 'mọi thứ'. Nhưng khi ghi vào phương tiện chậm, v.d. USB, sẽ có bộ nhớ đệm trong RAM và bạn cũng nên chạy `sync` và đợi trong khi xóa bộ đệm. Trong gói [mkusb](https://help.ubuntu.com/community/mkusb) có một shellscript `watch-flush`, mà bạn có thể sử dụng riêng nếu muốn.-- Và bạn có thể sử dụng `mkusb-dus` để sao chép thanh và xem tiến trình (được tích hợp trong mkusb).
sudodus avatar
lá cờ jp
Vui lòng lưu ý các công cụ nhân bản khác và tính năng đặc biệt 'bảng phân vùng sao lưu' của bảng phân vùng GUID. Đọc thêm về nó tại [liên kết này](https://askubuntu.com/questions/958242/fastest-way-to-copy-hdd/958248#958248).
lá cờ cm
Đã cố gắng để Clonezilla hoạt động và vì một số lý do không hoạt động được.... Có thể xem lại nhưng tôi đã đầu tư vào việc xây dựng kịch bản của riêng mình nên tôi có thể tiếp tục với những gì mình có: D. Cảm ơn bạn đã giúp đỡ
sudodus avatar
lá cờ jp
@cameron.g, Bạn được chào đón và chúc may mắn với kịch bản của riêng bạn :-) /Bạn có thể mượn mọi thứ từ mkusb của tôi nếu muốn; nó chủ yếu là bash./
sudodus avatar
lá cờ jp
@bac0n, bạn đã tìm thấy lỗi trong mkusb chưa? Tôi xin lỗi, nhưng tôi không hiểu. Hãy giải thích bối cảnh.
sudodus avatar
lá cờ jp
@bac0n, Cảm ơn bạn đã thông báo. Tôi sẽ kiểm tra nó, nhưng sẽ rất vui nếu bạn cho tôi biết bạn đã tìm thấy gì :-)
bac0n avatar
lá cờ cn
@sudodus Có khả năng là có một tệp có tên, ví dụ: `a$` (slim to zero, but still) `grep [a-z]$` sẽ mở rộng thành `grep a$` (toàn cầu), điều này có thể không được mong muốn. Mẫu nên được trích dẫn để tránh mở rộng toàn cầu.
sudodus avatar
lá cờ jp
@bac0n, tôi đã [cố gắng] trích dẫn tất cả 'mẫu' grep trong các phiên bản hiện tại của mkusb: mkusb-dus và mkusb-plug. Xem https://github.com/sudodus/tarballs hoặc nếu bạn sử dụng mkusb: hãy nâng cấp qua `ppa:mkusb/unstable` lên phiên bản 12.7.2. Nếu/khi bạn có thời gian, vui lòng kiểm tra xem bạn có tìm thấy một số lệnh có vấn đề mà tôi chưa xác định và sửa không.
bac0n avatar
lá cờ cn
chắc chắn rồi ..........

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.