Почему мой файл tar больше, чем его содержание?

У Вас есть два набора проблем здесь:

  1. Рекурсивный вызов в каталоги.
  2. Перезапуск системы нумерации в рамках каждого отдельного каталога.

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

#!/bin/bash

shopt -s extglob
shopt -s nocaseglob

IMAGE_TYPES='jpg|png|gif'
IFS=$'\n' dirlist=(`find "$PWD" -type d`)

for dir in "${dirlist[@]}"; do
    cd "$dir"
    ls *.+($IMAGE_TYPES) > /dev/null 2>&1 || continue

    counter=0
    for file in *.+($IMAGE_TYPES); do
        printf -v newname "%.3d.%s" $((counter += 1)) "${file##*.}"
        mv --verbose "$file" "$newname"
    done
done
2
01.06.2013, 22:19
2 ответа

Файл tar извлечен, пока он не находит маркер, указывающий на конец файла tar: Физически, архив состоит из ряда записей файла, завершенных к концу записи архива, который состоит из два 512 блоков нулевых байтов из описания формата файла tar здесь.

Таким образом, Ваш архивный файл, вероятно, имеет материал после маркера, который не становится извлеченным.

2
27.01.2020, 22:14
  • 1
    Ага, да похоже, что tar видел конец архива, который не был реальным концом архива. Используя флаг меня к tar, кажется, решение - это игнорирует разделители конца архива и обрабатывает целый файл. –  user1753106 02.06.2013, 16:30

Это походит на диск, к которому Вы извлекаете, не имеет достаточного свободного пространства для всех файлов и каталогов в архиве tar. Свериться df -k . в каталоге, в котором Вы извлекли файлы.

Иногда, если Вы будете смолить файлы с "дырами" в них, то Вы получите архивный файл tar, намного больше, чем исходный файл (файлы). Кроме того, архивный файл tar несет метаданные, имя файла, полномочия, владение, и т.д., а также данные файла (файлов). Таким образом, архив tar является неизменно, по крайней мере, немного более крупным, чем исходные файлы.

0
27.01.2020, 22:14
  • 1
    Если бы диск был полон, то Вы получили бы ошибку при высказывании так. –  psusi 02.06.2013, 06:43

Теги

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