Author Topic: [Bash]Periodic LFTP / SFTP Directory Download  (Read 1445 times)

p

  • Global Moderator
  • Apache
  • *****
  • Posts: 110
  • Karma: +27/-0
    • View Profile
[Bash]Periodic LFTP / SFTP Directory Download
« on: December 05, 2013, 01:07:58 pm »
Code: [Select]
#!/bin/bash
    check=$(ps aux | grep download.sh | grep -v grep | grep -v tail | grep -v less | wc -l)
    if [ "$check" -ge 3 ]
    then
        echo "Transfer already running"
    else
        #local & remote dir
        ldir="/X/X/"
        rdir="/X/X/"
        #sleep time
        s=3
        #counter
        n=1
        #credentials
        u="username"
        p="password"
        h="sftp://xx.xx.xx.xx"
 
        #list of files & sizes
        files=$(lftp -c "open -u $u,$p $h; dir $rdir" | awk '{print $6}' | grep ".\..." | grep -v "Thumbs\.db")
        sizes=$(lftp -c "open -u $u,$p $h; dir $rdir" | grep ".\..." | grep -v "Thumbs\.db" | awk '{print $3}')
 
        echo "Daten geholt... $s Sekunden warten"
        sleep $s
        for file in $files
        do
            #size of file
            size=$(echo $sizes | cut -d " " -f $n)
            echo "$file hat eine Size von: $size"
 
            #new size of file
            newsize=$(lftp -c "open -u $u,$p $h; dir $rdir" | grep $file | awk '{print $3}')
            echo -e "\tDie Datei hat jetzt eine Groesse von: $newsize"
 
            if [ "$size" -eq "$newsize" ]
            then
                echo -e "\tGleich gross: Transfer wird gestartet.."
                $(lftp -c "open -u $u,$p $h; get -E $rdir$file -o $ldir")
                echo -e "\t$file wurde uebertragen"
            else
                echo -e "\tDie Datei $file hat sich veraendert! Skip!"
            fi
 
            n=$(($n + 1))
        done
    fi