我需要从网络服务器的目录中删除文件,并且需要一些脚本来自动执行此操作。还有一些需要满足的条件。
对于删除文件,我正在考虑某种玉米任务,但我对它们一无所知,所以这对我来说很棘手。
要删除文件,然后达到一定的限制,我在想某种 PHP 脚本对我有帮助。可能有一个专门用于这些东西的图书馆。
无论如何,我将非常高兴获得任何帮助。也许我只需要一些新的想法来为谷歌找到一个正确的关键字;P
编辑:我的服务器在 Linux 上运行。
如果您的服务器运行的是 Linux,那么
cron
工作是最好的选择。只需编写一个脚本来检查您提到的条件(例如使用 stat
和其他一些工具)并删除文件(如果适用),然后将 crond
设置为每 24 小时运行一次。 这里简单介绍一下cron
。
在 Windows 上,您可以使用脚本和计划任务执行类似的操作。
这是一个很好的 cron 作业教程和解释:
http://www.youtube.com/watch?v=lbJrk55Ae1c
自动执行任何脚本。只需编写一个脚本来删除文件夹中的所有文件,这就是您设置 cron 作业的目标。
这里是一个关于 PHP 程序员如何访问文件夹中的所有文件并连续使用每个文件的 php unlink() 函数来删除文件的教程。取消链接($文件);
这是根据文件日期自动执行文件删除的简单方法: Webmastips:针对网站管理员的提示和工具:由特定日期触发的自动文件删除 您可以自定义并自动执行此任务以满足您的需求。 问候,
转到 cPanel,选择 cron 作业并使用以下命令来创建它:
find /home/your_account/public_html/temp/* -mmin +360 -exec rm -r {} \;
它将每 360 秒清理一次“temp”(或任何其他名称)文件。您也可以更改它。
我被告知,如果您将以下内容添加到文件末尾,它将阻止您每次执行 cron 作业时收到电子邮件:
/dev/null 2>&1
这也可以使用 logrotate 和 systemd 计时器来实现,如此操作指南所示。
示例 logrotate 配置,比如
/path/logrotate/web-server-cleanup.conf
:
/path/to/directory/* {
size 1G
}
以上配置将删除所有与
/path/to/directory/*
路径正则表达式匹配且大小至少为 1G 的文件。
如果您希望它每天运行,您可以配置使用 systemd 每日计时器运行的 systemd 服务。
系统配置示例
/lib/systemd/system/web-server-cleanup.service
:
[Unit]
Description=Rotate log files
Documentation=man:logrotate(8) man:logrotate.conf(5)
ConditionACPower=true
[Service]
Type=oneshot
ExecStart=/usr/sbin/logrotate /path/logrotate/web-server-cleanup.conf -s /path/logrotate/web-server-cleanup.conf.state
systemd 计时器配置示例
/lib/systemd/system/web-server-cleanup.timer
:
[Unit]
Description=Daily rotation of log files
Documentation=man:logrotate(8) man:logrotate.conf(5)
[Timer]
OnCalendar=*-*-* 00:00:00
AccuracySec=1h
Persistent=true
[Install]
WantedBy=timers.target
您可以使用
sudo systemctl enable --now web-server-cleanup.timer
启用计时器