LinuxForum.Fans
Тема

Shell скрипт

Автор: GreenBanan 4 сообщений 4669 просмотров
#179638

[console]
#!/bin/sh
BACKDATE=`date +%F`
HOST="178.238.140.32"
PORT="21"
USER="y"
PASSWD="x"
FILE="/home/nikon/script/backup-$BACKDATE.tar.gz"
LOG="/home/nikon/script/backup-$BACKDATE.log"
UFILE="/backups/backup-$BACKDATE.tar.gz"
tar cvvzf $FILE /etc >> $LOG
ftp -dvin $HOST >> $LOG <<EOF
quote USER $USER
quote PASS $PASSWD
bin
put $FILE $UFILE
quit
EOF
[/console]

Есть такой скрипт, вроде и вывод в файл поставил, но вот все равно в консоль проскакивают два сообщения [console]tar: Удаляется начальный `/' из имен объектов
ftp: setsockopt: Bad file descriptor[/console] как их записать в файл либо устранить, эти сообщения вообще не критичны?
И вопрос номер 2 после передачи по фтп требуется удалить архив с локальной машины, куда я не вставлял rm $FILE, не работает, как это реализовать?
Заранее спасибо.

#179646
GreenBanan написал:
как их записать в файл либо устранить, эти сообщения вообще не критичны?
text
tar cvvzf $FILE /etc >> $LOG 2>/dev/null
ftp -dvin $HOST  >> $LOG 2>/dev/null <<EOF 

//fixed

но это не правильно. Правильно передавать tar'у относительный путь, а не полный.
ну к примеру так:

text
cd /
FILE="home/nikon/script/backup-$BACKDATE.tar.gz"

...

UFILE="backups/backup-$BACKDATE.tar.gz" tar cvvzf $FILE etc >> $LOG 2>/dev/null

т.е. самому удалить слеш.

а вот что у вас там с сокетом - без понятия. Тут сами разбирайтесь, я ftp не юзаю, lftp лучше.

#179662

drBatty, спасибо.

И вопрос номер 2 после передачи по фтп требуется удалить архив с локальной машины, куда я не вставлял rm $FILE, не работает, как это реализовать?
Заранее спасибо.
#179825
GreenBanan написал:
И вопрос номер 2 после передачи по фтп требуется удалить архив с локальной машины, куда я не вставлял rm $FILE, не работает, как это реализовать?
text
FILE="/home/nikon/script/backup-$BACKDATE.tar.gz"
LOG="/home/nikon/script/backup-$BACKDATE.log"
UFILE="/backups/backup-$BACKDATE.tar.gz"

tar cvvzf $FILE /etc >> $LOG err=$? if [ $err = 0 ]; then # успешно упаковали ftp -dvin $HOST >> $LOG <<EOF quote USER $USER quote PASS $PASSWD bin put $FILE $UFILE quit EOF err=$? # код ошибки FTP fi [ $err != 0 ] && exit $err # выход, если ошибка

rm --force "$FILE"

PS: Используйте кавычки!

Войдите или зарегистрируйтесь, чтобы ответить.