Vraag Cron-taak om de map met de datum van gisteren naar een andere map te verplaatsen


  1. Ik heb een systeem voor het uploaden van afbeeldingen op mijn website in de home1-directory met mappen in dit formulier 2018/04/19/abc.jpg (Jaar / mm / dd / finename). Ik moet een cron-taak instellen om de mapinhoud van de map vanaf 3 dagen terug te kopiëren / verplaatsen, bijvoorbeeld 16 als deze wordt uitgevoerd op 19, 17 als deze wordt uitgevoerd op 20, enzovoort, naar een overeenkomende map in home2.

  2. Nadat de inhoud van de map is verplaatst, moet ik een htaccess plaatsen in de map die naar de nieuwe map doorstuurt, zoals deze:

    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]
    

    In principe moeten het jaar, de maand en de datum dynamisch worden gegenereerd in het htaccess-bestand, dat overeenkomt met de map die is gekopieerd

Gelieve te helpen met de cron-taak.


0
2018-04-19 19:07


oorsprong




antwoorden:


U moet dit testen en paden aanpassen. Voel je vrij om dit antwoord aan te passen aan je behoeften nadat je dat hebt gedaan. Maar het is zoiets als dit:

#!/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

Dan in je crontab (crontab -e):

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

1
2018-04-20 04:54