php удалить файлы старше n дней

Не получается удалить старые файлы на сервере

Пытаюсь использовать его так:

Помощь в написании контрольных, курсовых и дипломных работ здесь.

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

Найти папки с заданным именем, удалить старые файлы и пустые папки
добрый день помогите написать маленький скриптик 1. найти папки с именем «папка обмена» в.

Нужно удалить на фтп сервере устаревшие файлы.
Привет всем. Задача проста как дверь. Нужно удалить на фтп сервере устаревшие файлы. Есть.

ничего не происходит

Добавлено через 8 минут
Правильный ли код или может быть есть какие то ньюансы вроде кодеровки файла (я пробовал сохранять и в UTF8 и в ANSI разницы нет, ничего не происходит.)?

Решение

Что бы путь до папки сам вставлялся. скрипт классный, но вот в автоопределении пути затык.
Скрипт в этой же папке лежит, где и удалять файлы надо.

Да у меня надо заглушки на сайтах удалять. Домены разные, все не пропишешь. Поэтому и надо автоопределение.

Добавлено через 8 часов 24 минуты
Подсказали как решить проблему.

Создал файл 1.txt с текстом ааа, и через секунду запустил скрипт, выдает это

Вот код (может не там изменяю, на всякий случай выложу)

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n днейУдалить определенные файлы на FTP сервере (пути к файлам известны)
Добрый день, уважаемые форумчане! С FTP я на вы, поэтому очень нужен совет! Ситуация такая.

Почему не получается установить старые версии iTunes?
Мне нужна старая версия чтобы пользоваться appstore. У меня 4 iphone, и я не могу устанавливать.

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n днейНе получается задача на матрицы. В ответе выводит старые данные
Доброго времени суток. Такая задача: задать размер массива в ручную, элементы автоматически. строку.

Старые аудио файлы не открываются
На работе есть сервер для хранения данных и как то понадобились аудио записи за пару лет тому.

Источник

unlink

(PHP 4, PHP 5, PHP 7, PHP 8)

unlink — Удаляет файл

Описание

Список параметров

Возвращаемые значения

Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.

Список изменений

ВерсияОписание
7.3.0В Windows теперь можно удалить файлы функцией unlink() с использованием дескрипторов, хотя раньше это не удавалось. Тем не менее, всё ещё невозможно повторно создать удалённый файл, пока все дескрипторы к нему не будут закрыты.

Примеры

Пример #1 Пример простого использования unlink()

Привет, мир!

Смотрите также

User Contributed Notes 11 notes

This will delete all files in a directory matching a pattern in one line of code.

Deleted a large file but seeing no increase in free space or decrease of disk usage? Using UNIX or other POSIX OS?

However, it’s perfectly fine for a file to have several names (see the link() function), in the same or different directories. All the names will refer to the file body and `keep it alive’, so to say. Only when all the names are removed, the body of file actually is freed.

The caveat:
A file’s body may *also* be `kept alive’ (still using diskspace) by a process holding the file open. The body will not be deallocated (will not free disk space) as long as the process holds it open. In fact, there’s a fancy way of resurrecting a file removed by a mistake but still held open by a process.

I have been working on some little tryout where a backup file was created before modifying the main textfile. Then when an error is thrown, the main file will be deleted (unlinked) and the backup file is returned instead.

Though, I have been breaking my head for about an hour on why I couldn’t get my persmissions right to unlink the main file.

Finally I knew what was wrong: because I was working on the file and hadn’t yet closed the file, it was still in use and ofcourse couldn’t be deleted 🙂

So I thought of mentoining this here, to avoid others of making the same mistake:

Here the simplest way to delete files with mask

Источник

Очистка файлов PHP сессии

как они должны быть очищены? Должен ли я делать это программно, или это параметр, который я могу использовать где-то, чтобы эта очистка происходила автоматически?

EDIT забыл упомянуть: этот сайт работает на поставщик, поэтому у меня нет доступа к командной строке. У меня есть ftp-доступ, но файлы сеанса принадлежат другому пользователю (тот, который работает на веб-сервере proces, я думаю) из первых ответов, которые я получил, я думаю, что это не просто настройка на сервере или PHP, поэтому я думаю, что мне придется реализовать что-то для него в PHP и периодически вызывать это из браузера (возможно, из задания cron, работающего на моей собственной машине дома)

9 ответов:

там вы найдете эти переменные:

они управляют вероятностью запуска сборщика мусора (GC) с каждым запросом страницы.

