Создать образ раздела (только занятое место)

No necesitas el contador ien absoluto.
Solo necesita incrementar la fecha actual en 1 en cada iteración.

#!/bin/bash
thedate="2018-03-28"
enddate="2018-04-02"
while [ "$thedate" != "$enddate" ]; do
    thedate=$( date -d "$thedate + 1 days" +%F )

    new_date=$( date -d "$thedate " +%Y%m%d )
    printf 'The date is "%s"\n' "$new_date"
done
3
13.03.2019, 19:03
2 ответа

На это был дан ответ здесь .

Сначала сделайте образ раздела.

Затем используйте команду lossup для монтирования образа. Поскольку это не диск, а раздел, вам не нужен флаг partscan.

# lsblk
# losetup --find foo.img

Поиск только что созданного кольцевого устройства

# lsblk
loop1    7:1    0   4096M  0 loop 

Обнуление оставшегося места путем записи большого пустого файла.

# mount /dev/loop1 /mnt
# dd if=/dev/zero of=/mnt/filler conv=fsync bs=1M
# rm /mnt/filler
# umount /dev/loop1

Теперь сожмите изображение.

# ls -s
4096M foo.img
# gzip foo.img
# ls -s
11M foo.img.gz

Что касается образа раздела.

Если на разделе есть файловая система ext4, вы можете изменить его размер с помощью resize2fs до минимального размера. Это перемещает все данные в первые блоки.

e2fsck -f /dev/loop1
resize2fs -M /dev/loop1
5
28.04.2021, 23:36

Вы можете использовать Clonezilla и создать образ Clonezilla, представляющий собой каталог с набором файлов, где сжаты самые большие файлы. Clonezilla достаточно умен, чтобы копировать только те блоки раздела, которые помечены как используемые файловой системой, что делает его быстрее, чем dd. Это также означает, что образ будет меньше, чем если бы копировалось свободное место на диске.

Но когда вы восстанавливаете содержимое образа в раздел, цель должна быть разделом [как минимум] того же размера, поэтому, если вы хотите, чтобы размер цели был меньше после операции восстановления, вы должны использовать другой метод.


Если вы хотите уменьшить размер раздела после операции создания образа и восстановления, вам следует работать на уровне файлов. Вы можете

  • создать tarball, [сжатый] tarfile всей файловой системы,

  • создайте новый раздел с файловой системой нужного вам размера

  • извлечь из архива дерево каталогов со всеми файлами.

Загрузитесь с другой операционной системы, чтобы копируемый раздел не был активным, и запустите tarс повышенными правами, например

  • смените каталог на верхнюю часть раздела, который вы хотите скопировать

    sudo tar -cvzf /path-to/file.tar.gz.
    

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

  • смените каталог на верхнюю часть раздела, куда вы хотите извлечь из tar-файла

    sudo tar -xvf /path-to/file.tar.gz
    

Обратите внимание на важное различие между этим результатом и результатом операции клонирования,

  • UUID раздела будет другим. Если скопированный раздел содержит системный раздел, необходимо либо изменить UUID на идентификатор исходного раздела, либо изменить ссылки на UUID в /etc/fstabи /boot/grub/grub.cfg, чтобы они соответствовали новому UUID.
6
28.04.2021, 23:36

Теги

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