Перенос двойной -загрузочной системы с жесткого диска на твердотельный накопитель

Использованиеfind:

find. -type f -name '*_*.jpg' -exec sh -c '
    for pathname do
        newname=${pathname##*/}
        newname="${pathname%/*}/${newname%%_*}.jpg"
        printf "Would move %s to %s\n" "$pathname" "$newname"
        # mv -i "$pathname" "$newname"
    done' sh {} +

Это позволит найти пути ко всем обычным файлам в текущем каталоге или ниже, чьи имена соответствуют заданному шаблону. Для пакетов этих путей выполняется короткий сценарий оболочки, который перебирает заданные пути и переименовывает файлы (. Фактическое переименование закомментировано для безопасности ).

При таком имени пути, как ./a/b/c/foo0_some_other_bits.jpg, сценарий оболочки преобразует его в ./a/b/c/foo0.jpg, сначала удаляя каталоги (, создавая foo0_some_other_bits.jpg), а затем удаляя все после первого символа _и снова добавляя каталоги.. Бит каталога пути удаляется и заменяется только в том случае, если он также содержит один или несколько символов _. Это делается с помощью стандартных расширений параметров.

Использование опции оболочки globstarвbash:

shopt -s globstar   # use "set -o globstar" in ksh93, or remove completely in zsh
for pathname in./**/*.jpg; do
    [ -f "$pathname" ] || continue
    newname=${pathname##*/}
    newname="${pathname%/*}/${newname%%_*}.jpg"
    printf "Would move %s to %s\n" "$pathname" "$newname"
    # mv -i "$pathname" "$newname"
done

Это в точности эквивалентно приведенной выше команде findс той лишь разницей, что она не будет находить скрытые имена (добавить shopt -s dotglobдля этого ).

1
10.08.2020, 09:22
1 ответ

Для таких задач использую Clonezilla . Он будет полностью клонировать копирование жесткого диска на другой, независимо от типа, ротации, ssd и т. д. Он также может клонировать разделы, но гораздо проще клонировать весь диск, тем более что у вас наверняка есть несколько разделов (две ОС ). Конечно, новый диск должен быть такого же или большего размера, чтобы процедура прошла гладко.

Не пугайтесь текстового интерфейса Clonezilla, им очень легко пользоваться. Загрузитесь с загрузочного компакт-диска или USB-накопителя Clonezilla, найдите исходный и целевой диск (, будьте осторожны, вы не захотите совершить ошибку! )и пусть катится; настройки по умолчанию разумны.

Если вы не можете найти такой же или больший ssd, вы можете уменьшить существующий последний раздел на жестком диске. Если это ext4 или ntfs, это можно сделать, xfs - нет. Вы также можете сжать разделы в начале диска, но тогда вам придется переместить следующие разделы. Вы можете использовать GParted для этой задачи, но это медленно и немного опасно.

Другой способ — клонировать раздел Windows.затем создайте пустой раздел для Linux и используйте rsync, чтобы перенести все в Linux. Я не думаю, что rsync в Windows может выполнить задачу для системы Windows, поэтому я предлагаю клонировать часть Win.

3
18.03.2021, 23:13

Теги

Похожие вопросы