Я пробую простой сценарий удара для резервного копирования моих исходных файлов от моего корневого каталога веб-сайта до моего /home/backups/files
каталог.
script2.sh
#!/bin/bash
#START
TIME=`date +%b-%d-%y`
FILENAME=backup-$TIME.tar.gz
SRCDIR="var/www/html/My_Site"
DESDIR="/home/backups/files"
tar cpzfP $DESDIR/$FILENAME $SRCDIR
#END
Ошибка:
tar: /var/www/html/My_Site\r: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
Я пересекаюсь проверенный на Пробелы в каждой строке кода, нет ни одного.
Крест проверил разрешение папки и на SRC и на DES, его 0777.
Я не получаю идеи относительно того, почему я добираюсь Cannot stat: No such file or directory
.
Это смотрит на меня как Вы, сценарий имеет возвраты каретки Windows в нем, которые вызывают отказ. Ключ к разгадке этого \r
в конце пути в переменной SRCDIR, которую показывают в коде ошибки как /var/www/html/My_Site\r
. Очевидно, тот путь делает не существуют с добавленным \r
на конце.
Вот sed
команда, которая можно работать сценарии для удаления возвратов каретки, это сделает резервное копирование исходного сценария, названного script2.sh.bak
.
sed -i.bak 's/\r//g' script2.sh
сценарий должен работать правильно теперь, можно удалить резервную версию, после того как Вы проверили это.
Другой метод для избавлений от тех нежелательных возвратов каретки должен был бы использовать tr -d '\r' script2.sh
, но необходимо будет направить вывод к новому файлу и копию это вместо старого.
Еще одна вещь, которая была бы полезна, будет состоять в том, чтобы гарантировать, чтобы Вы заключили свои переменные в кавычки при использовании их в сценарии. Это - хорошая практика для вхождения.
Вы имеете права записать в папку DESDIR?
кроме того, для предотвращения "tar: Удаление продвижения '/' от имен элемента" пробует это:
tar cpzfP $DESDIR/$FILENAME $SRCDIR
я не знаю, почему, но это работает на меня.