2016-10-05 8 views
0

Имя сценария - backup_script.sh Расположение скрипта на сервере - /home/company_folder/company_site_backupsсервера резервного копирования оболочки (Баш)

линия добавлена ​​в файл хрон:

@monthly /home/company_folder/company_site_backups/backup_script.sh 

#!/bin/bash 
DIR="/home/company_folder/company_applications/*" 
BACKUPDIR="/home/company_folder/company_site_backups" 
NOW=`date +\%Y\%m\%d` 
cd $DIR 
for i in $DIR; do zip -r "${i%/}.zip" "$BACKUPDIR/$i-$NOW"; done 
ls -l 
echo "Done!" 

Но к сожалению, мой скрипт работает неправильно. На самом деле. Это не работает! Я не вижу никаких ошибок в синтаксисе. Кто-нибудь знает, как это исправить?

ответ

1

cd $DIR кажется странным; если первая запись, найденная /home/company_folder/company_applications/*, - это каталог, который он изменит в этот каталог; если это файл (или company_applications is empty), он получит ошибку.

Возможно, все работает правильно, за исключением того, что из-за вышеуказанного ваш ls -l не работает в каталоге, который вы ожидаете? Попробуйте удалить cd и изменить его на ls -l $DIR.

Мне также кажется очень странным, что вы скопировали контент из резервный каталог в каталог приложений. Возможно, вы хотели:

zip -r "$BACKUPDIR/`basename $i`-$NOW" $i 
0

Вы могли бы попробовать это;

#!/bin/bash 
DIR="/home/company_folder/company_applications/*" 
BACKUPDIR="/home/company_folder/company_site_backups" 
NOW=`date +\%Y\%m\%d` 
cd $DIR 
for i in $DIR 
do 
    base=$(basename "$i") 
    zip -r $BACKUPDIR/$base-${NOW}.zip $i 
done 
ls -l $BACKUPDIR 
echo "Done!" 
Смежные вопросы