2016-03-23 2 views
0

hochladen Ich versuche, ein Bash-Skript zu schreiben, die ich als Cronjob festlegen kann, um automatisch eine Sicherungsdatei via SFTP auf einen Remote-Server hochladen.Bash-Skript: Ich versuche, Datumsstempel Datei über SFTP

Die Sicherungsdateien auf dem lokalen Server sind mit Datumsstempel versehen (zB Sicherungsdatei-YYYY-mm-dd.tar.gz) und ich möchte, dass das Skript nur eine Datei aus dem Verzeichnis mit dem gleichen Datumstempel hochlädt das aktuelle Datum

Irgendwelche Ideen, wo ich falsch liege? Ich kann nicht anders, als zu denken, dass ich etwas Grundlegendes vermisse, aber ich kann nicht denken, was es ist!

Aktuelle gebrochen Skript unter:

#!/bin/bash 

FILE=$backups/$(date+%Y-%m-%d).tar.gz *<<<<< I'm guessing this is where it's slipping up* 

sshpass -p "remoteserverpassword" sftp -o StrictHostKeyChecking=no <user>@<remoteserverip) 

cd /directory1/directory2/ 

put $FILE 

exit 0 

EOF 
+4

wenn Sie ein Leerzeichen zwischen 'date' und '+' hinzufügen, funktioniert es dann? – thom

+0

Und was sagt Cron's Fehlerausgabe? Dies wird normalerweise dem Besitzer des Cron-Jobs per E-Mail zugesandt. – ghoti

Antwort

0

Sie sind recht, wo es rutscht nach oben ist, muss Datum eval'd werden vor dem Skript hier vorbei. Aus Gründen der Übersichtlichkeit neu formatiert, aber Sie könnten auch das ursprüngliche Skript verwenden.

#!/bin/bash                  

backup=/tmp 
today=`date +%Y-%m-%d` 

FILE=$backup/$today.tar.gz 

sshpass -p "remoteserverpassword" sftp -o StrictHostKeyChecking=no <user>@<remoteserverip) <<EOF                

cd /directory1/directory2/              

put $FILE                  

exit 0                   

EOF