Debian /Ubuntu обрабатывает это с помощью cronjob, определенного в/etc / cron.d / php5

скрипт maxlifetime просто возвращает количество минут, которое сеанс должен поддерживать, проверяя php.ini, это выглядит так

в случае если кто-то хочет сделать это с cronjob, пожалуйста, имейте в виду, что это:

очень медленно, когда у вас много файлов.

рассмотрите возможность использования этого вместо:

если у вас есть пробелы в именах файлов, используйте это:

просто мои два цента

используйте cron с find для удаления файлов старше заданного порога. Например, чтобы удалить файлы, которые не были доступны в течение по крайней мере недели.

вы можете создать скрипт / etc / cron.ежечасно / php и ставлю туда:

затем сделайте скрипт исполняемым (chmod +x).

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

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

кроме того, я бы не стал сильно беспокоиться 145.000 файлов.

Источник

Пакетный файл для удаления файлов старше N дней

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

подобные вещи могут быть сделано в Баш всего пару строк кода. Кажется, что что-то, по крайней мере, удаленно легко можно сделать для пакетных файлов в Windows. Я ищу решение, которое работает в стандартная командная строка Windows, без каких-либо дополнительных утилит. Пожалуйста, не PowerShell или Cygwin.

24 ответов

посмотреть forfile documentation для получения более подробной информации.

более поздние версии Windows и Windows Server установлены по умолчанию.

синтаксис немного изменился. Поэтому обновленная команда:

выполните следующие действия команды:

переместите все файлы (используя /mov, который перемещает файлы, а затем удаляет их в отличие от /move, который перемещает целые filetrees, которые затем удаляются) через robocopy в другое место, а затем выполните команду delete на этом пути, и все хорошо.

также, если у вас есть каталог с большим количеством данных, вы можете использовать /mir переключатель

Ok немного заскучал и придумал это, в котором содержится моя версия замены эпохи Linux бедного человека, ограниченная для ежедневного использования (без удержания времени):

использование

set /a strip=day*7 : изменить 7 на число дней хранения.

set dSource=C:\temp : это начальный каталог для проверки файлов.

Примечания

Это неразрушающий код, он будет отображать то, что было бы получилось.

таким образом, файлы на самом деле удаляются

февраля: жестко до 28 дней. Bissextile лет-это ад, чтобы добавить, действительно. если у кого-то есть идея, которая не добавит 10 строк кода, продолжайте и публикуйте, поэтому я добавляю ее в свой код.

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

ограничение

эпохи принимает как должное ваш короткий формат даты гггг-ММ-ДД. Он должен быть адаптирован для других параметров или оценки времени выполнения (чтение sShortTime, конфигурация с привязкой к пользователю, настройка правильного порядка полей в фильтре и использование фильтра для извлечения правильных данных из аргумента).

я упоминал, что ненавижу этого редактора авто-форматирование? он удаляет пустые строки, а copy-paste-это ад.

надеюсь, это поможет.

это удаляет файлы старше заданной даты. Я уверен, что он может быть изменен, чтобы вернуться на семь дней с текущей даты.

обновление: Я замечаю, что HerbCSO улучшился на вышеуказанном сценарии. Я рекомендую использовать его версия.

и forfiles /? не работает для меня, но forfiles (без «?») работать отлично.

и единственный вопрос, который у меня есть: как добавить несколько масок (например,».log/.бак»)?

все это касается forfiles.exe, который я скачать тут (на win XP)

но если вы используете Windows server forfiles.exe должны быть уже там и отличается от ftp версии. Вот почему я должен изменить команду.

для Windows Server 2003 я использую эту команду:

Для Windows Server 2008 R2:

это удалит все .в SQL файлы старше 90 дней.

скопируйте этот код и сохраните его как DelOldFiles.vbs.

использование только в командной строке: Cscript DelOldFiles.vbs 15

15 означает удаление файлов старше 15 дней в прошлом.

есть разные версии. Ранние используют параметры стиля unix.

чтобы добавить forfiles в XP, получите exe отftp://ftp.microsoft.com/ResKit/y2kfix/x86/

и добавьте его в C:\WINDOWS\system32

IMO, JavaScript постепенно становится универсальным стандартом сценариев: он, вероятно, доступен в большем количестве продуктов, чем любой другой язык сценариев (в Windows он доступен с помощью узла сценариев Windows). Я должен очистить старые файлы во многих папках, поэтому для этого есть функция JavaScript:

