No necesitas el contador i
en 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
На это был дан ответ здесь .
Сначала сделайте образ раздела.
Затем используйте команду 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
Вы можете использовать Clonezilla и создать образ Clonezilla, представляющий собой каталог с набором файлов, где сжаты самые большие файлы. Clonezilla достаточно умен, чтобы копировать только те блоки раздела, которые помечены как используемые файловой системой, что делает его быстрее, чем dd
. Это также означает, что образ будет меньше, чем если бы копировалось свободное место на диске.
Но когда вы восстанавливаете содержимое образа в раздел, цель должна быть разделом [как минимум] того же размера, поэтому, если вы хотите, чтобы размер цели был меньше после операции восстановления, вы должны использовать другой метод.
Если вы хотите уменьшить размер раздела после операции создания образа и восстановления, вам следует работать на уровне файлов. Вы можете
создать tarball, [сжатый] tarfile всей файловой системы,
создайте новый раздел с файловой системой нужного вам размера
извлечь из архива дерево каталогов со всеми файлами.
Загрузитесь с другой операционной системы, чтобы копируемый раздел не был активным, и запустите tar
с повышенными правами, например
смените каталог на верхнюю часть раздела, который вы хотите скопировать
sudo tar -cvzf /path-to/file.tar.gz.
При восстановлении (также загружалась из другой операционной системы)
смените каталог на верхнюю часть раздела, куда вы хотите извлечь из tar-файла
sudo tar -xvf /path-to/file.tar.gz
Обратите внимание на важное различие между этим результатом и результатом операции клонирования,
/etc/fstab
и /boot/grub/grub.cfg
, чтобы они соответствовали новому UUID.