GNU tar с опцией `--one-top-level` теперь выдает ошибку "Недопустимая межустройственная ссылка". В чем может быть причина этой ошибки и как ее решить?

Здравствуйте! Прохожу курс “от 0 до Linux админа” по ссылке: Learn Programming Online | Courses for Developers | YODO и столкнулся с проблемой, связанной с использованием GNU tar и опцией --one-top-level.

При попытке извлечь архив в определенное место с помощью следующей команды:

tar xzf ARCHIVE.tar.gz --one-top-level=/my/folder

Я получаю ошибки:

tar: /my/folder: Cannot mkdir: Invalid cross-device link
tar: /my/folder/somefile: Cannot open: Invalid cross-device link

Ранее это работало без проблем, однако в последнее время (по логам сборки Docker) появляется указанная ошибка. Я попробовал это на своей установке WSL, и ошибка воспроизводится. Проблема началась 7 июля и возникает как на Ubuntu 22.04, так и на 24.04 и 26.04.

Может ли кто-нибудь подсказать, что могло измениться в tar или в опции --one-top-level? Я сейчас использую версию 1.35+dfsg-4ubuntu0.4 на своей установке WSL. Буду благодарен за любую помощь!

Ошибка “Недопустимая межустройственная ссылка” при использовании GNU tar с опцией --one-top-level может возникать по нескольким причинам. Эта опция создает один верхний уровень каталога, в который распаковываются все файлы из архива, и проблема может быть связана с тем, как архив был создан или с разрешениями на файлы и каталоги.

Вот несколько возможных причин и решений:

  1. Некорректный архив: Убедитесь, что архив, который вы пытаетесь распаковать, корректен и не поврежден. Попробуйте его открыть без --one-top-level для диагностики.

  2. Отсутствие прав: Проверьте, есть ли у вас достаточные права на создание каталогов и запись в целевую директорию. Возможно, нужно запустить команду с повышенными правами (например, с использованием sudo).

  3. Проблемы с файловой системой: Убедитесь, что файловая система, на которую вы пытаетесь извлечь данные, не имеет каких-либо ограничений (например, файловая система только для чтения).

  4. Проблемы с символическими ссылками: Если архив содержит символические ссылки, возможно, они ссылаются на несуществующие файлы или каталоги. Проверьте, можно ли распаковать архив без опции --one-top-level и проанализируйте содержимое.

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

Спасибо за ваш вопрос! У меня все получилось, и я смог разобраться с этой проблемой.