для каждой папки, чтобы очистить, просто добавьте еще один вызов функции clearFolder (). Именно этот код также сохраняет exe и dll файлы и очищает подпапки.

как насчет этой модификации на 7daysclean.cmd принять во внимание високосный год?

Это можно сделать менее чем за 10 строк кодирования!

редактировать Mofi:

условие выше внесено Ж. Р. оценивает всегда false из-за недопустимый синтаксис.

и Month GEQ 2 также неправильно, потому что добавление 86400 секунд еще на один день должно быть сделано в прыжке год только для месяцев с марта по декабрь, но не для февраля.

рабочий код для учета високосного дня-только в текущем году-в пакетном файле 7daysclean.cmd сообщение от Джей будет:

для windows 2012 R2 будет работать следующее:

чтобы увидеть файлы, которые будут удалены, используйте это

есть очень часто относительные вопросы, связанные с датой / временем, чтобы решить с помощью пакетного файла. Но интерпретатор командной строки cmd.exe не имеет функции для вычислений даты/времени. Здесь, на других страницах Stack Overflow и на других сайтах уже опубликовано множество хороших рабочих решений с использованием дополнительных консольных приложений или скриптов.

общим для операций, основанных на дате / времени, является требование преобразовать строку даты/времени в секунды с момента решительный день. Очень распространенным является 1970-01-01 00:00: 00 UTC. Но любой более поздний день может также использоваться в зависимости от диапазона дат, необходимого для поддержки конкретной задачи.

Джей опубликовано 7daysclean.cmd содержащий быстрое решение «дата-секунды» для интерпретатора командной строки cmd.exe. Но она не учитывает високосные годы. Ж. Р. опубликовал дополнения для принятия високосного дня в текущем году в учет, но игнорирование других високосных лет с базового года, т. е. с 1970 года.

я использую с 20 лет статические таблицы (массивы), созданные один раз с небольшой функцией C для быстрого получения количества дней, включая високосные дни с 1970-01-01 в функциях преобразования даты/времени в моих приложениях, написанных на C/C++.

этот очень быстрый метод таблицы можно использовать также в пакетном коде, используя на. Поэтому я решил закодировать пакетную подпрограмму GetSeconds что вычисляет количество секунд, прошедших с 1970-01-01 00:00:00 UTC для дату/время прошло в эту рутину.

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

дней, начиная с 1970-01-01 00:00:00 UTC для каждого года, включая високосные дни.

вычисление секунд для года 2039 до 2106 с началом эпохи 1970-01-01 возможен только с использованием 32-разрядной переменной без знака, т. е. unsigned long (или unsigned int) в C/C++.

но cmd.exe используйте для математических выражений 32-разрядную переменную со знаком. Поэтому максимальное значение-2147483647 (0x7FFFFFFF), которое равно 2038-01-19 03:14:07.

високосный год информация (нет / да) за годы с 1970 по 2106.

количество дней до первого дня каждого месяца в текущий год.

преобразование даты в количество секунд с 1970-01-01 довольно просто с помощью этих таблиц.

обратите внимание!

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

например, когда %DATE% увеличивается до Sun 02/08/2015 пока %%

tF увеличивается до 02/08/2015 07:38 PM приведенный ниже код можно использовать с изменением строки 4 на:

альтернативно следующее Может быть использовано для передачи текущей даты в правильном формате:

вот пакетный код с объяснением комментариев, который просто выводит, какой файл удалить и какой файл сохранить в C:\Temp дерево папок, см. код first на петли.

для оптимальной производительности лучше всего удалить все комментарии, т. е. все строки, начинающиеся с rem после 0-4 ведущих мест.

и массивы могут быть и меньше, т. е. уменьшается диапазон времени от 1980-01-01 00: 00: 00 до 2038-01-19 03:14: 07, как в настоящее время поддерживается пакетным кодом выше, например, до 2015-01-01 до 2019-12-31, как код ниже использует который действительно удаляет файлы старше 7 дней в C:\Temp дерево папок.

далее пакетный код ниже оптимизирован для 24-часового формата времени.

для получения дополнительной информации о форматах даты и времени и сравнениях времени файлов в Windows см. Мой ответ на узнайте, есть ли файл старше 4 часов в пакетном файле С большим количеством дополнительной информации о времени файлов.

могу ли я добавить скромный вклад в эту уже ценную тему. Я нахожу, что другие решения могут избавиться от фактического текста ошибки, но игнорируют %ERRORLEVEL%, который сигнализирует об ошибке в моем приложении. И я законно хочу %ERRORLEVEL% до тех пор, пока это не ошибка «нет найденных файлов».

