Назад | Перейти на главную страницу

Удалите старые файлы в большой папке

У меня есть папка, в которой много файлов. Я хочу удалить файлы старше 30 дней, поэтому использую команду:

find cache/ -mtime +30 -exec rm {} \;

Но мой сеанс SSH отключается до завершения команды.

Как я могу ограничить количество файлов, которые удаляются за один раз? Например:

find cache/ -mtime +30 -LIMIT 10000 -exec rm {} \;

Запустите это в screen сеанс. Таким образом, когда шпатлевка отключается, задание все еще выполняется на сервере. Просто подключитесь и используйте screen -r чтобы повторно прикрепить сеанс экрана, чтобы увидеть прогресс.

Вы также можете запустить команду с помощью nohup, как это:

nohup find cache/ -mtime +30 -exec rm {} \; &

затем cat nohup.out следить за выходом.

Вы можете сделать что-то вроде:

find cache/ -mtime +30 | head -n 10000 | xargs rm

Это сработало бы, если бы имена файлов были достаточно «ванильными» (без пробелов, специальных символов и т. Д.) И короткими.

Но если вы предпочитаете просто дождаться завершения вашей исходной команды, вы можете просто указать PuTTY, чтобы он периодически отправлял SSH-сообщения keepalive; видеть документы PuTTY для подробностей. Я обычно использую значение от 45 до 60 секунд.

find cache/ -mtime +30 -print0 | xargs -0 rm -v

Затем он будет выводить каждый удаленный файл, что должно предотвратить время ожидания сеанса.

Или поместите это в cron, так как похоже, что это должно быть автоматизировано.