У меня есть tar-файл размером 100 ГБ из небольших файлов (каждый размером менее 1 МБ). С этим файлом на диске у меня осталось 20 ГБ свободного дискового пространства. Другими словами, у меня достаточно дискового пространства для размещения файлов в тарболе, но недостаточно для хранения файлов + тарбол.

Как извлечь файлы из архива, одновременно освобождая дисковое пространство, занятое архивом?

Я могу получить доступ к этому диску из Linux (Ubuntu) и Windows.

1 ответ1

3

Документация для опции tar --delete имеет такой интересный текст:

Эта операция перезапишет архив. Вы можете использовать `--delete 'в архиве только в том случае, если устройство архивирования позволяет записывать данные в любую точку носителя, например на диск; из-за этого он не работает на магнитных лентах.

Поскольку для этого требуется, чтобы носитель поддерживал случайное чтение / запись, это может, если повезет, означать, что --delete выполняется на месте без распаковки, чтобы создать новый экземпляр архива. В этом случае вы можете распаковать 20 ГБ файлов, а затем удалить их, чтобы уменьшить архив. Повторите операцию пять (или шесть) раз.

Я бы посоветовал распаковать файлы из конца архива и удалить их в обратном порядке архива. Если tar достаточно умен, он будет просто сжимать архив каждый раз, когда удаляется последний файл в архиве, и таким образом не нужно будет копировать все следующие файлы снова и снова для каждого удаления.

Если это не сработает, единственным вариантом будет найти другой диск, содержащий файлы без изменений.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .