• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Script: Ordner sortieren und einen davon dann zu kopieren?

thapate

Newbie
Hallo zusammen!

Stehe gerade vor einem Problem und weis nicht wie ich dieses genau lösen kann.

Folgendes Problem
Ich hier einen Rechner stehen mit folgenden Verzeichnisbaum

home/
------> test (Ordnerinhalt ändert sich täglich)
------> 070101
------> 070102
------> 070103
------> 070104
------> 070105
------> 070106
usw..

Nun möchte ich immer auf den "zweit" aktuellsten Eintrag zugreifen bzw. kopieren. In diesem Fall wäre es der Ordner "070105".

Ist es möglich dies per Script automatisiert laufen zu lassen?
d.h.
--> sortier mir die Einträge nach Datum
--> kopiere den zweitaktuellsten Ordner




Danke euch schon mal im voraus!

MfG
ThaPate
 

longman

Advanced Hacker
Vielleicht reicht Dir ja schon folgende Zeile (eventuell abgewandelt):

Code:
find /tmp/home/ -type d -ctime 1 |xargs -I dummy cp dummy /tmp/home2 -R

find : Suche alle Verzeichnisse in /tmp/home die vor 1*24 Stunden geändert wurden
Durch den Parameter ctime kannst Du die Zeitvorgaben ändern
Falls es feiner sein muss, schau mal unter man find z.B. nach -anewer -atime -cmin
xargs: Übergebe den Verzeichnisnamen an den Befehl cp, indem der String dummy gegen
den jeweiligen Verz.namen getauscht wird und kopiere rekursiv ins Verz. /tmp/home2
 
OP
T

thapate

Newbie
Danke für die Antwort!

Was ich vergessen habe zu erwähnen...
die Dateien sollen von einem anderen Rechner kopiert werden.
Momentan werden die Daten per scp von Rechner1 auf Rechner2 kopiert.
Auf dem Rechner2 befindet sich das Script das die Daten dann per scp kopiert.

Ist es auch möglich den "find" Befehl auf dem "Zielrechner"(rechner1) ausführen zu lassen?

Im Endeffekt soll es so aussehen:
- Rechner2 wird gestartet.
- das Script wird ausgeführt
- der zweit oder drittaktuellste Ordner (werden mit fortlaufendem Datum benannt => 080320) auf dem Zielrechner (Rechner1) soll nun auf Rechner2 kopiert werden.

MfG
ThaPate
 

spoensche

Moderator
Teammitglied
wenn du dich auf dem rechner einloggst und es einen linux rechner ist kannst du den find befehl dort ausführen.
 
OP
T

thapate

Newbie
es handelt sich bei beiden Rechner um Linux Kisten....

Der momentane Kopierbefehl in meinem Script ist so aufgebaut:

scp Benutzer@Host:/Verzeichnis/Quelldatei Zieldatei

Und nun möchte ich das die Zieldatei immer der zweit, oder drittälteste Ordner in dem Zielverzeichnis ist.
 

spoensche

Moderator
Teammitglied
na das steht doch oben wie das geht. einfach das cp durch scp ersetzen, dann sollte das auch funktionieren.
 
OP
T

thapate

Newbie
Würde das Script dann so aussehen???

find /tmp/home/ -type d -ctime 1 |xargs -I dummy scp -r Benutzer@Host:/Verzeichnis/Quelldatei Zieldatei

Was müsst ich dann als Zieldatei angeben??
 

longman

Advanced Hacker
Um Verzeichnisse zwischen Rechnern zu synchronisieren, würde ich Dir rsync empfehlen.

Der sync überträgt zwar beim ersten Lauf alle Daten, aber nachher nur noch die Differenz,
d.h. ist superschnell. du könntest den ganzen Baum synchron halten und vor Ort dann immer noch das zweite Verzeichnis benutzen.

Ausserdem kannst Du mit dem Parameter --delete auch einstellen, das auf dem Zielrechner
die unnötigen Daten gelöscht werden, falls Sie auf dem Quellserver auch weg sind. Das heisst, es sammelt sich auch kein Datenwust auf.

z.B.
rsync -Pavz --delete root@pc1:/home/user1/daten/ /home/user2/daten/

Es gibt reichlich optionen, also schau mal mit man rsync was Du genau brauchen kannst.
 
Oben