tar выдает ошибку “Не удается получить информацию: Нет такого файла или каталога”, Пожалуйста, помогите

Вопрос или проблема

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

touch sample_touch_FILENAME.CSV
echo "sample_touch_FILENAME.CSV">FILELIST_PROJECT.txt

while read i
do
tar -cf "$i".tar "$i"
done<$DirPath/FILELIST_PROJECT.txt

Сообщение об ошибке:

tar: sample_touch_FILENAME.CSV: Не удается получить информацию: Нет такого файла или каталога
tar: Завершение с ошибкой из-за предыдущих ошибок

Пожалуйста, помогите.

Ответ или решение

Проблема, с которой вы столкнулись, связана с тем, что команда tar не может найти файл sample_touch_FILENAME.CSV, который вы пытаетесь архивировать. Давайте разберемся с вашими командами и исправим ошибки.

Анализ вашего кода:

  1. Вы создали файл с помощью команды touch:

    touch sample_touch_FILENAME.CSV

    Эта команда создает пустой файл с указанным именем.

  2. Далее вы записываете название этого файла в файл FILELIST_PROJECT.txt:

    echo "sample_touch_FILENAME.CSV" > FILELIST_PROJECT.txt

    Здесь все верно, и это создает файл со списком файлов, который вы хотите заархивировать.

  3. В цикле while вы читаете строки из файла FILELIST_PROJECT.txt и пытаетесь создать архив для каждого файла в этом списке:

    while read i
    do
       tar -cf "$i".tar "$i"
    done < $DirPath/FILELIST_PROJECT.txt

Возможные причины ошибки "Cannot stat":

  1. Путь к файлу: Убедитесь, что вы находитесь в том каталоге, где находится файл sample_touch_FILENAME.CSV. Если вы находитесь в другом каталоге, то tar не сможет найти файл.

  2. Переменная DirPath: Если вы используете путь из переменной DirPath, убедитесь, что переменная содержит правильный путь к файлу FILELIST_PROJECT.txt.

  3. Ошибки в имени файла: Проверьте, нет ли опечаток в имени файла, чтобы убедиться, что строка, которая считывается из FILELIST_PROJECT.txt, совпадает с именем файла.

Решение проблемы:

Шаг 1: Убедитесь, что файл существует

Проверьте наличие файла sample_touch_FILENAME.CSV:

ls -l sample_touch_FILENAME.CSV

Шаг 2: Исправьте путь к файлу в команде tar

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

Пример исправленного кода:

# Создаем файл
touch sample_touch_FILENAME.CSV

# Создаем файл со списком
echo "sample_touch_FILENAME.CSV" > FILELIST_PROJECT.txt

# Устанавливаем путь к файлу FILELIST_PROJECT.txt
DirPath="."  # Или укажите полный путь

# Архивируем файлы из списка
while read i
do
    if [ -f "$i" ]; then  # Проверяем, существует ли файл
        tar -cf "$i.tar" "$i"
    else
        echo "Файл $i не найден!"
    fi
done < $DirPath/FILELIST_PROJECT.txt

Заключение

После внесения указанных изменений и проверок ваш скрипт должен работать корректно, и командир tar не должна выдавать ошибку "Cannot stat: No such file or directory". Если проблема сохраняется, внимательно проверьте вывод команд и пути к файлам.

Оцените материал
Добавить комментарий

Капча загружается...