2015-06-19 2 views
0

Я создал сценарий bash, который будет создавать резервные копии файлов и отправлять их в файл удаленной машины, но ftp не смог поместить его в указанную директорию Проблема кроется в том, когда ftp пытается скопировать файл. Вот мой сценарий:Ошибка FTP-файла на удаленном компьютере в Bash-скрипте

#!/bin/bash 
#BACKUP ROOT DIRECTORIES 
DESTINATION="/backup"; 
HOST=localhost 
USER=qwerty 
PASS=qwerty 
COUNT=$(cd /backup/ && ls -l | wc -l); 
echo $COUNT; 
DIR="/dev /sys /etc /www /var /rom /root /dev /overlay /bin /sbin /nebero /lib /usr"; 
DIR="/root/pen"; 
DIR_1="/dev /sys /etc /www /var /rom /root /dev /overlay /bin /sbin /nebero /lib /usr /mnt"; 
DIR_1="/root/pen"; 

    if [ "$1" = "FULL_BACKUP" ] 
    then 

     tar cvf $DESTINATION/full_backup_`date +%d-%m-%y_%H:%M`.tar `echo $DIR_1` >>/dev/null; 

     if [ $COUNT -eq 1 ] 
     then 
     NEW=$(ls -t /*back*/ | head -n2); 
     else 
     NEW=$(ls -t /*back*/ | head -n2 | sed '2!d'); 
     fi 

    elif [ "$1" = "CONF_BACKUP" ] 
    then 
     tar cvf $DESTINATION/conf_backup_`date +%d-%m-%y_%H:%M`.tar `echo $DIR` >>/dev/null; 
     NEW=$(ls -t /*back*/ | head -n2 | sed '1!d'); 

    else 
     echo "Please provide an argument"; 
     exit 

    fi 

FILE=$NEW 

ftp -in $HOST <<EOF 
user $USER $PASS 
pwd 
cd /rav 
put $FILE 
bye 
EOF 
+0

Какова конкретная проблема или ошибка_? $ FILE помещен в какой-либо другой каталог? Каков результат работы скрипта? – Armali

ответ

0

Прежде всего, это выглядит как целью всех ls команд, чтобы найти только что созданный файл. Вы можете пропустить все, что, если вы просто сохранить имя файла в переменную перед вызовом tar:

FILENAME=full_backup_`date +%d-%m-%y_%H:%M`.tar 

затем использовать $DESTINATION/$FILENAME в tar команд и $FILENAME в команде ftp.

Что касается неудачной загрузки, вы уверены, что находитесь в правильном каталоге локально?

Эти команды FTP для изменения каталогов:

  • cd: Изменение каталога на удаленной машине
  • lcd: Изменяет рабочий каталог на локальном компьютере

Убедитесь в том, что оба правильны перед выполнением put.

+0

Фактически, 'cdup' изменяет удаленный каталог на родительский. Команда изменить локальный каталог - 'lcd'. – rojomoke

+0

@rojomoke: Спасибо, что заметили это. – grillvott