Использование curl с именем файла, содержащим динамическую дату

Я пытаюсь загрузить динамически созданный файл журнала из моего локального поля на свой FTP-сервер. Все это происходит в работе cron (crontab), которую я запускаю каждую ночь. Он создает файл, используя:

30 00 * * * touch ~/Desktop/logs/"log$(date +'\%m\%d\%y')"

. Это работает отлично. Однако, когда я пытаюсь загрузить файл, используя тот же синтаксис:

50 00 * * * curl -T ~/Desktop/logs/"log$(date +'\%m\%d\&y')" -u user:pass ftp://example.com/logs/

Он дает мне следующую ошибку:

date: extra Operand

Я также пробовал это, не ускользая от%:

curl -T ~/Desktop/logs/"log$(date +'%m%d%y')" -u user:pass ftp://example.com/logs/

Что работает в обычной командной строке, но когда выполняется через crontab, выдается следующее Ошибка:

/bin/sh: Syntax error: Unterminated quoted string

Любые идеи о том, как успешно загружать ежедневный журнал на мой сервер?

0
задан 19 October 2011 в 01:30

2 ответа

То, как я обычно указывал дату в задании cron, - это не иметь кавычек вокруг всего имени и использовать обратные ссылки вокруг команды date, поэтому:

50 00 * * * curl -T ~/Desktop/logs/log`date +'\%m\%d\%y'` -u user:pass ftp://example.com/logs/

Хотя я ожидал бы, что $(date ...).

(О, и я принимаю амперсанд до того, как y во втором задании cron является опечаткой в ​​вопросе, но если это также в вашей работе cron, которая будет проблема.)

1
ответ дан 25 May 2018 в 17:55
  • 1
    Спасибо. Это сработало. Я не знаю, почему синтаксис, который я использовал для создания файла (touch ~/Desktop/logs/"log$(date +'\%m\%d\%y')"), не работал с rsync! – Louis B. 21 October 2011 в 01:20
  • 2
    rsync или curl? rsync ожидает, что удаленные имена файлов могут содержать глобусы и цитаты, а если вы действительно используете rsync, которые могли бы объяснить, почему это не сработало. – poolie 24 October 2011 в 04:18

Способ, которым я обычно указывал дату в задании cron, заключается не в том, чтобы иметь кавычки вокруг всего имени и использовать обратные ссылки вокруг команды date, поэтому:

50 00 * * * curl -T ~/Desktop/logs/log`date +'\%m\%d\%y'` -u user:pass ftp://example.com/logs/

Хотя я ожидал бы $(date ...).

(О, и я предполагаю, что амперсанд до того, как y во втором задании cron станет опечаткой в ​​вопросе, - но если это также в вашей работе cron, которая будет проблема.)

1
ответ дан 7 August 2018 в 20:40

Другие вопросы по тегам:

Похожие вопросы: