Как 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
), а не с резервной копией образа. Это полезнее,могут быть легко извлечены в любое место, и не тратят место или время на копирование пустых или неиспользуемых секторов.
резервное копирование образа (почти всегда )худший способ резервного копирования файловой системы.
Вы можете редактировать переменную dirstack
.
function insertd {
emulate -L zsh
typeset -i n=0
while [[ $1 == [+-]<-> ]]; do
n=$1
shift
done
if (($# != 1)); then
echo 1>&2 "Usage: insertd [+N|-N] DIR"
return 3
fi
dirstack=($dirstack[1,$n] $1 $dirstack[$n,-1])
}
Если вы хотите добавить это поведение к самому pushd
, вы можете сделать его функцией.
function pushd {
if [[ $1 == -n ]]; then
shift
insertd "$@"
else
builtin pushd "$@"
fi
}
Эта простая версия не обрабатывает комбинации -n
и другой опции точно так же, как bash.
Вы даже можете редактировать переменную напрямую.
vared dirstack