
По сути, я хочу создать tar-образ структуры папок, но не сохранять фактическое содержимое файлов. Поэтому, когда я распаковываю файл, я хочу получить исходные папки, имена файлов, временные метки и т. д., но все файлы нулевой длины вместо исходного содержимого файла.
Целью является захват структуры гигантской папки (размером в несколько гигабайт) без создания многогигабайтного tar-файла.
Заранее спасибо.
решение1
Если cp
вашдостаточно мощный, вы можете сделать это:
cp -a --attributes-only olddir newdir
Где newdir
не существует (пока) и --attributes-only
означает
Копировать только указанные атрибуты исходного файла в место назначения. […]
Это не скопирует данные; обычные файлы в newdir
будут нулевого размера. Обратите внимание, что вам нужно быть root, чтобы реплицировать все атрибуты (например, владение), поэтому, возможно, вам нужно sudo cp …
. Вместо этого -a
вы можете использовать более конкретные параметры, чтобы реплицировать только те атрибуты, которые вам действительно нужны.
В любом случае, после создания newdir
пустых файлов просто укажите tar
этот каталог вместо olddir
.
решение2
star
поддерживает это с 18 лет... попробуйте:
star -c -dump -meta ... | star -tv
Здесь перечислены все записи как файлы типа «m'eta»...
star -c -dump -meta ... | star -C todir -xmeta
извлекает все файлы размером 0 байт.
star -c -dump -meta ... | star -C todir -xmeta -force-hole
извлекает все файлы как файлы исходного размера без данных (разреженный файл).
star
является частью schilytools.