LINUX.ORG.RU
решено ФорумTalks

Для гуру TAR

 


1

1

Есть странное желание - создать виртуальное представление директории с файлами, причём файлы должны иметь валидный размер, mtime и permissions, но они должны быть пустыми.

Я не собираюсь распаковывать файлы - мне просто надо видеть их размеры и даты.

--sparse

rinat@laptop:/tmp$ dd if=/dev/zero of=sparse/file1g bs=4k seek=$((1024*1024/4-1)) count=1
1+0 записей считано
1+0 записей написано
 скопировано 4096 байт (4,1 kB), 8,6491e-05 c, 47,4 MB/c
rinat@laptop:/tmp$ dd if=/dev/zero of=sparse/file22m bs=4k seek=$((22*1024/4-1)) count=1
1+0 записей считано
1+0 записей написано
 скопировано 4096 байт (4,1 kB), 3,6384e-05 c, 113 MB/c
rinat@laptop:/tmp$ ls sparse/ -lh
итого 8,0K
-rw-r--r-- 1 rinat rinat 1,0G Окт  2 21:42 file1g
-rw-r--r-- 1 rinat rinat  22M Окт  2 21:42 file22m
rinat@laptop:/tmp$ tar cfS sparse.tar sparse/
rinat@laptop:/tmp$ ls -lh sparse.tar 
-rw-r--r-- 1 rinat rinat 10K Окт  2 21:43 sparse.tar
rinat@laptop:/tmp$
i-rinat ★★★★★
()

мне просто надо видеть их размеры и даты

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

zolden ★★★★★
()

Пару лет назад делал подобное, чтобы знать, что качать в случае смерти винта. Представление в виде дерева директорий с размером и атрибутами файлов в html.
Но делал такое только под оффтопиком.

bubblecore ★★★★
()
Ответ на: комментарий от Uter

я, честно говоря, без понятия что нужно ТС, но спасибо что спросили

zolden ★★★★★
()
Ответ на: комментарий от juk4windows

мне лениво, но ты способный падаван, я в это верю

создать пустой файл такого же размера

fallocate -l $(ll /olddir/file | awk '{print $5}') /newdir/file
задать ему такие же права, mtime итп
chmod --reference=/olddir/file /newdir/file
chown --reference=/olddir/file /newdir/file
touch --reference=/olddir/file /newdir/file

zolden ★★★★★
()
Ответ на: комментарий от bubblecore

Пару лет назад делал подобное, чтобы знать, что качать в случае смерти винта. Представление в виде дерева директорий с размером и атрибутами файлов в html. Но делал такое только под оффтопиком.

Именно!!

juk4windows
() автор топика
Ответ на: комментарий от juk4windows

Вы не поняли - я не хочу создавать файлы - у меня они уже есть, я не хочу их физически засовывать в TAR.

Вот ты ленивый. Я ж тебе разжевал, а ты всё нос воротишь. У tar есть поддержка разреженных файлов. Опция --sparse говорит ему, что надо исследовать упаковываемые файлы на разреженность. Ты заметил, что я создал два файла, один на 1 гиг, другой на 22 метра и упаковал их в tar размером в 10 килобайт? Если нет, прочитай то сообщение ещё раз.

Итак, ты создаёшь дерево каталогов, которое тебе нужно в файле. Делаешь каждый файл разреженным, но точно того размера, как тебе надо. Потом упаковываешь это в tar: tar cfS. Потом файлы-пустышки удаляешь. Вот и всё.

i-rinat ★★★★★
()

Готово:

cat metaclone
#! /bin/sh

dest=/tmp/METABACKUP

mdsync()
{
        touch --reference="$1" "$2"
        chown --reference="$1" "$2"
        chmod --reference="$1" "$2"
}

test -d "$dest" && echo "$dest mustn't exist" && exit

echo "Creating directories ..."
find . -depth -type d -exec mkdir -p $dest/\{\} \;

echo "Cloning files ..."
find . -type f | while read filename; do
        fsize=`stat -c '%s' "$filename"`

        if [ $fsize -gt 0 ]; then
                fallocate -o $((fsize-1)) -l 1 "$dest/$filename" || exit
        fi

        mdsync "$filename" "$dest/$filename"
done

echo "Cloning directories dates/owners/accesses ..."
find . -depth -type d | while read filename; do
        mdsync "$filename" "$dest/$filename"
done

echo "All done"
echo
echo "Run 'tar -Scf arc.tar directory' to create a proper tar archive"
juk4windows
() автор топика
Ответ на: комментарий от juk4windows

Одно печально - все посторонние утилиты (mc,7z,winrar) показывают размер sparse файлов как нулевой (т.е. чтобы увидеть размер файлов, нужно распаковать архив).

juk4windows
() автор топика

gwhere спасёт отца русской демократии. правда он не создаёт тары, но это имхо лишнее

yozan
()
Ответ на: комментарий от juk4windows

Этот «архив» браузится в Total Commander. Так что либо Wine либо что?

Uter
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.