Создать tar-файл, который хранит имена файлов, но не их содержимое

Создать tar-файл, который хранит имена файлов, но не их содержимое

По сути, я хочу создать 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.

Связанный контент