Đây là một bài đăng lại được sửa đổi và mở rộng nhiều câu trả lời của tôi cho câu hỏi trước đây của bạn:
sfill
từ secure-delete
gói có thể làm những gì bạn muốn.
Không giống như zerofree (chỉ hoạt động với các hệ thống tệp ext2, ext3 và ext4), sfill sẽ hoạt động với bất kỳ hệ thống tệp nào.
ví dụ
sfill -l -l -z /mnt/X
Trang chủ sfill / safe-xóa bây giờ dường như đã biến mất, nhưng nó được đóng gói cho debian và ubfox. có lẽ các distro khác quá. nếu bạn cần mã nguồn, có thể tìm thấy nó trong kho lưu trữ của debian nếu bạn không thể tìm thấy nó ở bất kỳ nơi nào khác.
LƯU Ý: sfill chỉ hoạt động trên một hệ thống tập tin được gắn kết. Nếu bạn không điền các tệp hình ảnh từ hệ thống máy chủ thay vì từ trong VM, bạn sẽ cần phải gắn hình ảnh fs trên máy chủ. Phương pháp chính xác khác nhau tùy thuộc vào loại tệp hình ảnh (ví dụ: qcow2 hoặc thô).
Gắn hình ảnh 'thô' là dễ dàng và đơn giản. Chỉ cần sử dụng kpartx
trên tệp hình ảnh để tạo một thiết bị loopback và / dev / mapper / mục cho mỗi phân vùng có thể được gắn riêng lẻ.
đây là tập lệnh một phần được sửa đổi từ một đoạn tập lệnh mà tôi sử dụng để gắn hình ảnh đĩa cứng có thể khởi động mạng (được sử dụng để cập nhật bios trên các máy mà flashrom không hoạt động):
image="myrawimagefile.img"
# use kpartx to build /dev/mapper device nodes
KP=$(kpartx -a -v "$image")
# now mount each partition under ./hd/
for p in $(echo "$KP" | awk '/^add map/ {print $3}') ; do
dm="/dev/mapper/$p"
fp=$(echo "$p" | sed -r -e 's/^loop[0-9]+//')
mkdir -p "./hd/$fp"
mount "$dm" "./hd/$fp"
sfill -l -l -v "./hd/$fp"
umount "$dm"
done
# now remove the loopback device and /dev/mapper entries
kpartx -d "$image"
LƯU Ý: nó giả sử mọi phân vùng trong ảnh đều có thể gắn kết. đúng trong trường hợp sử dụng của tôi (một hình ảnh hd freedo với một phân vùng). không đúng nếu một trong các phân vùng là, trao đổi không gian. Phát hiện các phân vùng như vậy và sử dụng dd về 0, phân vùng trao đổi được để lại như một bài tập cho người đọc :)
Phương pháp này, hoặc một biến thể của nó, cũng hoạt động với khối lượng LVM.
Nếu hình ảnh của bạn là qcow thì bạn có thể sử dụng qemu-nbd
công cụ từ qemu-utils
gói, nó sẽ hiển thị tệp hình ảnh và phân vùng của nó dưới dạng thiết bị khối mạng - ví dụ / dev / nbd0 / dev / ndb0p1 - có thể được sử dụng theo cách tương tự với / thiết bị dev / mapper ở trên.
Có thể dễ dàng hơn và ít rắc rối hơn (nhưng tốn nhiều thời gian hơn) để sử dụng qemu-img
để chuyển đổi từ qcow thành raw, sử dụng phương thức cho phần thô ở trên và sau đó chuyển đổi hình ảnh thô đã sửa đổi thành qcow2 đã nén. Điều này có thể sẽ dẫn đến hình ảnh nhỏ hơn một chút so với sử dụng qemu-nbd vì bạn sẽ nén hình ảnh qcow2 mới khi nó được tạo.
sfill
gợi ý ? Có vẻ như nó không yêu cầu extX.