Terminal während Vorgang schließen?

kruemelprinz

kruemelprinz

Neues Mitglied
Thread Starter
Dabei seit
12.12.2011
Beiträge
17
Reaktionspunkte
0
Hallo,

wieder mal eine sehr dumme Frage:

Ich habe für TM backups und ähnliches seit einiger Zeit ein NAS und jetzt habe ich mir ein neues, schnelleres gekauft. Alle alten Daten sollen nun vom alten aufs neue kopiert werden. Beide NAS sind im Netzwerk eingebunden und jetzt wollte ich per scp-Befehl über die Konsole (per ssh ins NAS eingeloggt) die Daten rüberschieben. Das alte NAS ist aber ziemlich langsam und damit der Flaschenhals bei der Übertragungsrate - da dauert ein terrabyte schon mal ein paar Tage...

Daher meine Frage: Kann ich das Terminal einfach beenden, wenn ich den scp-befehl gestartet habe? Ich will ja schließlich nicht den Mac die ganze Zeit anlassen, wenn das so ewig dauert... Eigentlich sollte der Befehl doch im NAS gestartet sein, wenn ich per SSH dort eingeloggt bin, oder? :confused:

Da mir google nicht helfen konnte, frag ich Euch.
Vielen Dank
kruemelprinz
 
jein, das problem ist, dass wenn der controlling terminal schließt, werden auch alle dessen prozesse geschlossen...
damit es weiter läuft, muss du so was wie screen benutzen...
das lässt die session weiter laufen und du kannst die dann nach dem einloggen mit
screen -r
wieder resumen...
 
Moin

danke für die antwort oneOeight. so was hatte ich befürchtet. screen kenn ich nicht und wenn man das in Google sucht, findet man massenhaft sachen, die nicht nach dem aussehen, was du meinst. wo kann ich screen finden und downloaden? das programm müßte dann auf meinem nas installiert werden, richtig?
 
Wenn Du mit dem Terminal arbeitest, schau Dir mal die Man-Page zu "screen" durch Eingabe von "man screen" an.
Vielleicht ist aber auch ein Blick in "man nohup" nicht schlecht (nohup = No Hangup eines Unix Kommandos beim Schließen des Terminals).
Wenn das scp auf dem NAS läuft, könnte das nämlich funktionieren, wenn der Mac ausgeschaltet wird.
Beides steckt im Unix des Mac.
 
Wenn du das Terminal schließt, werden normalerweise alle Prozesse, die du von dort aus gestartet hast, abgeschossen, d. h. beendet. Die Ausnahme sind Prozesse, die mit nohup gestartet wurden.

Also statt
scp <Argumente>
einfach
nohup scp <Argumente &
(& am Ende nicht vergessen) eingeben. Dann kannst du das Terminal-Fenster schließen, und der scp-Prozess läuft weiter.
 
Hallo

Danke für den Tipp mit nohup. Werde das mal ausprobieren. Für mich als chronisch paranoiden Menschen, der an seinen Daten hängt, ergbit sich allerdings eine Folgefrage:

Wie weiß ich, daß wirklich alles kopiert wurde? Soweit ich scp verstanden habe, verifiziert das Prog nach jeder Datei, dass diese auch wirklich angekommen ist. Aber wird auch verifiziert, daß alle Dateien und Ordner samt Unterordner da sind?

Und: Wie weiß ich, wann alles rüberkopiert ist? Da gibt es doch sicher nen anderen Weg als an beiden NAS zu lauschen und auf das Verstummen des *kkrrrr-krr-kkrrr* der Festplatten zu warten... Sehe ich scp wieder arbeiten, wenn ich das Terminal wieder öffne und mich neu anmelde?

/kruemelprinz
 
mit nohup kriegst du keinen output mehr...
nimm screen, ist auch nicht so kompliziert.
du startest einfach screen, machst was du willst und dann tippst du
ctrl-a und d
das detached die session.
nachher machst dann:
screen -r
und siehst was in der zwischenzeit so war...
 
mit nohup kriegst du keinen output mehr...

Doch, sicher kriegt man den Output.

Nohup leitet sämtliche Ausgaben einschließlich etwaiger Fehlermeldungen in die Datei nohup.out um. Dort kann man sie sich jederzeit anschauen.

