Я полный нуб в Linux, но я начинаю понимать это. У меня Ubuntu Server 16.04 работает FTP-сервер для резервного копирования видео файлов безопасности. Файлы будут сохранены в папках , как: /home/securityfolder1
, /home/securityfolder2
, /home/securityfolder3
и так далее.
Обратите внимание, что каждый из них securityfolderN
является отдельным пользователем.
Поскольку я не хочу, чтобы мои жесткие диски были заполнены постоянно, я хочу ежедневно удалять файлы старше 7 дней из этих папок.
files
cron
delete
automation
Жако ван де Вейгаарт
источник
источник
/home
обычно содержит подпапку для каждого пользователя. Если вы не хотите хранить резервные копии как разные пользователи (не очень хорошая идея), вам следует рассмотреть другое место, например,/home/security/backup1
и так далее.Ответы:
Сначала эта команда найдет и удалит все файлы старше 7 дней в любом подкаталоге
/home
, имя которого начинается сsecurityuser
:Вам нужно,
-mtime +6
а не+7
потому, что-mtime
отсчитывает 24-часовой период. Как объясняется в-atime
разделеman find
(-mtime
работает так же):Итак, чтобы найти файл, который был изменен 7 или более дней назад, вам необходимо найти файлы, которые были изменены более 6 дней назад, следовательно
-mtime +6
.Следующим шагом будет запуск этой команды один раз в день. Так как каждый из них
securityuserN
является отдельным пользователем (вы можете переосмыслить эту настройку, все усложняется), его нужно запускать с правами root. Итак, отредактируйте/etc/crontab
:И добавьте эту строку:
Это будет запускать
find
команду один раз в день и удалять файлы.источник
find '/home/securityuser/*' -mtime +6 -type f -delete
(со всеми уместными и соответствующими изменениями в создании пользователя), как правило, может быть лучшей идеей, чемfind '/home/securityuser*' -mtime +6 -type f -delete
(без косой черты в пути) ...?/home/securityuserN
, поэтому без косой черты они не будут найдены.-name
:find /home/ -name 'securityuser*' -mtime +6 -type f -delete
'securityuser*'
. Подстановочный знак должен быть расширен за счет оболочки, а не за счетfind
, поэтому он должен был бытьsecurityuser*
(без кавычек). Смотрите обновленный ответ. Спасибо за указание на это, Стелио, я не могу поверить, что никто не заметил раньше! Ти влакас!согласно моим знаниям:
попробуйте
find
команду так:источник
find /home/jacco/ -mtime +1 -type f -delete
и это, кажется, работает. Как я могу автоматизировать это?#!/bin/bash
кодом под этим? или я действительно тупой прямо здесь?find '/u*' -name local
. Это такие директивы,-name "foo*"
которые должны быть заключены в кавычки, когда они содержат символы глобуса.