[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, не работает, как это реализовать?
Заранее спасибо.
LinuxForum.Fans
Shell скрипт
Автор: GreenBanan
4 сообщений
4669 просмотров
как их записать в файл либо устранить, эти сообщения вообще не критичны?
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 лучше.
drBatty, спасибо.
И вопрос номер 2 после передачи по фтп требуется удалить архив с локальной машины, куда я не вставлял rm $FILE, не работает, как это реализовать?
Заранее спасибо.
И вопрос номер 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: Используйте кавычки!
Войдите или зарегистрируйтесь, чтобы ответить.