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
Спасибо
Это в реальном скрипте или ошибка копирования?
Поместите set -x в начало скрипта. Затем вы увидите каждую команду по мере ее выполнения.
Не используйте имена переменных в верхнем регистре. По соглашению эти имена используются для переменных среды.
Убедитесь, что в вашем скрипте есть символы новой строки Unix, а не Windows CRLF. Используйте dos2unix filename, чтобы исправить это.
Ошибка копирования, в скрипте этого нет. Я сделал, как вы сказали, и сделал следующее: + 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`
при чем тут новые строчки?
Я увидел пустое имя файла, которое могло появиться из-за постороннего CR в имени файла.





В именах файлов не может быть /, поскольку они являются разделителями каталогов. Измените формат даты, чтобы использовать другие разделители.
DATETIME=$(date +'%y-%m-%d-%H_%M_%S')
Спасибо большое, меня это раздражало весь вечер
##!/bin/bashимеет слишком много#. Должен быть как раз#!/bin/bash