LINUX.ORG.RU

Помогите с Crontab


0

2

Подскажите, как быть: есть сервер, есть Crontab. Есть две папки на сервере, в одной картинки. Каждый день надо кидать по одной картинке из одной папки в другую и при этом давать ей имя вида %День%.%Месяц%.jpg. Датой должен быть тот день в который картинка перемещена. Подскажите, что писать в Кронтабе, пользуюсь им первый раз и тут вдруг приперло.

Ответ на: комментарий от AITap

Я уже и гуглил, и яндексил, готовых решений не нашел. И еще раз повторю, Cron раньше вообще в глаза не видел, какой будет на сервере (виртуальный хостинг) я не представляю. Знаю только что он будет. Простите за нубство.

nidaylokn ()
Ответ на: комментарий от nidaylokn

И тем не менее, cron'ы бывают разные.

Если повезёт, на сервере будет директория /etc/cron.daily, в которую можно будет запихнуть скрипт вида:
#!/bin/sh
cp -v $(ls -1 /path/to/source/directory | head -1) /path/to/destination/directory/$(date +%d.%m.jpg)
и больше ни о чём не задумываться.

Если есть anacron, можно будет отредактировать anacrontab примерно таким образом:
1 1 myjob cp -v $(ls -1 /path/to/source/directory | head -1) /path/to/destination/directory/$(date +%d.%m.jpg)

Если обычный vixie cron, то так (для системного crontab):
25 6 * * * root test -e /path/to/destination/directory/$(date +%d.%m.jpg) || cp -v $(ls -1 /path/to/source/directory | head -1) /path/to/destination/directory/$(date +%d.%m.jpg)
или так (для пользовательского crontab):
25 6 * * * test -e /path/to/destination/directory/$(date +%d.%m.jpg) || cp -v $(ls -1 /path/to/source/directory | head -1) /path/to/destination/directory/$(date +%d.%m.jpg)

А ещё можно было почитать в интернете man crontab, man anacron, man anacrontab, advanced bash scripting guide и додуматься до этого самостоятельно.

AITap ★★★★★ ()
date=$(date --rfc-3339=date | sed -e s/[0-9]*.// -e s/-/./g) && mv $filename $date.jpg

Только на выходе будет имя вида %месяц%.%день%.jpg, что как мне кажется будет удобнее при сортировке, если там за несколько месяцев будут файлы.

Prius ()
Ответ на: комментарий от AITap

> cp -v $(ls -1 /path/to/source/directory | head -1) /path/to/destination/directory/$(date +%d.%m.jpg)

и больше ни о чём не задумываться.

... и каждый день аккуратно копировать одну и ту же картинку, ага. ;)
этапять ;)

aol ★★★★★ ()

скажи уж честно, что на баше писать не умеешь.
потому, что в кронтабе надо написать:

0 * * * * /path/to/your/coolScript.sh

aol ★★★★★ ()
Ответ на: комментарий от aol

> этапять ;)
Всё, пора мне на пенсию.

Конечно, mv вместо cp.

AITap ★★★★★ ()
Ответ на: комментарий от anonymous

ммм.. точно! ;) а то каждый час получается! промахнулся ;)

aol ★★★★★ ()
Ответ на: комментарий от nidaylokn

не в тему задаешь... тут главная проблема не в кронтабе, а а самом скрипте.
уточни ТЗ. надо ли _перемещать_ картинки из первой папки, либо просто копировать?

aol ★★★★★ ()
Ответ на: комментарий от nidaylokn

чтобы копировать:
исходные данные:

mkdir src dst
touch seen copy.cronjob
chmod +x copy.cronjob

далее, в copy.cronjob клади следующее:

#!/bin/bash
src_name=$(ls src| grep -v -f seen | head -1)
echo $src_name >> seen
ext=$(echo $src_name | cut -d. -f2)

dst_name=$(date +%d.%m.$ext)
cp src/$src_name dst/$dst_name

aol ★★★★★ ()
Ответ на: комментарий от nidaylokn

>Я уже и гуглил, и яндексил, готовых решений не нашел.

«готовые решения» - в Job

Led ★★★☆☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.