Я пытаюсь создать скрипт, который должен архивировать текстовые журналы с прошлой недели.

В основном у нас есть путь, где у нас есть папки на дату, как показано ниже. Каждая папка содержит CSV-файлы, содержащие данные за этот день

2015-02-01
2015-02-02
2015-02-03
2015-02-04
2015-02-05

Мы хотим запустить скрипт, который запускается каждое воскресенье и архивирует все папки и файлы в архив для всех папок на прошлой неделе.

Есть идеи, как мне этого добиться?

Я использую эту команду в качестве теста, который должен архивировать все папки старше 5 дней, но она просто сжимает одну папку

find . -type d -mtime +5 -print -exec tar -zvcf test.tar.gz {} \;

1 ответ1

0

Если вы запускаете этот скрипт в определенный день, и если у вас есть доступ к дате GNU и tar GNU (т.е. Linux), вы можете использовать что-то вроде этого (я так понимаю, вы используете bash, не тестировался на других оболочках):

for i in {1..7}; do
    FOLDER=`date +%Y-%m-%d -d "$i days ago"`
    tar zcfv /var/tmp/${FOLDER}.tgz ${FOLDER}/
done

Дата GNU важна, так как она понимает параметр -d "N дней назад".

Поскольку имена ваших папок предсказуемы, это обычно также быстрее, чем поиск

/Edit: если вам нужен один архив на целую неделю, просто добавьте в исходники tar.

WEEK=`date +%U`
SOURCE=""
for i in {1..7}; do
    FOLDER=`date +%Y-%m-%d -d "$i days ago"`
    SOURCE=${SOURCE}" "${FOLDER}/
done
tar zcfv /var/tmp/week${WEEK}.tgz ${SOURCE}

Вывод моего тестового сценария (на сегодняшний день):

tar zcfv /var/tmp/week07.tgz 2015-02-17/ 2015-02-16/ 2015-02-15/ 2015-02-14/ 2015-02-13/ 2015-02-12/ 2015-02-11/

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