Приветствую всех и прошу помощи.
Обозначу сразу, что с системой LINUX я знаком сравнительно недавно, поэтому я 100 процентный новичок.
Попробую описать сложность с которой я столкнулся.
Имеется веб сервер, который работал на старом ПК с 2011 года. На данном ПК была установлена ОС freeBSD 7.4 i386. Периодически (не мной) на данном ПК выполнялась резервная копия всей системы на флэш карту с помощью команды: tar -cpvzf /mnt/WEB_SERV.tar.gz –exclude ./mnt –exclude ./proc –exclude ./tmp –exclude ./dev –exclude ./sys –exclude ./ boot/grub
В один день жесткий диск данного ПК вышел из строя. И теперь необходимо выполнить восстановление системы.
Почитав материал в сети интернет и послушав рекомендации, как я понял, достаточно выполнить распаковку архива с бэкапом в корневой каталог.
Установив на ПК аналогичную систему freeBSD 7.4 i386, подключив и смонтировав флешку с архивом и запустив команду распаковки: tar -xpvzf WEB_SERV.tar.gz -C / Я столкнулся со следующей сложностью, а именно, что процесс распаковки всегда останавливался на одном и том же файле.
Вот что указывала система на этапе распаковки: x ./usr/bin/perl5 tar: Error exit delayed from previous errors.
Т.е система останавливала распаковку на файле «perl5»
Сперва я подумал, может в архиве битый файл, и попробовал его исключить набрав команду: tar -xpvzf WEB_SERV.tar.gz –exclude ./usr/bin/perl5 -C /
Исключение файла было выполнено, но затем распаковка архива была остановлена на другом файле. Исключив его, а затем еще несколько файлов, на которых также стопорился процесс распаковки, я подумал что это не правильно и пошел искать причину дальше.
Затем я решил распаковать архив на ПК с системой Windows через программу 7zip. Архив был успешно распакован, и найдя в архиве файлы, на которых процесс распаковки останавливался, мной было обнаружено, что данные файлы являются символьными ссылками.
Символьная ссылка (также известна как символическая ссылка или символический линк) — это особый вид ссылки, используемый в Linux и других Unix-подобных системах. Она представляет собой файл, который содержит путь к другому файлу или каталогу. Отличие символьной ссылки от жесткой ссылки заключается в том, что символьная ссылка имеет собственное имя файла и может указывать на файлы и каталоги, расположенные в разных файловых системах.
И вот на этом моменте я и застрял.
Вопрос возник следующий:
-
Есть ли возможность у tarа исключить в автоматическом режиме подобные ошибки, которые могут возникнуть при распаковке символьной ссылки? Команда ‘–ignore-failed-read’ действует как я понял только при создании архива, при распаковки аналогичную команду не нашел.
-
В чем может быть причина, что tar «ломается» при распаковки символьных ссылок?
Буду очень благодарен в разъяснение.
Спасибо.
P.S
Нашел на одном ресурсе описание следующих ключей в tar, но их применение, к сожалению, не привело к результату. Процесс распаковки все также останавливается на одних и тех же файлах (символьные ссылки)
-U (только режим x) Разлинковать файлы перед их созданием. Без этой опции, tar перезапишет существующие файлы без сохранения существующий жестких ссылок. С этой опцией существующие жесткие ссылки будут сломаны, так же как и любые символические ссылки могут изменить местонахождение распаковываемых файлов.
-P Соблюдать имена пути. По умолчанию абсолютное имя пути (то которое начинается с символа /) имеет впереди слеш, который удаляется при создании архива или при распаковке. Так же tar откажется распаковывать записи в архиве, чьи имена пути содержат .. или чьи целевые директории будут изменены символической ссылкой. Эта опция отменяет данное поведение.
Записи в архивах могут использовать символические ссылки для восстановления файлов в других директориях. Архив может восстановить символическую ссылку в другую директорию, затем использовать эту ссылку для восстановления файла в эту директорию. Для защиты от этого, tar проверяет каждый распакованный путь на символические ссылки. Если последний элемент пути является символической ссылкой, он будет удален и замещен записью в архиве. Если указана опция -U, любая промежуточная символическая ссылка будет так же удалена. Если опции -U или -P не указаны, tar откажется распаковывать строку. Для защиты себя, вы должны опасаться любых архивов, которые поступают из недостоверных источников. Вы должны проверять содержимое архива tar -tf filename прежде, чем начнете распаковку. Вы должны использовать опцию -k для того что бы быть уверенным что tar не перезапишет существующие файлы или опцию -U для удаления всех существующих файлов. Обычно вы не должны распаковывать архивы пока используете привилегии суперпользователя. Учтите, что опция -P отключает проверки безопасности tar’а и позволяет распаковать архивы с сохранением абсолютных имен пути, .. Компонентами, или символическими ссылками на другие директории.