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

тогда действительно ls -lr

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от 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 ★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.