У меня есть скрипт, который запускается cron для создания резервной копии базы данных MySQL и некоторых файлов. После создания tar-шара и шифрования его с помощью openSSH я должен поместить его на удаленный FTP-сервер. Ниже приведен код для части ftp:

    HOST='abcd.dyndns.biz'
    USER='username'
    PASSWD='password'
    FILE='myBack-'${LOCAL_HOST}'-'${DATENAME}'.enc.tar.gz'
    DIRNAME='/usr/local/backups/'

    cd ${DIRNAME}

    ftp -n ${HOST} <<END_SCRIPT
    quote USER ${USER}
    quote PASS ${PASSWD}
    cd backup
    lcd ${DIRNAME}
    put ${FILE}
    quit

END_SCRIPT

Если я непосредственно запускаю скрипт из командной строки > sudo ./mybackup.sh он работает без сбоев и помещает файл резервной копии на ftp, но когда он запускается из cron он никогда не помещал файл на ftp, хотя другие pre-ftp и post- ftp (например, объединение файла журнала и результатов отправки по электронной почте) работает нормально. Я не могу получить что-либо из каких-либо файлов журналов или определить причину.

ПРИМЕЧАНИЕ:- Наш ip dyndns.biz не меняется, так как мы оплатили тарифный план.

3 ответа3

3

Вместо этого используйте функцию загрузки Curl :

curl --upload-file "$FILE" --user "$USER:$PASSWD" "ftp://$HOST/backup/"
0

У меня была похожая проблема.Решение для меня: обратиться непосредственно к каталогам без переменных, как это:

lcd /mpla/mpla2/dir1
cd  /mpla3/mpla4/dir2

и это сработало. Только это изменение. quote USER $username и quote PASSWD $password были оставлены как есть, но без фигурных скобок.

0

Ммм .. Я вижу несколько моментов, почему это может потерпеть неудачу.

  1. вы не знаете, что ftp открыл соединение при отправке ввода, но, возможно, он позаботится об этом за вас (я не знаком с вашей программой ftp .. это может быть что угодно).
  2. Вы не разделяете свои команды ftp:// точками с запятой или символом новой строки - попробуйте добавить \n или;. снова ИДК, что хочет ваше приложение

  3. Вы не проверяете, что файл действительно существует, прежде чем пытаться его поместить.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .