tùy chọn dd lệnh bs ở cuối đĩa


10

Nếu tôi đã sử dụng ddlệnh như sau:

dd if=/dev/zero of=/dev/sdX bs=16M

Điều gì xảy ra ở cuối đĩa nếu nó không phải là bội số chính xác của 16M? Điều đó có nghĩa là phần còn lại cuối cùng của đĩa không bằng không?

Tôi nhận thấy trong https://www.markanborn.net/howto/wiping-a-hard-drive-with-dd/ , ông viết rằng Chính phủ Hoa Kỳ sử dụng

dd if=/dev/urandom of=/dev/sda bs=8b conv=notrunc

Có phải conv=notrunctùy chọn là cách để đảm bảo mọi byte cuối cùng bị xóa?

dd 

Câu trả lời:


12

Toàn bộ thiết bị đầu ra bị xóa cho dù kích thước của nó có phải là bội số của kích thước khối bạn chuyển đến ddhay không.

Các notrunccờ không có tác dụng khi đầu ra là một tập tin thiết bị, vì cắt bỏ một tập tin thiết bị không có tác dụng. Nếu đầu ra là một tệp thông thường, nó sẽ có tác dụng là tệp đầu ra không bị cắt trước khi ghi, điều này trên một số hệ thống tệp có nghĩa là dữ liệu cũ bị ghi đè (trái ngược với việc ghi các khối dữ liệu mới và không để lại phần còn lại), tuy nhiên điều này sẽ không hữu ích vì thuộc tính này không được đảm bảo bởi tất cả các hệ thống tệp và hơn nữa lệnh sẽ không chỉ ghi đè lên tệp mà còn tiếp tục ghi cho đến khi nó lấp đầy đĩa đầu ra (hoặc một số lỗi khác xảy ra).

Thay vì sử dụng ddvà lo lắng về việc liệu bạn có đang sử dụng đúng cách hay không (như nó xảy ra, nó hoạt động trong trường hợp cụ thể này, nhưng nó phức tạpđôi khi không hoạt động ), chỉ cần sử dụngcat .

cat /dev/zero >/dev/sdX

Mặc dù có niềm tin phổ biến trên web, nhưng hoàn toàn không có phép thuật ddnào khiến nó phù hợp hơn với việc ghi vào đĩa. Điều kỳ diệu là trong các /devtập tin. Bất kỳ công cụ nào có thể đối phó với dữ liệu nhị phân, như bất kỳ công cụ hiện đại cathoặc nào head, đều có thể thực hiện cùng một công việc ddtrừ khi bạn chuyển các cờ như seekhoặc skip.

Lưu ý rằng một vấn đề được chia sẻ bởi ddcatlà khi hoạt động thành công, chúng sẽ xảy ra lỗi với không còn chỗ trống trên thiết bị (ENOSPC). Nếu bạn đặt tập lệnh này vào tập lệnh, bạn sẽ cần kiểm tra xem lỗi đó là ENOSPC hay sử dụng một phương pháp khác. Một phương pháp đáng tin cậy hơn là trước tiên xác định kích thước của thiết bị (ví dụ: sử dụng /proc/partitionstrong Linux), sau đó viết chính xác số byte đúng bằng một công cụ như head.

size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX

8

Không có vấn đề gì - ddghi vào cuối ( No space left on device), trừ khi nó hết đầu vào, bị giới hạn bởi count=xhoặc xảy ra lỗi khác (ví dụ: các thành phần xấu, cáp tệ, v.v.).

Nếu ghi đè toàn bộ blockdevice là mục tiêu của bạn, shredsẽ dễ sử dụng hơn.

shred -v -n 1 /dev/deleteme     # pseudorandom data
shred -v -n 0 -z /dev/deleteme  # zeroes

Hoặc cryptsetupđối với dữ liệu ngẫu nhiên có bước xác minh (số không được mã hóa thành dữ liệu ngẫu nhiên; dữ liệu ngẫu nhiên được giải mã trở lại số không).

Hoặc blkdiscardcho SSD.

Hoặc wipefsnếu đó chỉ là bắt đầu lại từ đầu, không buộc phải loại bỏ mọi thứ bạn từng lưu trữ trên ổ đĩa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.