Примеры:

отладка и устранение ошибок в частности:

использование oneliner чтобы вернуть успех или неудачу ERRORLEVEL:

использование oneliner для сохранения уровня ошибок на нуле для успеха в контексте batchfile посреди другого кода (ver > nul сбрасывает уровень ошибок):

для шага задания CmdExec агента SQL Server я приземлился на следующем. Я не знаю, является ли это ошибкой, но CmdExec в пределах шага распознает только первую строку кода:

Если у вас есть набор ресурсов XP, вы можете использовать robocopy для перемещения всех старых каталогов в один каталог, а затем использовать rmdir для удаления только этого:

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

Примечание: приведенный выше код учитывает високосные годы, а также точное количество дней в каждом месяце. Единственным максимумом является общее количество дней, прошедших с 0/0/0 (после этого он возвращает отрицательные годы).

Примечание: математика идет только в одну сторону; она не может правильно получить будущие даты от отрицательного ввода (он попытается, но, скорее всего, пройдет мимо последнего дня месяца).

возможно, вы сможете это сделать. Вы можете взглянуть на этот вопрос, для более простого примера. Сложность возникает, когда вы начинаете сравнивать даты. Может быть легко сказать, является ли дата больше или нет, но есть много ситуаций, чтобы рассмотреть, если вам нужно на самом деле получить разницу между двумя датами.

это ничего удивительного, но мне нужно было сделать что-то вроде этого сегодня и запустить его как запланированную задачу и т. д.

пакетный файл, DelFilesOlderThanNDays.bat ниже с образцом exec w / params:

DelFilesOlderThanNDays.летучая мышь!—7—>7 C:\dir1\dir2\dir3\logs *.log

расширяя ответ Аку, я вижу, что многие люди спрашивают о путях UNC. Простое сопоставление пути unc с буквой диска сделает forfiles счастливыми. Например, сопоставление и распаковка дисков могут выполняться программно в пакетном файле.

ROBOCOPY прекрасно работает для меня. Первоначально предложил мою Иман. Но вместо того, чтобы перемещать файлы / папки во временный каталог, а затем удалять содержимое временной папки,переместить файлы в корзину.

Это несколько строк моего резервного пакетного файла, например:

Он очищает что-либо старше 15 дней из моей папки «Temp» и 30 дней для чего-либо в моей папке резервного копирования AutoCAD. Я использую переменные, потому что линия может стать довольно длинной, и я могу использовать их для других мест. Вам просто нужно найти путь dos к вашей корзине, связанной с вашим логином.

Это на рабочем компьютере для меня и это работает. Я понимаю, что некоторые из вас могут иметь более ограничительные права, но все равно попробуйте;) поиск Google для объяснений параметров ROBOCOPY.

этот сделал это для меня. Он работает с датой, и вы можете вычесть нужную сумму в годах, чтобы вернуться во времени:

на /F на cmd /c del @path /F заставляет конкретный файл удаляться в некоторых случаях, когда файл может быть доступен только для чтения.

на dateYear является переменной года, и там вы можете изменить подстроку на свои собственные потребности

Источник

How to delete files older than X hours

I’m writing a bash script that needs to delete old files.

It’s currently implemented using :

This will delete of the files older than 1 day.

9 Answers 9

Or maybe look at using tmpwatch to do the same job. phjr also recommended tmpreaper in the comments.

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

Here is the approach that worked for me (and I don’t see it being used above)

deleting all the files older than 59 minutes while leaving the folders intact.

-mmin is for minutes.

Try looking at the man page.

php удалить файлы старше n дней. Смотреть фото php удалить файлы старше n дней. Смотреть картинку php удалить файлы старше n дней. Картинка про php удалить файлы старше n дней. Фото php удалить файлы старше n дней

If we were able to create a file that that has an mtime of our cut-off time, we can ask find to locate the files that are «not newer than» our reference file.

Fortunately, other old tools can manage this, albeit in a more unwieldy way.

To begin finding a way to delete files that are over six hours old, we first have to find the time that is six hours ago. Consider that six hours is 21600 seconds:

Since the perl statement produces the date/time information we need, use it to create a reference file that is exactly six hours old:

Now that we have a reference file exactly six hours old, the «old UNIX» solution for «delete all files older than six hours» becomes something along the lines of:

It might also be a good idea to clean up our reference file.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *