Как создать задание cron, которое автоматически удаляет файлы старше 30 дней?

У меня возникли проблемы с настройкой моих двух мониторов. Мне пришлось войти в свой BIOS и установить свой видеоадаптер по умолчанию с Auto на PCI x16.

0
задан 13 April 2018 в 01:23

4 ответа

Я использую один для удаления резервных копий старше 10 дней, и он выглядит примерно так:

50 17 * * * find /path/to/files/filename* -type f -mtime +10 | xargs rm

Я использую filename*, потому что они предназначены для резервного копирования, чтобы они выглядят следующим образом:

filename04-04-2018.tar.gz filename04-05-2018.tar.gz filename04-06-2018.tar.gz
2
ответ дан 17 July 2018 в 16:57

Сначала поместите вашу команду find ... в сценарий bash и вызовите этот сценарий из своего crontab. Если у вас есть зашифрованный домашний каталог (cat /home/.ecryptfs/$USER/.ecryptfs/Private.mnt), вам придется хранить ваш скрипт вне вашего дерева каталогов $HOME. Сохранение команды в crontab упрощает настройку, протоколирование и отладку, а синтаксический анализатор crontab не такой умный, как bash.

Во-вторых, всегда, всегда, ВСЕГДА проверяйте find с помощью -print и запускайте его, прежде чем рассматривать -delete.

В-третьих, тест find «-mtime 29» сообщает find «Найти файл mtime и вернуть True, если он равен 29. Вы должны использовать -mtime +29 find:

Numeric arguments can be specified as +n for greater than n, -n for less than n, n for exactly n.

В-четвертых, убедитесь, что у вас есть доступ на запись к каталогам в /home/USER/DIRECTORY1/DIRECTORY2/ .

В-пятых, вы имеете в виду /home/USER/DIRECTORY1/DIRECTORY2/ или /home/$USER/DIRECTORY1/DIRECTORY2/? Если $USER для пользователя userid, у вас есть проблема: cron не определяет $USER в среде выполнения . Он определяет $HOME, поэтому вы можете использовать $HOME/DIRECTORY1/DIRECTORY2.

3
ответ дан 17 July 2018 в 16:57

Я использую один для удаления резервных копий старше 10 дней, и он выглядит примерно так:

50 17 * * * find /path/to/files/filename* -type f -mtime +10 | xargs rm

Я использую filename*, потому что они предназначены для резервного копирования, чтобы они выглядят следующим образом:

filename04-04-2018.tar.gz filename04-05-2018.tar.gz filename04-06-2018.tar.gz
2
ответ дан 23 July 2018 в 17:48

Сначала поместите вашу команду find ... в сценарий bash и вызовите этот сценарий из своего crontab. Если у вас есть зашифрованный домашний каталог (cat /home/.ecryptfs/$USER/.ecryptfs/Private.mnt), вам придется хранить ваш скрипт вне вашего дерева каталогов $HOME. Сохранение команды в crontab упрощает настройку, протоколирование и отладку, а синтаксический анализатор crontab не такой умный, как bash.

Во-вторых, всегда, всегда, ВСЕГДА проверяйте find с помощью -print и запускайте его, прежде чем рассматривать -delete.

В-третьих, тест find «-mtime 29» сообщает find «Найти файл mtime и вернуть True, если он равен 29. Вы должны использовать -mtime +29 find:

Numeric arguments can be specified as +n for greater than n, -n for less than n, n for exactly n.

В-четвертых, убедитесь, что у вас есть доступ на запись к каталогам в /home/USER/DIRECTORY1/DIRECTORY2/ .

В-пятых, вы имеете в виду /home/USER/DIRECTORY1/DIRECTORY2/ или /home/$USER/DIRECTORY1/DIRECTORY2/? Если $USER для пользователя userid, у вас есть проблема: cron не определяет $USER в среде выполнения . Он определяет $HOME, поэтому вы можете использовать $HOME/DIRECTORY1/DIRECTORY2.

3
ответ дан 23 July 2018 в 17:48

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

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