Cron 作业将具有昨天日期的目录移动到另一个目录

Cron 作业将具有昨天日期的目录移动到另一个目录
  1. 我的网站 home1 目录中有一个图片上传系统,其中包含以下格式的文件夹2018/04/19/abc.jpg(year/mm/dd/finename)。我需要设置一个 cron 作业来将 3 天前的文件夹内容复制/移动到 home2 中的相应文件夹,即如果在 19 日运行则为 16 日,如果在 20 日运行则为 17 日,依此类推。

  2. 一旦目录内容被移动,我需要在文件夹中放置一个 htaccess 以重定向到新目录,如下所示:

    RewriteEngine On
      RewriteCond %{HTTP_HOST} ^example.com$ [OR]
      RewriteCond %{HTTP_HOST} ^www.example.com$
      RewriteRule ^(.*)$ https://example.com/new_directory/uploads/YYYY/MM/DD/$1 [R=301,L]
    

    基本上,年份、月份和日期应该在 htaccess 文件中动态生成,与复制的目录相对应

请协助完成 cron 任务。

答案1

您需要测试并调整路径。完成后,您可以随意编辑此答案以满足您的需求。但它是这样的:

#!/bin/bash
THREEDAYSAGO=$(date +%Y/%m/%d --date='3 days ago')
SRC="~/home1/"
DEST="~/home2/"

mv -f $SRC/$THREEDAYSAGO $DEST/$THREEDAYSAGO
cat << EOF >/$DEST/$THREEDAYSAGO/.htaccess
RewriteEngine On
  RewriteCond %{HTTP_HOST} ^example.com$ [OR]
  RewriteCond %{HTTP_HOST} ^www.example.com$
  RewriteRule ^(.*)$ https://example.com/new_directory/uploads/${THREEDAYSAGO}/\$1 [R=301,L]
EOF

然后在你的 crontab( crontab -e) 中:

# Every day at 12:00am
0 0 * * * /path/to/my/script

相关内容