Я новичок в Ubuntu, и у меня нет большого опыта работы с Linux / Unix, поэтому, пожалуйста, потерпите меня, пока я пытаюсь пройти через это.
У меня есть система камер, которая записывает отснятый материал, делает снимки экрана и сохраняет их в папке. Проблема заключается в том, что новые файлы не перезаписывают старые файлы, поэтому файловая система заполняется и все новые файлы удаляются.
Поэтому я установил «Запланированные задачи» в графическом интерфейсе Ubuntu и создал задачу, которая запускалась каждый день. Вот задача:
find /media/dvr/* -type f -mtime 0 -exec rm -rf {} \;
У меня -mtime
установлено для 0
для целей тестирования, оно будет установлено на 7
, если я смогу заставить это работать.
Проблема в том, что в папке /dvr
есть папка lost + found. Когда он попадает в эту папку, он говорит, что у меня нет разрешения на его просмотр, и он никогда не заканчивает поиск. Я использовал sudo для входа и изменения прав доступа и прав доступа rwx, но это все равно не помогает.
Есть ли способ выполнить то, что я хочу сделать, используя find? Есть ли более эффективный способ очистки папки /dvr/
?
Как я уже сказал, новичок в этом и пытается выздороветь. Любая помощь будет принята с благодарностью!
Эти find
команда не выходит на проблемах разрешения, насколько я знаю, она не может просто находить файлы по различной причине. То, что я могу предложить, должно устранить stderr так, чтобы Вы не получали вводящие в заблуждение сообщения в выводе, и протестировать команду с помощью echo
замена rm -rf
, т.е.
find /media/drv/ -type f -mtime 7 -exec echo {} \; 2> /dev/null
Это должно перечислить файлы, которые были бы удалены в окончательной версии с rm -rf
. Если Вы действительно хотите пропустить lost+found
каталог (который не должен быть необходимым), используйте:
find /media/drv/ -type f -mtime 7 -not -wholename "*lost+found*" -exec echo {} \; 2> /dev/null
Установка полномочий правильно должна сделать это. Что делает ls -ld /media/dvr/lost+found
, говорят? Также отбросьте * в конце/media/dvr/. Вы хотите, находят для запуска его поиска в/media/dvr/, и когда Вы добавляете *, замены оболочки, которые представляют в виде строки с названием каждого файла, который это находит в/media/dvr/.
также можно просто удалить lost+found каталог.
Просто сделайте:
find /media/drv -name lost+found -prune -o -type f -exec echo '{}' ';'
В целом это - очень очень плохая идея перенаправить stderr к/dev/null. Смысл stderr должен показать неожиданные ошибки. Если Вы ожидаете, что определенная ошибка тогда создает Вашу команду для предотвращения его.