Это можно сделать через
find dir -type f -exec grep -H '+ ID$' {} +
Это найдет все обычные файлы в каталоге dir
или ниже, а затем запустит grep -H '+ ID$'
пакетами из максимально возможного количества файлов. Результат будет содержать как имя файла, совпадающего с регулярным выражением, так и строки из совпавшего файла.
Чтобы получить только имена файлов, используйте -l
вместо -H
с grep
, а чтобы получить только совпадающие строки, используйте вместо этого -L
.
Регулярное выражение + ID$
будет соответствовать любой строке файла, содержащей точно такую же строку + ID
в самом конце строки.
Или без find
, но с grep
, который может выполнять рекурсию в подкаталоги:
grep -R '+ ID$' dir
В системах с grep
, не выполняющим-H
(это не -стандартная опция ), вместо этого вы можете использовать
find dir -type f -exec grep '+ ID$' /dev/null {} +
Если вам нужны только совпадающие строки (и отсутствие имен файлов )в такой системе, cat
файлы вместе и grep,:
find dir -type f -exec cat {} + | grep '+ ID$'
Как root, просто cat
раздел на другой раздел:cat /dev/sdXn > /dev/sdYi
или в файл:cat /dev/sdXn > backup.img
Или в файл или раздел на другой машине:cat /dev/sdXn | ssh user@host 'cat > backup.img'
Вы могли бы использовать dd
вместо cat
, но для этого нет веской причины:
dd if=/dev/sdXn of=backup.img
Или, если вам нужен индикатор выполнения во время копирования и/или контроль над объемом буферизации, используемым во время копирования, вы можете использоватьpv
:
pv /dev/sdXn > backup.img
Если раздел прочитал ошибки -, вы можете использовать ddrescue
вместоcat
:
ddrescue /dev/sdXn /dev/sdYi
или
ddrescue /dev/sdXn backup.img
ddrescue
не будет писать на стандартный вывод (или читать со стандартного ввода, а также ), поэтому, если вы хотите, чтобы это backup.img
было на другом компьютере, вам придется скопировать его (, например. с помощьюscp
)после этого или запишите его на монтирование NFS.
Или, как упомянул пользователь 1133275 в комментарии, можно использовать замену процесса:
ddrescue /dev/sdXn >(ssh user@host 'cat > backup.img')
Наконец, если вам нужна сжатая, монтируемая файловая система, вы можете использоватьqemu-img
:
qemu-img convert -c -O qcow2 /dev/sdXn backup.qcow2
Для установки:
qemu-nbd --connect=/dev/nbd0 /path/to/backup.qcow2
mount /dev/nbd0 /mnt
И qemu-img
, и qemu-nbd
находятся в пакете qemu-utils
. Кстати, если вы сделали образ всего диска, а не только раздела, вы могли бы запустить свою старую систему как виртуальную машину в новой системе.
Другой вариант — просто установить второй диск и установить на него Debian 10. Затем вы можете просто смонтировать старый диск где-нибудь в новой системе. Или даже двойная -загрузка между Debian 9 и Debian 10.
Лично я бы порекомендовал копию файла (, например. с tar
или rsync
или даже cp -a
), а не с резервной копией образа. Это полезнее,могут быть легко извлечены в любое место, и не тратят место или время на копирование пустых или неиспользуемых секторов.
резервное копирование образа (почти всегда )худший способ резервного копирования файловой системы.
e2image
можно использовать для создания образа файловой системы ext4, при этом копируются только те сектора, которые используются:
e2image -ra /dev/sda1 /path/to/file.img
file.img
будет создан как разреженный файл, поэтому он будет занимать только то пространство, которое действительно используется в файловой системе, хотя его видимый размер будет отражать емкость файловой системы.
Вы также можете использовать e2image
для создания изображения QCOW2:
e2image -Qa /dev/sda1 /path/to/file.qcow2
Это создаст компактный файл, который все еще можно смонтировать.
Оба изображения могут быть сжаты, хотя в результате получается файл, который нельзя смонтировать напрямую.
ваш раздел ext4 смонтирован как/whatever
mkisofs -o /somehwere_else/whatever.iso /whatever
теперь у вас есть большой what.iso . Очевидно, вам придется помнить о дисковом пространстве, куда вы его перемещаете.
чтобы получить доступ к этому iso, вы должны просто сделать
mount -o loop /somewhere/whatever.iso /anywhereyoulike/mywhateveriso/
все, что было в вашей папке /whatever
, теперь будет доступно чтение -только в папке/anywhwereyoulike/mywhateveriso/
Тот факт, что у вас есть раздел ext4
, почти не имеет значения, потому что вы будете сбрасывать эти данные в контейнер , который будет иметь другой формат файловой системы . Таким образом, были ли это данные в разделе ext4, xfs или btrfs, не имеет значения, потому что в этот момент у вас уже есть поддержка файловой системы ядра Linux для доступа к ним в первую очередь.
Как только вы поместите свои данные в этот iso-контейнер через mkisofs , который довольно универсален, к этим данным теперь можно получить доступ практически из любого места, поскольку isofs универсален... если ваш компьютер может читать cd/dvd [iso9660/udf], после чего вы сможете получить доступ к своему файлу what.iso. Создание.iso сделает его очень портативным.
использование cat
или tar
или dd
сохранит файловую систему, которая может быть проблематичной