Большую часть времени лучшая команда для использования является lsof (“список открытые файлы”).
lsof +f -- /media/usb0
где /media/usb0
точка монтирования Карты памяти или другой файловой системы для размонтирования. +f --
говорит lsof рассматривать последующий аргумент как точку монтирования; это обычно, но не всегда, справляется самостоятельно, так, чтобы lsof /media/usb0
также работы. Это находит открытые файлы (даже несвязанные), файлы с отображенной памятью, текущие каталоги и некоторое более неясное использование. Необходимо будет выполнить команду как корень для получения информации о процессах других пользователей (и я думаю, что существуют нельды где lsof
должен быть выполнен как корень).
Существует использование, которое не найдет lsof; они являются редкими на съемных носителях. Они включают:
/foo
если /foo/bar
точка монтирования./foo
если /foo/bar
смонтированное блочное устройство или смонтированный циклом регулярный файл, или если это - источник Linux, связывают, монтируются.Другая команда, которая может служить в повышении, является термофиксатором, который только перечисляет PIDs процессов с открытыми файлами на устройстве:
fuser -m /media/usb0
Я не думаю, что можно сделать это на месте, но если у Вас есть достаточно пространства, это должно работать:
# Create the files that will hold your data
dd if=/dev/zero of=part-00 bs=1M count=4k
dd if=/dev/zero of=part-01 bs=1M count=4k
# Create the loop devices
losetup /dev/loop0 part-00
losetup /dev/loop1 part-01
# Create a RAID array
mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
# Copy the original filesystem
dd if=original-file-00 of=/dev/md0 bs=512
# Look at the records written value
dd if=original-file-01 of=/dev/md0 bs=512 seek=<sum of records written values so far>
# Mount the new filesystem
mount /dev/md0 /mnt
Вы не можете просто создать RAID-массив из исходных файлов, потому что диски RAID имеют определенный заголовок, где количество дисков, уровня RAID, и т.д. хранится. Если Вы делаете это, что часть Ваших исходных файлов будет перезаписана.
Можно использовать mdadm --build
для создания массива без метаданных, но затем действительно необходимо сделать резервное копирование сначала. Или если монтирование только для чтения достаточно:
losetup -r /dev/loop0 original-00
losetup -r /dev/loop1 original-11
mdadm --build /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
mount /dev/md0 /mnt
Почему Вы хотите сделать это? Если Ваша файловая система не может обработать> файлы на 4 ГБ, необходимо просто переключиться на нормальный.
Под BSD можно использовать опцию объединения смонтироваться. В соответствии с Linux можно дать попытку unionFS.
Самая близкая вещь, которую я знаю до сих пор к решению, состоит в том, чтобы создать VM VMware. Вы запускаете Linux живой CD как Rescatux или Knoppix, Вы создаете совместно используемую папку SMB на своем главном компьютере, Вы монтируете, что SMB совместно использует на Вашем VM и затем Вас dd
изображение в виртуальный HD. VMware по умолчанию сохраняет свои образы диска как файлы разделения, таким образом, это - самая близкая вещь к чтению непосредственно образа диска, разделенного на несколько файлов.
Позже, если Вы хотите получить доступ к файлам от своего главного компьютера, можно попытаться добавить второй виртуальный HD к изображению и скопировать файлы там. Затем Вы настраиваете совместно используемую папку SMB на VM и подключении к нему от Вашего хоста. Таким образом, можно, например, нарушить предел файла на 4 ГБ FAT32, если Вы используете iPod classic (который только groks fat32), или SD-карта Вашего смартфона (обычно, необходимо установить пользовательский ROM для использования Ext3 или NTFS на внешнем устройстве хранения данных, для этого Вы требуете телефона от популярного производителя как Samsung или Motorola, поэтому если у Вас есть китайский смартфон, Вы озадачены).
Это - по общему признанию не эффективное решение, однако, но так как я был ограничен, не будучи способен использовать любой FS кроме fat32 на моем iPod classic или моих смартфонах Samsung с ROM запаса, я обыскивал в значительной степени весь Интернет в прошлом и все еще не могу найти эффективное решение этого. Мне, возможно, даже придется записать это самому.
PS: Забыл упоминать, что, если Вы находитесь в Windows, это могло бы быть единственным способом сделать это.
Чтобы смонтировать разделенный образ диска (или образ раздела), вы должны использовать affuse
из afftools, которые в настоящее время поддерживаются здесь: https://github.com/sshock/AFFLIBv3
Итак, если у вас есть файл, разделите его на несколько подфайлов test_img.000, test_img.001, test_img.002, test_img.003, test_img.004, test_img.005, test_img.006, test_img.007, test_img. 008, test_img.009
, затем вы можете присоединиться к ним виртуально с помощью affuse
# affuse test_img.000 /mnt/combine
# ls -lh /mnt/combine
total 0
-r--r--r-- 1 root root 2.0G 1969-12-31 16:00 test_img.000.raw
(он объединяет все файлы вместе, начиная с файла 000, затем 001, 002,…)
И затем монтировать образ
mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test
Использование описано здесь и несколько примеров здесь . Страница руководства также доступна после компиляции и установки или здесь .
PS: Для меня affuse
работал, только если разделенные файлы имели размер, кратный 512 байтам.
Вы можете написать собственное расширение блочного запоминающего устройства (, представьте предохранитель -как расширение )и выполнять поиск в зависимости от адреса.
Здесь вы можете найти пример использования предохранителя.https://github.com/libfuse/python-fuse/blob/master/example/hello.py
truncate
вместоdd
поскольку это намного быстрее (это не выполняет фактическую запись к FS, но просто выделяет inodes и файл метки как просто содержащий дыру). – Maciej Piechotka 19.09.2011, 01:56