losetup -P
автоматизация образов с несколькими разделами
Как смонтировать образ диска из командной строки? | Unix & Linux Stack Exchange упоминается losetup -P
, и вот несколько удобных функций Bash для дальнейшей автоматизации. Использование:
$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2
$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there
$ sudo losetup -l
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO
/dev/loop1 0 0 0 0 /full/path/to/my.img
$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0
Источник:
los() (
img="$1"
dev="$(sudo losetup --show -f -P "$img")"
echo "$dev"
for part in "$dev"?*; do
if [ "$part" = "${dev}p*" ]; then
part="${dev}"
fi
dst="/mnt/$(basename "$part")"
echo "$dst"
sudo mkdir -p "$dst"
sudo mount "$part" "$dst"
done
)
losd() (
dev="/dev/loop$1"
for part in "$dev"?*; do
if [ "$part" = "${dev}p*" ]; then
part="${dev}"
fi
dst="/mnt/$(basename "$part")"
sudo umount "$dst"
done
sudo losetup -d "$dev"
)
Данные, возвращаемые при чтении после обрезки (с использованием fstrim
или любого другого подобного инструмента или опции mount
)зависят от устройства :некоторые будут возвращать случайные данные, некоторые будут возвращать неизменные не -нулевые данные, некоторые будут возвращать нули. Вы можете запустить hdparm -I
на устройствах ATA, чтобы определить, какой из этих вариантов применим. :он покажет «Детерминированное чтение данных после TRIM» для второго, «Детерминированное чтение ZERO после TRIM» для третьего, в противном случае применяется первый.
Для вашего конкретного -случая использования другие инструменты могут быть более подходящими; например, если вы представляете себе файловые системы Ext2/3/4, e2image -ra
создаст образ резервной копии, содержащий только используемые блоки, а e2image -Qa
создаст образ QCOW2, содержащий только используемые блоки..