Создайте новый архив раз в минуту, используя «crontab»

9

Я пытаюсь создать crontabновый .tarфайл каждую минуту каждый рабочий день, используя следующий код:

*/1 * * * 1,2,3,4,5 tar -cf /home/user/Archiv/$(date +"%Y%m%d%H%M").tar /home/user/Textverarbeitung/ -P

Это не работает Почему?

LUXS
источник
Я не могу перестать читать заголовок как «Сделать каждую минуту архива с помощью crontab» (минута, как в маленькой), потому что статья отсутствует (не ошибка ОП), поэтому я исправляю это.
кот
3
Зачем вы используете */1? Разве это не то же самое, что просто *?
naught101

Ответы:

15

cronтрактует %как переводы строк. Вы должны использовать escape, то есть использовать, \%чтобы получить литерал, %используемый в date.

Итак, вам нужно:

date +"\%Y\%m\%d\%H\%M" 

Или вы можете использовать скрипт, использовать все команды в скрипте и вызывать скрипт из crontab.

От man 5 crontab:

Знаки процента (%) в команде, если они не экранированы обратной косой чертой (\), будут заменены символами новой строки, и все данные после первого% будут отправлены команде в качестве стандартного ввода. Невозможно разделить одну командную строку на несколько строк, как, например, завершающий символ оболочки "\".

heemayl
источник
4

Используйте \%вместо %- cron использует %в качестве новой строки.

YHOLGA
источник