[shell] script met mv failes, target is not a directory

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Remco
  • Registratie: Januari 2001
  • Laatst online: 30-09 08:49
Een externe leverancier plaatst elke dag een aantal bestanden op de ftp-server die vervolgens middels een script verplaatst moeten worden naar een andere server.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
!/bin/bash
# Script om bestanden die x plaatst op de server te verplaatsen naar de server\data$ share.

#Eerst bepalen we of er files in de directory staan
totalfiles="$(ls /home/x/x_data | wc -l)"
logger -t ftptransferscript "Aantal files: " $totalfiles

#Als er files zijn, dus totalfiles is groter dan 0, dan gaan we een directory maken met een date/time stamp
#en deze vervolgens verplaatsen.
if [ "$totalfiles" -gt 0 ]
then
        #Er staan files, dus verplaatsen.
        #directory maken in de destination op basis van de timestamp
        timestamp="$(date +%Y%m%d_%H.%M.%S)"
        mkdir /mnt/x_data/"$timestamp"  2>&1 | logger -t ftptransferscript &

        #verplaatsen van bestanden
        mv /home/x/x_data/* /mnt/x_data/"$timestamp"/  2>&1 | logger -t ftptransferscript &
else
        #Er staan geen files, dus exit script.
        exit
fi


Als eerste bepaal ik of er wel files staan. Zo niet, einde script.
Zo wel, dan dient in de destination een directory gemaakt te worden op basis van datum en tijd. Dit werkt prima.
Vervolgens moeten de bestanden verplaatst worden naar de nieuwe directory.
En daar loopt het fout.
Ik krijg op het mv commando de fout:
code:
1
mv: target ‘/mnt/x_data/20141105_10.27.32/’ is not a directory

Oke, ik kan begrijpen dat er iets fout gaat bij het opbouwen van het mv commando, maar als ik een echo doe op regel 18, dan krijg ik het volgende resultaat:
code:
1
mv /home/x/x_data/GT_Text1.txt /home/x/x_data/GT_Text2.txt /mnt/x_data/20141105_10.30.41/

Dat ziet er toch goed uit.
Als ik dit commando vervolgens rechtstreeks vanuit de shell uitvoer, dan worden de bestanden netjes verplaatst.

Ik heb zoveel gezocht op Google, en tientallen suggesties geprobeerd met mv argumenten, een andere wijze opbouwen van het commando etc... etc..
Ik zie gewoon even niet meer wat er nu fout gaat.
Wie o wie kan mij verder op weg helpen?

The best thing about UDP jokes is that I don't care if you get them or not.


Acties:
  • 0 Henk 'm!

  • hcQd
  • Registratie: September 2009
  • Laatst online: 10:04
Je voert zowel de mkdir als de mv op de achtergrond (&) uit, afhankelijk van de timing van de commando's zal de directory wel of niet bestaan als de mv wordt uitgevoerd. Gewoon de ampersandjes weghalen en dan zou het moeten werken.

Acties:
  • 0 Henk 'm!

  • Remco
  • Registratie: Januari 2001
  • Laatst online: 30-09 08:49
Wow thanks. Had ik het nu maar een paar uur eerder gevraagd.....
Het werkt inderdaad perfect.

Thanks d:)b

The best thing about UDP jokes is that I don't care if you get them or not.