bruno1: Script funktioniert nicht am Stück

Hallo liebe Gemeinde,

ich habe heute ein seltsames Problem.
Ich habe mir ein Server-Backup Script geschrieben:

#!/bin/bash
date=date "+/tmp/backup-%Y-%m-%d.tar.bz2"
tar cfvj $date /var/www
ncftpput -u admin -p ***** xxx.xxx.xxx.xxx shares/USB/backup/ $date
rm -f $date

Führe ich das Script im Terminal Zeile für Zeile (bis auf die erste) aus, so funktioniert es wunderbar.
Führe ich es aber mit "bash backup.sh" aus (Das Script liegt im Verzeichnis /var/www), so kommt folgende Fehlermeldung:
[root@s15430844 www]# bash backup.sh
tar: Removing leading `/' from member names
tar: /var/www\r: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors
 for reading: No such file or directory.08-12.tar.bz2
: could not open file.011-08-12.tar.bz2

Ich versteh das nicht.
Vermutlich liegt es an der ersten Zeile, dass bash hier falsch ist, oder?

bruno1

  1. Hallo,

    tar: /var/www\r: Cannot stat: No such file or directory
    tar: Error exit delayed from previous errors
    for reading: No such file or directory.08-12.tar.bz2
    : could not open file.011-08-12.tar.bz2

    falsche Zeilenumbrüche?

    Ich versteh das nicht.
    Vermutlich liegt es an der ersten Zeile, dass bash hier falsch ist, oder?

    Vermutlich liegt es an allen Zeilen - nämlich daran, dass sie mit \r\n enden, anstatt nur mit \n.
    Merke: Windows verwendet üblicherweise \r\n als Zeilenumbruch, unixoide Systeme nur \n. Und die bash scheint hier das \r, das aus Windows-Sicht zum Zeilenumbruch gehört, dem Nutzinhalt zuzurechnen.

    Ciao,
     Martin

    --
    Krankenschwester zum fassungslosen Vater von Drillingen: Nein, Sie sollen sich keins aussuchen! Alle drei sind Ihre!
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hi,

      falsche Zeilenumbrüche?
      Vermutlich liegt es an allen Zeilen - nämlich daran, dass sie mit \r\n enden, anstatt nur mit \n.
      Merke: Windows verwendet üblicherweise \r\n als Zeilenumbruch, unixoide Systeme nur \n. Und die bash scheint hier das \r, das aus Windows-Sicht zum Zeilenumbruch gehört, dem Nutzinhalt zuzurechnen.

      Danke für den Hinweiß.
      Ich hab jetzt die Datei mit touch backup.sh angelegt, sie dann mit vi backup.sh gefüttert, und sie anschließend noch mit chmod "u+x" backup.sh ausführbar gemacht.
      Jetzt läuft das Script, zu mindest der Anfang, sollten während des Ausführens noch Fehler auftauchen, so melde ich mich später noch einmal.

      Danke für die Hilfe

      bruno1

      1. Hi!

        Ich hab jetzt die Datei mit touch backup.sh angelegt, sie dann mit vi backup.sh gefüttert

        vi kann die Datei auch selbst anlegen.

        Beachte außerdem, dass der PATH anders sein kann, wenn sie von verschiedenen Umgebungen heraus aufgerufen wird. In der Shell ist er für Anwender komfortabel lang. Vom Cron und aus anderen Umgebungen aufgerufen ist er oft "zu kurz". Grund ist, dass explizit das gewünschte Programm angegeben werden soll, damit nicht irgendwer irgendwas im Pfad vornanstellt und dein Script dann unbewusst was startet, was dir nicht lieb ist.

        Lo!