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

Например, моим именем родительского каталога является "log", и в этом каталоге каталог будет создаваться автоматически ежедневно, и во всех дочерних каталогах (которые создаются ежедневно) будет несколько файлов журнала, создаваемых ежечасно.

Основная цель: я хочу сделать резервную копию tar дочернего каталога (который создается ежедневно с именем каталога в виде 01, 02, 03, 04, ......, 31), сохраняя файлы журнала за последние 20 дней. Имеется в виду 30-дневный каталог, tar следует делать только в течение первых 10 дней.

find /usr/local/aryan/2015/logs -iname ".log" -mtime +10 -exec tar -cvzf backup_1.tar.gz" "VARIABLE_FOLDER_NAME" '{}' \;

Помогите мне заменить "VARIABLE_FOLDER_NAME", в котором фактически будут имена папок, которые будут создаваться ежедневно.

С помощью приведенной выше команды он найдет все файлы с расширением .log и не будет изменен за последние 10 дней. Теперь я хочу сделать резервную копию всех тех папок, которые содержат файлы с расширением .log

1 ответ1

0

Имя папки было создано или вам нужно его создать?

Если вы создаете новую папку каждую дату, то сделайте что-то вроде этого

VARIABLE_FOLDER_NAME=`date '+%d'`
mkdir -f $VARIABLE_FOLDER_NAME

Каждый день он будет создавать папку с именем даты месяца.

Если вы хотите, чтобы имя было заполнено нулями, попробуйте что-то вроде этого

DATE_OF_MONTH=`date '+%d'`
VARIABLE_FOLDER_NAME=`printf "%02d" $DATE_OF_MONTH"

Все это можно сделать в одной строке, например:

DATE_OF_MONTH=`date '+%d'`; VARIABLE_FOLDER_NAME=`printf "%02d" $DATE_OF_MONTH"; find /usr/local/aryan/2015/logs -iname ".log" -mtime +10 -exec tar -cvzf backup_1.tar.gz "VARIABLE_FOLDER_NAME" '{}' \;

Вы также можете посмотреть на использование xpath с командой find для ускорения работы tar.

Если папка уже создана, их нужно просто выяснить, как выбрать какую.

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