Как правильно перенести / на другой диск используя rsync?

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
Аватара пользователя
UnixNoob
Сообщения: 1379
ОС: Slackware

Как правильно перенести / на другой диск используя rsync?

Сообщение UnixNoob »

Приветствую. Понадобилось мне на новый жесткий перенести /boot и /, gparted умеет копировать разделы, но не дает увеличить размер при переносе, даже при использовании Gparted Live. Когда переносил EFI раздел просто использовал

Код: Выделить всё

rsync -av
а разделы создавал сам, через fdisk.
Делаться это будет не из под загруженной системы, а с Live дистрибутива. Есть какие-то особенности при переносе? Или может есть еще какие-то более простые способы.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение Bizdelnick »

Если новые разделы не меньше старых, можно перенести их содержимое dd, а потом увеличить файловую систему (resize2fs или что-то другое, в зависимости от ФС).
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1379
ОС: Slackware

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение UnixNoob »

Bizdelnick, разделы я буду создавать большего размера сам, т.е увеличивать мне ничего не придется. Разве что клонировать gparted, заходить и использовать указанную вами resize2fs. Я хотел создать новые разделы и просто перенести в них старые. Меня беспокоит чтобы права не уехали или что-то, что повлияет на работу на новом месте.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Aliech
Сообщения: 954
Статус: дилетант широкого профиля
ОС: Gentoo arm64 musl hardened
Контактная информация:

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение Aliech »

UnixNoob, rsync - хороший выбор.

Лично я "таскаю" системы с ключами "-aAXUNH"... чаще всего так. Ну и "-v", когда хочется текущий файл наблюдать, чтобы понимать " а чо так долго то?".
С уважением,
Павел Алиев
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение Bizdelnick »

UnixNoob писал:
14.01.2023 01:43
Разве что клонировать gparted, заходить и использовать указанную вами resize2fs. Я хотел создать новые разделы и просто перенести в них старые. Меня беспокоит чтобы права не уехали или что-то, что повлияет на работу на новом месте.
Gparted сделает то же, что и dd. Ещё, небось, и resize2fs сам дёрнет, так что руками ничего делать не придётся. Это, в отличие от rsync, даст полную гарантию, что никакие метаданные файлов не потеряются. rsync пытается всё сохранять, конечно (при использовании опций, указанных Aliech), но полностью перенести файловую систему надёжнее, да и намного быстрее.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1379
ОС: Slackware

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение UnixNoob »

Bizdelnick
Мне наверно стоило описать задачу мою более детально.
Сейчас у меня так:
Старый:

Код: Выделить всё

/dev/sdc1 /boot
/dev/sdc2 /
/dev/sdc3 /home
Новый:

Код: Выделить всё

/dev/nvme0n1p1 EFI
Я хочу перенести только 1,2 на новый, а home расширить и оставить на отдельном ssd.
dd же мне отдельно разделы скопировать не даст, на сколько я понял, а он копирует устройства целиком.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Aliech
Сообщения: 954
Статус: дилетант широкого профиля
ОС: Gentoo arm64 musl hardened
Контактная информация:

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение Aliech »

Bizdelnick, я, конечно, с вами согласен, особенно в части того, что "перенести фс" != "попытаться воспроизвести содержимое фс, строго как было". И первое гарантированно даст рабочий/желаемый результат. Тем более что resize2fs с ext4, например, лет уже десять без видимых косяков работает. Да и фрагментация, которая возрастёт, не страшна современным ФС.

Однако, не могу не заметить, что у идеи переноса через rsync/tar есть тоже некоторый "+": мы экономим IOPS'ы как таковые, и, на "целевом устройстве" мы экономим циклы записи. Для какого-нибудь micro sd это важно. Для дешманских SSD тоже не помешает. Ну и да, rsync/tar позволяют перейти на другие ФС.

UnixNoob, если вы пойдёте по пути rsync'а, то, настоятельно советую, применить логирование вывода. Чтобы потом его посмотреть на предмет ошибок.
С уважением,
Павел Алиев
Спасибо сказали:
Aliech
Сообщения: 954
Статус: дилетант широкого профиля
ОС: Gentoo arm64 musl hardened
Контактная информация:

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение Aliech »

UnixNoob писал:
14.01.2023 16:26
Я хочу перенести только 1,2 на новый, а home расширить и оставить на отдельном ssd.
dd же мне отдельно разделы скопировать не даст, на сколько я понял, а он копирует устройства целиком.
Кто мешает создать на новом ssd 1 и 2 разделы НУЖНОГО размера. Влить в них через dd данные, и запустить расширение для них, чтобы ФС в них "растянулась" по размеру блочного устройства?
С уважением,
Павел Алиев
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение Bizdelnick »

UnixNoob писал:
14.01.2023 16:26
dd же мне отдельно разделы скопировать не даст, на сколько я понял, а он копирует устройства целиком.
Раздел — такое же блочное устройство, как и весь диск. Что укажете dd, с тем он и будет работать.
dd if=/dev/sdc2 of=/dev/nvme0n1p2 bs=32M скопирует содержимое sdc2 на nvme0n1p2, при условии, что второй не меньше первого, конечно.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1379
ОС: Slackware

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение UnixNoob »

