cut
отлично подходит для простых случаев, когда разделитель представляет собой один символ, и вы хотите вывести подмножество полей ввода в том же порядке (даже если я укажу -f3,2,1
, действует так же, как -f1,2,3
).
awk
однострочники гораздо более гибкие, например когда разделителем поля ввода может быть любой пробел ( awk
по умолчанию), или когда вы хотите выводить поля в другом порядке или в определенном формате.
Например, wc -l myfile | awk '{print $ 1}'
или ls -l file1 file2 | awk '{printf "% s,% s:% s \ n", $ 9, $ 7, $ 3}'
очень просты, но их трудно сделать с cut
.
Я согласен с предыдущими сообщениями о том, что поля / ключи в sort
сложно определить!
Поля в join
, похоже, работают так же, как в cut
, хотя в параметрах join
легко ошибиться.
Вы не упомянули типы файловых систем, но можете изменить UUID и сгенерировать случайные:
uuidgen
Затем вы можете изменить его в разделе. Для доп. -семейства...
tune2fs -U <output of uuidgen> /dev/sdb1
Дополнительную информацию см. на этой странице .
Обратите внимание, что на этом этапе вы также захотите изменить загрузчик (, если grub, то в большинстве случаев вы можете отредактировать /boot/grub/grub.cfg ), а также fstab, чтобы отразить изменения UUID.
По моему скромному мнению, одним из вариантов будет отключение внутреннего диска на время использования внешнего. IIRC, раньше для этого были переключатели (, например. коммутатор устанавливается в отсек 3,5" или 5,25" ).
Лучше отключить/отключить внутренний диск.
Но...
Фактически вы можете изменить UUID вашего резервного диска после резервного копирования. Не забудьте сделать это для каждого раздела. Например/dev/sdb1
:
# Generate a random UUID:
cat /proc/sys/kernel/random/uuid
7a5e6fad-4fa2-4177-b8a6-dfeeeb6289df
# Then use this for the partition UUID
tune2fs -U 7a5e6fad-4fa2-4177-b8a6-dfeeeb6289df /dev/sdb1
Затем в резервной копии.... Проверьте следующие файлы на наличие старых UUID и замените их новыми. Вам нужно будет заменить <distribution>
на вашу ОС:
/etc/fstab
/boot/grub/grub.cfg
/boot/efi/EFI/<distribution>/grub.cfg
Более сложной задачей будет убедить BIOS использовать внешний раздел EFI. Если вы не можете указать, какой диск использовать... Возможно, вам потребуется скопировать конфигурацию EFI на основной диск (, например:/boot/efi/EFI/debian/
на /boot/efi/EFI/backup/
), и установить ее в BIOS.
Я бы использовал LABELS в /etc/fstab
. Мне нравится такая настройка системы:
/etc/fstab
# <device> <dir> <type> <options> <dump> <fsck>
LABEL=EFI /boot vfat defaults 0 2
LABEL=SYSTEM / ext4 defaults 0 1
LABEL=DATA /home ext4 defaults 0 2
LABEL=SWAP none swap defaults 0 0
https://wiki.archlinux.org/index.php/fstab#File_system_labels
Это позволяет создавать клоны, не беспокоясь об изменении UUID.
Тогда просто каждый раз, когда вы будете вручную загружаться с внешнего жесткого диска через ваш BIOS
Я действительно сделал это сегодня утром! Мой ноутбук, на котором я это делал, использует устаревшую загрузку BIOS на основе MBR -(ThinkPad X201 Tablet ), но большинство этих шагов должны быть одинаковыми для (u )EFI и «устаревших» BIOS. Я делал подобное на Macintosh на основе EFI -в прошлом.
Чтобы обновить UUID нового диска, загрузитесь со старого диска и запустите (для раздела типа ext *):
tune2fs -U `uuidgen` /dev/sdb1
…если /dev/sdb1
— это раздел вашего нового диска с -по -по -UUID и вы загружаетесь с /dev/sda
.
Если он выдает ошибку, то, вероятно, он попросит вас запустить проверку файловой системы перед переименованием. Запустите команду tune2fs
, а затем снова запустите tune2fs.
Для других файловых систем вам нужно выяснить, как вы можете изменить UUID. Вот еще два распространенных:
btrfstune -U `uuidgen` /dev/sdb1
. xfs_admin -U `uuidgen` /dev/sdb1
, но это не так. На 100% уверен в этом, так как я никогда не использовал XFS лично. Повторите это для всех разделов на новом диске.
/etc/fstab
. Смонтируйте корневой раздел нового диска и отредактируйте /etc/fstab
, чтобы заменить UUID старого диска на новый UUID. Вы можете проверить, какие у вас новые UUID, запустив blkid
.
На этом этапе для временной однократной -загрузки на новый диск вы можете указать root=/dev/sdb1
(, если /dev/sdb1
является корневым разделом вашего нового диска )в параметрах ядра. В GRUB2,это так же просто, как нажать «e» на загрузочной записи Linux и прикрепить ее к концу строки, начинающейся с linux
. Если вся ваша установка Linux была на одном разделе (без отдельного домашнего раздела и т. д. ), вы можете сделать это с самого начала (до изменения UUID ).
Далее нам необходимо обновить загружаемый виртуальный диск. В качестве следующего шага я настоятельно рекомендую просто удалить исходный диск, если это возможно. Если вы можете это сделать, то при обновлении grub вы легко сможете избежать добавления старого диска в доступные записи в меню загрузки вашего нового диска.
В любом случае, как пользователь root, вы должны запустить (на Debian и его производных; Я считаю, что команда update-initrd
на некоторых других):
update-initramfs -u
Я не уверен, что это действительно требуется, мне стыдно признаться. Я сделал это, потому что «это не повредит», а на моем ноутбуке этого не произошло.
grub-install /dev/sdX
(где /dev/sdX — это диск, на который вы хотите переустановить загрузчик grub. Не указывайте раздел, например, /dev/sdX1 и т. д. — только укажите имя устройства ).
Благодаря этому мой клонированный диск загрузился без проблем с первой попытки. Я делал этот процесс более или менее таким же образом в прошлом, когда в последний раз мигрировал на диск большего размера.
Возможно, вам придется изменить приоритет загрузки ваших дисков в настройках BIOS/ (U )EFI, чтобы он автоматически использовал ваш диск, если он по-прежнему вызывает у вас проблемы.
Если у вас Mac, вы можете открыть Дисковую утилиту, вставить диск вместе с диском, который вы хотите создать. Щелкните диск, который вы только что вставили (, а не тот, который нужно скопировать ), а затем нажмите кнопку «Восстановить». В раскрывающемся меню выберите диск, который хотите скопировать, затем нажмите кнопку «ОК». Тогда у вас должен быть загрузочный диск!
не использовать d иск d отм. Почему, потому что, если у вас есть раздел размером 500 ГБ только с 1 ГБ данных, dd захватит бит за битом все 500 ГБ, когда все, что вам действительно нужно, это 1 ГБ. Это также представляет проблему того, как вы применяете 500 ГБ бит за битом к другому диску или разделу, который не имеет точно такого же размера. Лучший способ, который решает другие ваши проблемы с идентификатором диска и решает проблему загрузки, указывающую на неправильный идентификатор или метку диска,
/
раздела диска операционной системы, работающего в данный момент. Таким образом, у вас будет установлен этот загрузочный золотой диск, а на компьютере будет работать какой-то другой диск с операционной системой Linux. Установите свой золотой диск так, чтобы он содержал, например,
mkdir /mygolddisk_sb1
mkdir /mygolddisk_sb3
mount /dev/sdb1 /mygolddisk_sdb1
mount /dev/sdb3 /mygolddisk_sdb3
Теперь как root go и tar каждый раздел, который вам нужен; если размер раздела составляет 1000 ГБ, а у вас только 2 ГБ данных, вы получите только tar-файл размером 2 ГБ. Гораздо легче управлять. Это, однако, не делает его независимым от файловой системы, то есть, если ваш корневой раздел EXT4, и вы распаковываете его на новый раздел диска с чем-то другим, чем исходный тип файловой системы { EXT4 } скорее всего не загрузится. Если, например, исходная корневая файловая система была XFS, то создайте файловую систему на новом диске XFS, если старый корневой раздел диска был EXT2, то создайте новый корневой раздел диска EXT2.
cd /mygolddisk_sdb1
tar -cf /somewhere_else/mygolddisk_efi_vfat.tar *
cd /mygolddisk_sdb3
tar -cf /somewhere_else/mygolddisk_root_ext4.tar *
Смонтируйте новый или бывший в употреблении чистый диск; создать таблицу разделов (желательно GPT)
Создать раздел того же типа, из которого был создан раздел mygolddisk_efi_vfat.tar
;Теперь вы можете сделать этот раздел любого размера, если он достаточно велик для хранения данных. Сделайте то же самое для раздела SWAP, если хотите или нуждаетесь в этом. То же самое для корневого раздела /
, и теперь вы можете сделать его размером с остальную часть этого нового диска. Теперь вы получите что-то вроде
mygolddisk_efi_vfat.tar
— 15 МБ. mygolddisk_root_ext4.tar
mkdir /newdisk_Boot_partition
mkdir /newdisk_Root_partition
mount /dev/sdc1 /newdisk_Boot_partition
mount /dev/sdc3 /newdisk_Root_partition
cd /newdisk_Boot_partition
tar -xf /somewhere_else/mygolddisk_efi_vfat.tar .
cd /newdisk_Root_partition
tar -xf /somewhere_else/mygolddisk_root_ext4.tar .
К этому моменту вы скопировали только те данные, которые имеют отношение к вашему старому { золотому } диску. И это будет намного быстрее , чем выполнение dd
, потому что вы не копируете каждый бит, что ЧРЕЗВЫЧАЙНО расточительно. Также не переносятся проблемы файловой системы со старого диска . Но у вас осталась проблема having copied files referencing disk UUID or label of your old disk which is no longer relevant on some new disk
.
Вам просто нужно понять процесс загрузки, будь то EFI или GRUB. Кроме того, если вы используете таблицу разделов MBR в отличие от EFI, то работа с MBR создаст дополнительную сложность, связанную с необходимостью изменить загрузочный сектор диска, чтобы он загружался {не описывая, выходит за рамки}. Но используя EFI
и ELILO
в качестве примера для простоты, можно было бы сделать следующее
/etc/fstab
который будет содержать записи указывающие на старый диск, измените их (disk -id, label, uuid )на новый диск Это было сделано для простой настройки EFI и ELILO, это все, что нужно сделать.Если вы используете GRUB2 и имеете раздел /boot
, а также отдельный раздел /boot/efi
, вам нужно будет учитывать их конкретно и изменить необходимые файлы GRUB аналогичным образом... просто найдите любые ссылки на старый диск и измените их на новый диск.
Когда вы разбиваете, форматируете и монтируете свой новый диск, именно здесь вы либо узнаете, либо увидите его новую метку (, потому что вы создали его ), или его UUID, или его идентификатор scsi. Скопируйте этот идентификатор UUID или scsi -или метку вместо старого в /newdisk_Root_partition/etc/fstab
и в /newdisk_Boot_partition/efi/.../elilo.conf
или, если используете GRUB, в соответствующие файлы в /newdisk_Boot_partition
. Теперь новый диск будет правильно загружаться.
/dev/sda1
и /dev/sda3
соответственно. Это будет работать только в том случае, если этот диск будет называться sda , а будет , если это единственный и единственный диск, подключенный к компьютеру. Поэтому, когда возникают проблемы с использованием неправильного идентификатора UUID или scsi -, просто измените все на /dev/sda#и отключите все остальные диски, чтобы он загрузился, а затем исправьте все шаг за шагом. Существуют следующие способы ссылки на раздел диска в /etc/fstab
и в загрузочных файлах ELILO
или GRUB
, каждый из которых имеет различные плюсы и минусы:по -имени , по -id , по -метка , по -uuid и по -путь .