Symlink iedere dag naar ander/nieuwste bestand

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • KeRsTmAnNeKe
  • Registratie: Februari 2001
  • Laatst online: 29-09 13:48
Mijn Google skills zijn niet voldoende of ik zoek niet goed... dus dan maar hier proberen.

Ik heb een script wat dagelijks moet gaan draaien, deze verwacht een .csv bestand om te gaan verwerken, welke een vaste naam moet hebben.

Ik heb ook een externe partij welke dagelijks een csv bestand upload, welke dan verwerkt moet worden.

Issue is dat het bestand wat die externe partij dagelijks plaatst een timestamp in de bestandnaam heeft zitten, goed om het uniek te houden, maar dat kan ik nu alleen handmatig in m'n configuratie voor dat scriptje zetten.

Uiteraard gelijk gevraagd of dat niet anders kon en ze dat dagelijks konden overschrijven, maar helaas.
Wel getest of dat csv bestand een symlink kon zijn, dat werkt wel.


Idee van mij was daarom om iedere dag een symlink te maken waarna dat script kon draaien.
Is het mogelijk dit automatisch (cron?) te doen, zoeken naar het nieuwste bestand, en de symlink overschrijven met een link hiernaartoe?

Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Nu online

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Kan dat script niet gewoon worden aangepast om de meest recente file te openen in plaats van een file met een vaste naam? Of desnoods aan het begin van het script de meest recente file hernoemen naar wat er verwacht wordt.

Een script wat dagelijks voordat het daadwerkelijk script draait een symlinkje bijwerkt kan vast ook wel. Wat heb je zelf al opgezocht en geprobeerd?

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

  • RemcoDelft
  • Registratie: April 2002
  • Laatst online: 03-05 10:30
Om je op weg te helpen: duik even in de opties van `date`. Copy/paste voorbeeld uit m'n eigen collectie:
#year=`date +%Y`
#month=`date +%m`
#day=`date +%d`
#datum=$year\_$month\_$day

backupdir=/media//daily_backups/`date +%Y_%m_%d_%a_%H.%Mh`
Op deze manier kan je direct de gewenste naam pakken.

Acties:
  • 0 Henk 'm!

  • daft_dutch
  • Registratie: December 2003
  • Laatst online: 08-09 21:46

daft_dutch

>.< >.< >.< >.<

even een stukje uit mijn debian server restore script gehaald
./script <file> als argument zonder argument wordt het nieuwste bestand gepakt
code:
1
2
3
4
5
if [ -z $1 ] ;  then
        backupFile=$(ls -t backup.* | head -1)
else
        backupFile=$1
fi


hier het antwoordt op jou vraag
code:
1
 ln -s `ls -t /bronDir/* | head -1 `  <target>

[ Voor 89% gewijzigd door daft_dutch op 11-09-2015 16:03 ]

>.< >.< >.< >.<


Acties:
  • 0 Henk 'm!

  • KeRsTmAnNeKe
  • Registratie: Februari 2001
  • Laatst online: 29-09 13:48
Orion84 schreef op vrijdag 11 september 2015 @ 14:56:
Kan dat script niet gewoon worden aangepast om de meest recente file te openen in plaats van een file met een vaste naam? Of desnoods aan het begin van het script de meest recente file hernoemen naar wat er verwacht wordt.

Een script wat dagelijks voordat het daadwerkelijk script draait een symlinkje bijwerkt kan vast ook wel. Wat heb je zelf al opgezocht en geprobeerd?
'script' is een magento module die zijn info weer uit een xml haalt, daar moet de bestandsnaam in opgenomen worden. Al gekeken op wat voor manieren dat allemaal ging, maar liep overal op vast.

Laatste reactie van daft_dutch is wel iets waar ik een heel eind verder mee kom.

  • d1ng
  • Registratie: Augustus 2009
  • Laatst online: 06-05-2024
KeRsTmAnNeKe schreef op vrijdag 11 september 2015 @ 14:51:
Ik heb ook een externe partij welke dagelijks een csv bestand upload, welke dan verwerkt moet worden.

Issue is dat het bestand wat die externe partij dagelijks plaatst een timestamp in de bestandnaam heeft zitten, goed om het uniek te houden, maar dat kan ik nu alleen handmatig in m'n configuratie voor dat scriptje zetten.
In het date commando zit zo'n -d vlaggetje, waarmee je kan matchen op een beschrijvende string.

Voorbeeld:
Als de datum in je filename, het datumformaat "2015-09-12" bevat, dan zal je file van vandaag matchen.
code:
1
find . -type f | grep $(date +%F -d 'today')

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
Kan je niet een pre-job maken die je mapje waar het bestand van die partij in terecht komt naar een andere map verplaatst onder de juiste naam? Dan heb je altijd een bestand, ook als het bijvoorbeeld een keer niet door komt, want mv doet niets als je source niet bestaat.

Acties:
  • 0 Henk 'm!

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 16:40
Of gewoon een wildcard gebruiken en de csv verwijderen?
Pagina: 1