Aliech
Bizdelnick
Мне казалось, когда я пытался через dd образы писать,что нельзя указывать разделы, а исключительно устройство. Но может задачи разные и принципы работы тоже. В любом случае спасибо.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение Bizdelnick »

Aliech писал:
14.01.2023 16:35
Однако, не могу не заметить, что у идеи переноса через rsync/tar есть тоже некоторый "+": мы экономим IOPS'ы как таковые, и, на "целевом устройстве" мы экономим циклы записи.
В смысле, когда раздел большей частью свободен? В принципе да, но, с другой стороны, иноды и каталоги переписываться будут многократно, так что тут палка о двух концах. При определённой степени заполнения циклов записи потратится уже больше, и посчитать их затруднительно. dd же гарантирует только однократную перезапись, а это такая мелочь, которой можно пренебречь.

P. S. Да, конечно же, в случае использования dd надо будет потом сразу же сделать fstrim.
Добавлено (16:46):
UnixNoob писал:
14.01.2023 16:44
Мне казалось, когда я пытался через dd образы писать,что нельзя указывать разделы, а исключительно устройство.
1. Раздел — тоже блочное устройство, никакой разницы.
2. Можно указывать не только устройства, но и обычные файлы, например.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Aliech
Сообщения: 954
Статус: дилетант широкого профиля
ОС: Gentoo arm64 musl hardened
Контактная информация:

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение Aliech »

Bizdelnick писал:
14.01.2023 16:44
В смысле, когда раздел большей частью свободен? В принципе да, но, с другой стороны, иноды и каталоги переписываться будут многократно, так что тут палка о двух концах. При определённой степени заполнения циклов записи потратится уже больше, и посчитать их затруднительно. dd же гарантирует только однократную перезапись, а это такая мелочь, которой можно пренебречь.
Всё верно. Но, если накопитель достаточно "тупой", а в переносимой ФС у нас занято, условно, 20ГБ из 100ГБ, то dd нам обеспечит запись всей сотни. Какая-нибудь "шляпа" на eMMC попытается записать их всех, не извольте сомневаться.

Кстати, TRIM на тех же Samsung'ах по-прежнему бывает багнутым. Есть мнение, что проще полагаться на сборщик мусора в самом ssd. Это очень странная ситуация, когда TRIM может привести к потере данных, а вот сам SSD уверенно нулевые блоки на входе, размером не менее x и не более, y (где y кратно x) тупо никуда не пишет, сбрасывая их со счетов в nvram как пустые.
С уважением,
Павел Алиев
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение Bizdelnick »

Aliech писал:
14.01.2023 16:51
Какая-нибудь "шляпа" на eMMC попытается записать их всех, не извольте сомневаться.
Aliech писал:
14.01.2023 16:51
сам SSD уверенно нулевые блоки на входе, размером не менее x и не более, y (где y кратно x) тупо никуда не пишет, сбрасывая их со счетов в nvram как пустые.
По-моему, у нас тут речь скорее о втором случае. ☺
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1379
ОС: Slackware

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение UnixNoob »

Ну если у вас пошла речь о конкретных устройствах, то копировать я буду с OCZ Agility 3 на MSI M390. :laugh:
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Aliech
Сообщения: 954
Статус: дилетант широкого профиля
ОС: Gentoo arm64 musl hardened
Контактная информация:

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение Aliech »

Bizdelnick писал:
14.01.2023 16:59
По-моему, у нас тут речь скорее о втором случае. ☺
Похоже. Но "копеечку в пользу" rsync'а я занёс. Мы же, изначальной, rsync обсуждали, нет?)
С уважением,
Павел Алиев
Спасибо сказали:
math
Сообщения: 276
Статус: Ъ участник
ОС: Artix (= Arch without systemd)

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение math »

Извините если оскорблю кого банальностью, но если переносится смонтированный раздел, его крайне желательно перед переносом перемонтировать в режиме read-only.
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 901
ОС: debian, fedora (i3-wm)

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение olecya »

Bizdelnick писал:
14.01.2023 16:39
dd if=/dev/sdc2 of=/dev/nvme0n1p2 bs=32M скопирует содержимое sdc2 на nvme0n1p2, при условии, что второй не меньше первого, конечно.
Я так понимаю надо создать на конечном девайсе точную структурную копию разделов как на источнике потому что все, включая файловую систему будет переписано.
Добавлено (20:29):
Или главное условие - соблюдено - начало раздела? Еще можно добавить conv=sparse (может быть меньше первого), но лучше думаю записать все нолики включая заполнить все оставшееся пространство раздела conv=notrunc
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как правильно перенести / на другой диск используя rsync?

Сообщение Bizdelnick »

olecya писала:
14.01.2023 20:07
Я так понимаю надо создать на конечном девайсе точную структурную копию разделов как на источнике потому что все, включая файловую систему будет переписано.
Нет, в этом нет никакой необходимости. Важен только размер раздела.
olecya писала:
14.01.2023 20:07
Еще можно добавить conv=sparse (может быть меньше первого)
А вот это не надо. Мы же не в файл пишем, а на блочное устройство.
olecya писала:
14.01.2023 20:07
лучше думаю записать все нолики включая заполнить все оставшееся пространство раздела conv=notrunc
Это тоже для блочных устройств смысла не имеет. У них фиксированный размер, их невозможно trancate'ить.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить