В cronjob копируйте файлы и меняйте их имена на уникальные значения

Я хочу сделать cronjob, который делает копию каждого файла в / var / log и помещает его в / etc / bak. Это я делаю, создав файл sh со словами

cp /var/log/*.* /etc/bak

. Я бы хотел, чтобы эти файлы не перезаписывались, а были уникальными. Для этого я решил поставить дату / время в имени файла. Есть ли способ сделать это возможным для копии пакетного файла?

0
задан 11 December 2013 в 15:22

2 ответа

Как насчет того, чтобы поместить каждый пакет файлов журнала в отдельном каталоге. Вы могли сделать это использование:

dir=/etc/bak/`date "+%Y-%m-%d_%H.%M.%S"`
mkdir "$dir"
cp /var/log/*.* $dir

Если Вы хотите снабдить префиксом все скопированные файлы метку времени, можно сделать:

(cd /var/log && ls -1 *.*) | awk -v date=`date "+%Y-%m-%d_%H.%M.%S"` '{ print "cp /var/log/" $0 " /etc/bak/" date  $0}' | sh
2
ответ дан 11 December 2013 в 15:22

Чтобы скопировать файлы в другой каталог и изменить их имена в процессе выполнения, я бы рекомендовал использовать цикл for.

Следующий код извлекает имя файла, используя basename, затем создает копию этого файла в /etc/bak с именем, подобным оригинальному файлу, с прикрепленной датой.

for file in /var/log/*; do 
    bn=$(basename $file)
    cp $file /etc/bak/${bn}.$(date +%F)
done
0
ответ дан 11 December 2013 в 15:22

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

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