[gel.] SCP wann ist das copy fertig?

  • Hallo,
    kopiere vdr Dateien per scp auf einen anderen Rechner.


    Auf dem Zielrechner sehe ich dann auch wie die Dateien immer grösser
    werden.


    Und das ist das Problem. Auf dem Zielrechner läuft ein shell script, das
    Die Dateien in unterordner einsortieren soll und das muss wissen
    wann es loslegen darf.


    bei meinem ftp server konnte ich das so einstellen, das ankommende
    Dateien erst in 001.vdr.part geschrieben werden und nach ende der
    Übertragung wurde dann in 001.vdr umbenannt.


    Das ist sehr praktisch. gibt es sowas auch für scp ?


    Viele Grüsse Frithjof

    vdr 1.7.23 suse 12.1 64 Bit 1xTTS2-6400 HD-USB: 24TB
    vdr 1.7.23 suse 11.3 64 Bit 1xTTS2-6400, 1xTTS2-3200 + ci HD:2TB
    vdr 2.2.0 Raspberry pi HD-USB: 2TB (Garten)

    Einmal editiert, zuletzt von frithjof ()

  • Ja da hast Du recht,
    Muss ich halt warten bis alle Dateien da sind und kann dann erst
    mit der Weiterverarbeitung beginnen.


    Frithjof

    vdr 1.7.23 suse 12.1 64 Bit 1xTTS2-6400 HD-USB: 24TB
    vdr 1.7.23 suse 11.3 64 Bit 1xTTS2-6400, 1xTTS2-3200 + ci HD:2TB
    vdr 2.2.0 Raspberry pi HD-USB: 2TB (Garten)

  • Deine Frage kann ich dir jetzt nicht beantworten, aber wenn es nicht zu zeitkritisch ist, warum prüfst du nicht ob die Dateien sich seit mindestens einer minute nicht mehr verändert haben ? Das geht einfach mit der bash und funktioniert :)

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

  • Wie geht das in bash.
    bin nicht son shell freak.
    werd mal googeln.
    Frithjof

    vdr 1.7.23 suse 12.1 64 Bit 1xTTS2-6400 HD-USB: 24TB
    vdr 1.7.23 suse 11.3 64 Bit 1xTTS2-6400, 1xTTS2-3200 + ci HD:2TB
    vdr 2.2.0 Raspberry pi HD-USB: 2TB (Garten)

  • hi frithjof,


    rsync via ssh waere eine Alternative, dort erscheint die Datei erst wenn sie erfolgreich uebertragen wurde. (In der Zwischenzeit wird sie mit "." vor dem Dateinamen versteckt)


    Zweite Alternative wurde ja schon genannt ("ich bin fertig.txt")


    Dritte Alternative waere im script zyklisch zu pruefen ob die Datei noch waechst und erst wenn sie das nicht mehr tut loszulegen (wurde auch schon genannt)


    Man koennte auch nach dem scp das Script einfach remote via ssh anstossen


    Die fuenfte Alternative die mir spontan einfaellt (und die eigentlich fuer mich logischste) waere die Dateien beim Kopieren gleich in das richtige Zielverzeichnis zu legen ;)


    cu
    gonz


    P.S.: Man koennte das scp auch vom Zielserver aus anstossen, dann wuesste man auch wanns fertig ist

  • Hallo, vielen Dank für die schnellen und hilfreichen Antworten.


    Werde es ersmal mit der Ich Bin Fertig Lösung machen


    und dann mal mit dem rsync probieren.


    ( Der Grund für den ganzen Zauber ist:
    Ich sitze hier in Queens NY und das Fershprogramm ist
    grottenschlecht. Nun soll mir mein VDR daheim zumindest
    die Tagesschau auf meinen Laptop schieben
    hier ist nur ein verzeichnis per ssh zugänglich und der VDR
    ist von aussen auch dicht, sonst könnte ichs ja abholen.)


    Frithjof

    vdr 1.7.23 suse 12.1 64 Bit 1xTTS2-6400 HD-USB: 24TB
    vdr 1.7.23 suse 11.3 64 Bit 1xTTS2-6400, 1xTTS2-3200 + ci HD:2TB
    vdr 2.2.0 Raspberry pi HD-USB: 2TB (Garten)

  • Sowas zB:


    Code
    while [ 1 ]; do 
    find /wo/es/an/kommt/* -amin 1 -exec mv {} /ziel/ver/zeich/nis \;
    sleep 60
    done


    Obwohl rsync definitiv besser geeignet ist als scp, da es noch ein wenig mehr kann , wie zB abgebrochene DL fortsetzen etc.

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

  • Hallo frithjof,


    Zitat

    Original von frithjof
    Und das ist das Problem. Auf dem Zielrechner läuft ein shell script, das
    Die Dateien in unterordner einsortieren soll und das muss wissen
    wann es loslegen darf.


    Ich hätte hier 2 Varianten:


    Bash
    #!/bin/bash
    
    
    Datei=001.vdr
    while [ $(($(date +%s) - $(stat -c %Z $Datei))) -lt 5 ]; do
      sleep 1
    done
    echo "jetzt geht los ..."

    Hierbei gibt es aber die 5 Sekunden Verzögerung...


    oder

    Bash
    #!/bin/bash
    
    
    Datei=001.vdr
    while lsof $Datei 2>/dev/null | grep scp >/dev/null; do
      sleep 1
    done
    
    
    echo "jetzt geht los ..."


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!