Shell Script - команда tar ошибочно принимает имя архива за каталог

My Shell Script, выпотрошенный сценарий резервного копирования чередуется между кажущимся ошибкой того, что я собираюсь быть архивным файлом для исходного каталога, и выдачей вывода, в котором утверждается, что я пытаюсь создать пустой архив, что, как я считаю, означает, что он все еще пытается использовать архив имя как источник. Это происходит только тогда, когда я указываю переменную оболочки в качестве параметра архива, попытка использования обычных строк работает отлично.

#!/bin/bash

DATETIME=$(date +'%y/%m/%d-%H_%M_%S')
SRC='/home/benny/test/'
DST='backups'
GIVENAME='benny-backup'
ARCHIVE = "$GIVENAME-$DATETIME.tar.gz"

echo $DATETIME
echo $SRC
echo $ARCHIVE

tar -zcvf $ARCHIVE  $SRC 
# if tar -zcvf archive.tar.gz" $SRC; the

Ниже приводится вывод кода:

18/11/15-00_10_02
/home/benny/test/

tar: Cowardly refusing to create an empty archive
Try 'tar --help' or 'tar --usage' for more information.

Это результат, который у меня был до того, как я изменил приведенный выше код, чтобы использовать только одну переменную, созданную путем объединения двух исходных:

18/11/15-00_12_51
/home/benny/test/

tar: Removing leading `/' from member names
tar (child): : Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
/home/benny/test/
/home/benny/test/price.txt

Спасибо

##!/bin/bash имеет слишком много #. Должен быть как раз #!/bin/bash
Barmar 15.11.2018 01:31

Это в реальном скрипте или ошибка копирования?

Barmar 15.11.2018 01:31

Поместите set -x в начало скрипта. Затем вы увидите каждую команду по мере ее выполнения.

Barmar 15.11.2018 01:32

Не используйте имена переменных в верхнем регистре. По соглашению эти имена используются для переменных среды.

Barmar 15.11.2018 01:33

Убедитесь, что в вашем скрипте есть символы новой строки Unix, а не Windows CRLF. Используйте dos2unix filename, чтобы исправить это.

Barmar 15.11.2018 01:34

Ошибка копирования, в скрипте этого нет. Я сделал, как вы сказали, и сделал следующее: + echo 18/11/15-00_34_04 18/11/15-00_34_04 + echo /home/benny/test/ /home/benny/test/ + echo benny-backup-18/11/15-00_34_04.tar.gz benny-backup-18/11/15-00_34_04.tar.gz + tar -zcvf benny-backup-18/11/15-00_34_04.tar.gz /home/benny/test/ tar: Removing leading / 'из имен участников tar (дочерний): benny-backup-18/11 / 15-00_34_04.tar.gz: Невозможно открыть: нет такого файла или каталога tar (дочерний): Ошибка не исправима: выход сейчас / home / benny / test / / home / benny / test / price.txt`

nrmad 15.11.2018 01:34

при чем тут новые строчки?

nrmad 15.11.2018 01:40

Я увидел пустое имя файла, которое могло появиться из-за постороннего CR в имени файла.

Barmar 15.11.2018 01:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
8
296
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

DATETIME=$(date +'%y-%m-%d-%H_%M_%S')

Спасибо большое, меня это раздражало весь вечер

nrmad 15.11.2018 01:44

Другие вопросы по теме