Скрипт, который удаляет файлы через 5 дней

В MySQL 5 и выше, МЕТКА ВРЕМЕНИ значения преобразовываются от зоны текущего времени до UTC для устройства хранения данных и преобразовали назад от UTC до зоны текущего времени для извлечения. (Это происходит только для Типа данных timestamp, и не для других типов, таких как ДАТА И ВРЕМЯ.)

По умолчанию, зона текущего времени для каждого соединения является временем сервера. Часовой пояс может быть установлен на основе для каждого подключения, как описано в MySQL Server Time Zone Support .

5
задан 24.04.2020, 22:10

3 ответа

Чтобы найти файлы, которые были последний раз изменены более пяти дней назад:

find /path/to/directory -type f -mtime +4

Одновременно удалить их ( сначала протестируйте вышеуказанное ): [ 1116]

find /path/to/directory -type f -mtime +4 -delete

Чтобы автоматизировать ежедневную работу, запустите crontab -e (как пользователь, которому вы хотите выполнить эту задачу) и добавьте:

@daily find /path/to/directory -type f -mtime +4 -delete

Эксперимент, чтобы показать, какое значение mtime вы хотите использовать. Руководство является мусором. Я предположил +5, что мы хотели, но комментарий не согласился. Документация, кажется, конфликтует, поэтому я начал с создания трех файлов, каждый с интервалом в 1 день:

$ mkdir test
$ touch test/now
$ touch -d "1 day ago" test/yesterday
$ touch -d "2 days ago" test/day-before-yesterday
$ ls -l test
total 0
-rw-r--r-- 1 oli oli 0 Nov 26 13:12 day-before-yesterday
-rw-r--r-- 1 oli oli 0 Nov 28 13:11 now
-rw-r--r-- 1 oli oli 0 Nov 27 13:12 yesterday

Если мы хотим что-то точно в возрасте от 24 до 48 часов, мы используем 1 без знака. [1119 ]

$ find test -mtime 1
test/yesterday

Но если мы хотим что-то 24 часа +, +1 не работает:

$ find test -mtime +1
test/day-before-yesterday

+1, кажется, означает «больше, чем показывает 1» ... Так +0 используется:

$ find test -mtime +0
test/day-before-yesterday
test/yesterday

Все очень раздражает, если вы привыкли быть такими же, как я ... Но я выздоровею, я уверен. Спасибо за осколок от Адафона.

11
ответ дан 24.04.2020, 22:10

Вам нужно что-то вроде

@weekly find /tmp/test -type f -exec rm '{}' +

Примечание: просто rm -rf также удаляет папки. Вы можете добавить -mtime для времени модификации.

Должно ли это быть пять дней точно. Получите ваши любимые дни или время:

Минута - Час - День месяца - Месяц - День недели

0 3 0,5,10,15,20,25 * *

Что означает 3 часа ночи каждые пять дней, если месяц не равен 31 дням.

1
ответ дан 24.04.2020, 22:11

Да, вы можете использовать задания cron. Предположим, вам нужно удалить файлы в каталоге / tmp / test / через пять дней, а затем

crontab -e

добавить эти строки в последнюю

@weekly rm -fr /tmp/test/

Теперь папка будет удаляться еженедельно. Для получения дополнительной информации нажмите здесь

1
ответ дан 24.04.2020, 22:12

Теги

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