Der einzige Haken an der Geschichte ist, dass scp im Erfolgsfalle keine Meldung schreibt. Der Datei nohup.out sieht man also nicht an, ob der Befehl bis zum Ende durchgelaufen ist oder ob nohup gewaltsam beendet wurde (z. B. mit kill -9 oder durch Stromausfall). Für die anderen hier vorgeschlagenen Lösungen besteht das Problem gleichermaßen.

Um sicher zu gehen, gibst du einen Text am Ende des Kopiervorganges aus. Z. B. schreibst du ein kleines Skript copy_ kruemelprinz.sh wie folgt
Code:
scp [I]<Argumente>[/I]
echo ende
und dann startest du nohup copy_ kruemelprinz.sh &. Wenn sich als letzte Zeile in nohup.out der Text "ende" befindet, dann ist scp durchgelaufen. (Alternativ könntest du mit date dir die Uhrzeit anzeigen lassen, wann scp zu Ende war.)

Aber wird auch verifiziert, daß alle Dateien und Ordner samt Unterordner da sind?
Am schnellsten geht das, wenn du im Quell- und im Zielverzeichnis kontrollierst, ob die gleiche Anzahl an Dateien da ist. Dies geht mit find . -name "*" | wc (entweder mit cd ins Quell- und dann ins Zielverzeichnis wechseln oder statt des Punktes den Pfad dieser Verzeichnisse angeben.) Der erste von wc ausgegebene Wert ist die Anzahl der Zeilen, in diesem Falle die Anzahl der Dateien, und der Wert muss bei Quell- und Zielverzeichnis gleich sein. Die anderen beiden von wc ausgegebenen Werte interessieren hier nicht. Unterverzeichnisse werden bei der Methode mit berücksichtigt. Und wenn du dann noch stichprobenhaft verifizierst, dass die Dateien im Zielverzeichnis auch lesbar sind, dann sollte alles in Ordnung sein.
 
Doch, sicher kriegt man den Output.

Nohup leitet sämtliche Ausgaben einschließlich etwaiger Fehlermeldungen in die Datei nohup.out um. Dort kann man sie sich jederzeit anschauen.

Der einzige Haken an der Geschichte ist, dass scp im Erfolgsfalle keine Meldung schreibt. Der Datei nohup.out sieht man also nicht an, ob der Befehl bis zum Ende durchgelaufen ist oder ob nohup gewaltsam beendet wurde (z. B. mit kill -9 oder durch Stromausfall). Für die anderen hier vorgeschlagenen Lösungen besteht das Problem gleichermaßen.

mit nohup hat man auch ein problem, wenn der prozess zwischendurch eine eingabe braucht usw.
da ist screen doch komfortabler und universeller einsetzbar.
 
Hallo

vielen dank für eure antworten! entschuldigt bitte die lange latenz bis zu meiner antwort, habe leider aus diversen gründen nicht die zeit gefunden, mich mit meinen "babies" zu beschäftigen... jetzt aber endlich.
da ich linux-dummie bin habe ich mich für nohup entschieden, denn screen hätte ich erst noch selber installieren müssen (war eben doch nicht im NAS linux dabei). jetzt rattern seit vorgestern die gigabytes über die leitung und ich habe ein anderes problem entdeckt:
ich bin gerade dabei, die daten von meinem jetzigen NAS auf eine externe platte zu schieben, da ich das linux des NAS wiederherstellen muss (das ist eine andere geschichte). habe wie empfohlen ein skript geschrieben, was mir den erfolgreichen durchlauf des befehls in der nohup.out anzeigt:

cp -r /home/ /home/storage/extern/WDC*/b3backup
echo ende

dieses habe ich dann mit nohup gestartet. jetzt sehe ich aber, dass es da vielleicht ein problemchen geben könnte, denn die externe platte ist unter /home/storage/extern/WDC.... gemountet. bedeutet das, dass cp jetzt alles unter /home, also auch /home/storage/extern/WDC.... selbst, also das eigentliche ziel des kopiervorganges, auf die festplatte kopiert? also ne art endlos-kopier-loop bzw doppelsicherung der daten?

/kruemelprinz
 
Zurück
Oben Unten