Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix Cron作业-删除旧文件,但保留当月第一个月的文件_Unix_Cron - Fatal编程技术网

Unix Cron作业-删除旧文件,但保留当月第一个月的文件

Unix Cron作业-删除旧文件,但保留当月第一个月的文件,unix,cron,Unix,Cron,我目前正在成功运行mysql备份,并且在某些站点上,我正在使用此命令删除7天以前的文件 find /path/to/file -mtime +7 -exec rm -f {} \; 我想做的是,因为我有妄想症,仍然想要一些存档信息,删除超过31天的文件,但每个月至少维护一个文件,可能会保留在本月1日创建的任何文件 有什么想法吗?有点难看,但是您可以尝试解析ls-l rm `find /path/to/file -type f -mtime +7 -exec ls -l {} + | grep

我目前正在成功运行mysql备份,并且在某些站点上,我正在使用此命令删除7天以前的文件

find  /path/to/file -mtime +7 -exec rm -f {} \;
我想做的是,因为我有妄想症,仍然想要一些存档信息,删除超过31天的文件,但每个月至少维护一个文件,可能会保留在本月1日创建的任何文件


有什么想法吗?

有点难看,但是您可以尝试解析
ls-l

rm `find /path/to/file -type f -mtime +7 -exec ls -l {} + | grep -v ' [A-S][a-z][a-z]  1  ' | sed -e 's:.* /path/to/file:/path/to/file:g'`

或者编写一个脚本来获取列表,然后对它们一次运行一个。

有点难看,但是您可以尝试解析
ls-l的输出

rm `find /path/to/file -type f -mtime +7 -exec ls -l {} + | grep -v ' [A-S][a-z][a-z]  1  ' | sed -e 's:.* /path/to/file:/path/to/file:g'`

或者编写一个脚本来获取列表,然后对它们一次运行一个。

您也可以使用xargs编写一个脚本来包含如下内容:

find/path/to/files-mtime+7 | xargs-irm{}


然后将脚本添加到cron作业中

您还可以使用xargs编写一个包含如下内容的脚本:

find/path/to/files-mtime+7 | xargs-irm{}


然后将脚本添加到cron作业中

grep几乎是正确的,它只多了一个空间。这是可行的(至少对我来说,我使用Debian):


grep几乎是对的,它只多了一个空格。这是可行的(至少对我来说,我使用Debian):


可以使用以下命令创建文件:

SRC_DIR=/home/USB-Drive
DATE=$(/bin/date "+%4Y%2m%2d%2H%2M")
TIME_STAMP=$(/bin/date --date 'now' +%s)
TIME_CAL=$[$TIME_STAMP-2592000+25200] #last day, 25200 is my GMT+7hour 
TIME_LAST=$(/bin/date --date "1970-01-01 $TIME_CAL sec" "+%4Y%2m%2d%2H%2M")
/bin/touch -t ${TIME_LAST} /tmp/lastmonth
/usr/bin/find -P -H ${SRC_DIR}  ! -newer /tmp/lastmonth -type d -exec rm -r {} \;

您可以根据要删除的内容修改最后一个命令,在本例中,我要删除SRC_DIR中的子文件夹。一个多月前使用“时间属性”创建文件。

您可以使用以下命令创建文件:

SRC_DIR=/home/USB-Drive
DATE=$(/bin/date "+%4Y%2m%2d%2H%2M")
TIME_STAMP=$(/bin/date --date 'now' +%s)
TIME_CAL=$[$TIME_STAMP-2592000+25200] #last day, 25200 is my GMT+7hour 
TIME_LAST=$(/bin/date --date "1970-01-01 $TIME_CAL sec" "+%4Y%2m%2d%2H%2M")
/bin/touch -t ${TIME_LAST} /tmp/lastmonth
/usr/bin/find -P -H ${SRC_DIR}  ! -newer /tmp/lastmonth -type d -exec rm -r {} \;

您可以根据要删除的内容修改最后一个命令,在本例中,我要删除SRC_DIR中的子文件夹。一个多月前使用了“时间属性”。

似乎不起作用。它只是删除了所有超过31天的文件。似乎不起作用。它刚刚删除了所有超过31天的文件。