Ordner alle 24 h zippen und auf anderen Server schieben

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
mayosemmel
Beiträge: 25
Registriert: 04.02.2012 12:24:45

Ordner alle 24 h zippen und auf anderen Server schieben

Beitrag von mayosemmel » 04.02.2012 12:32:27

Hallo und guten Morgen lieben Community,


ich hoffe ich bin hier im richtigen Forum und stelle mich nicht gar zu dämlich an....

Nun zu meinem Problem:

Ich betreibe einen Minecraft-server, dessen Karte (ein simpler Ordner) ich alle 24 Stunden einmal zippen und zum Download anbieten will. Dieses *.zip File soll dann etwa so heissen: Serverkarte_[aktuelles Datum].

Dieses File soll wenn es fertig ist automatisch per securecopy auf einen anderen Debian Server geschoben werden. (Da dieser eine bessere Bandbreite hat)
Außerdem sollen immer nur die 10 aktuellsten files da sein, die älteren sollen automatisch gelöscht werden.

Ich hoffe ihr könnt mir helfen. Ich freue mich auf eure Antworten und bedanke mich schonmal im Vorraus.

Grüße
mayosemmel


EDIT: Eine Sache habe ich noch vergessen: Das Script soll bei einem neustart des Roots automatisch wieder aktiv sein (habe keine Lust es jedes mal mit Hand zu starten.)

DeletedUserReAsG

Re: Ordner alle 24 h zippen und auf anderen Server schieben

Beitrag von DeletedUserReAsG » 04.02.2012 12:46:00

Wie bist du denn bis jetzt vorgegangen?

Ich persönlich würde leicht anders herangehen: auf der Maschine mit dem Gameserver via Script und Cronjob betreffende Datei erstellen und in ein via http erreichbares Verzeichnis packen. Auf der Zielmaschine ein entsprechendes Gegenstück schreiben, das zu den festgelegten Zeiten die Datei abholt, und dafür sorgt, dass im Gegenzu die jeweils älteste Datei gelöscht wird. Scheint mir nicht zu komplex, gebraucht würde in diesem Fall im Wesentlichen: Grundlagen im Shellscripting, cron, zip, date und wget.

Soll es wirklich über scp laufen, muss halt ein entsprechendes Schlüsselpaar ohne Passphrase generiert werden, oder mit expect oder Ähnlichem gearbeitet werden. Das Script auf der Zielmaschine muss dann nur regelmäßig die Dateien zählen und ggf. die älteste löschen.

cu,
niemand

mayosemmel
Beiträge: 25
Registriert: 04.02.2012 12:24:45

Re: Ordner alle 24 h zippen und auf anderen Server schieben

Beitrag von mayosemmel » 04.02.2012 12:55:44

Diese Möglichkeit ist für mich auch in Ordnung...

...Erfüllt für mich ja den selben Zweck

Allerdings habe ich mich hauptsächlich aufgrund des Cron Jobs usw an euch gewendet.
Habe zwar Grundkenntnisse allerdings bin ich noch nicht sehr Fortgeschritten. Bin Fachinformatiker im 1. Lehrjahr.
Bin durchaus Lernwillig und nicht auf den Kopf gefallen....deshalb hoffe ich auf eure Hilfe.

Grüße
mayo

DeletedUserReAsG

Re: Ordner alle 24 h zippen und auf anderen Server schieben

Beitrag von DeletedUserReAsG » 04.02.2012 13:04:15

cron selbst besteht eigentlich nur aus einem Daemon, der Scripte und ähnliche Sachen gemäß der crontabs aufruft. Wie man dort etwas einträgt, ist in der manpage (einfach mal 'man 5 crontab' eingeben) recht gut erklärt. Im Normalfall wird cron beim Start des Systems mitgestartet.

Aber vorher sollten deine Scripte fertig, und getestet sein. Bei den Scripten ist zu beachten, dass sie nicht die gewohnte Umgebung des Users haben, sondern so Sachen wie $PATH selbst gesetzt werden sollten (oder man arbeitet mit absoluten Pfaden).

cu,
niemand

mayosemmel
Beiträge: 25
Registriert: 04.02.2012 12:24:45

Re: Ordner alle 24 h zippen und auf anderen Server schieben

Beitrag von mayosemmel » 04.02.2012 14:39:14

Also ich hab mir jetzt überlegt, dass es ja Sinn machen würde, wenn ich auf dem Server auf dem der Gameserver läuft, immer ein File erstelle namens "map.zip".
Dieses hole ich mir dann mit dem anderen Server.....welcher das dann entsprechend umbenennt.

Nun noch ein Paar fragen:

1. Wie bringe ich es fertig, das der Server mir immer das Aktuelle Datum in den Dateinamen schreibt?
2. Wie setze ich es um, das immer nur die aktuellsten 10 Files da bleiben?

DeletedUserReAsG

Re: Ordner alle 24 h zippen und auf anderen Server schieben

Beitrag von DeletedUserReAsG » 04.02.2012 15:07:01

Das aktuelle Datum gibt dir 'date' (auch mal die Hilfe lesen, um die Formatierung anzupassen), Dateien zählen kann man beispielsweise mit 'ls -l | wc -l'. Ausgabe einer Variablen zuweisen geht etwa so: 'DATUM=$(date +%Y%m%d)' → 'echo $DATUM' würde dann heute „20120204“ ausgeben.

Vielleicht hilft es weiter …

cu,
niemand

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Ordner alle 24 h zippen und auf anderen Server schieben

Beitrag von Cae » 04.02.2012 15:22:35

niemand hat geschrieben:Dateien zählen kann man beispielsweise mit 'ls -l | wc -l'.
-l (minus el) nur bei wc:

Code: Alles auswählen

% mkdir empty
% ls -l empty
insgesamt 0
% ls -l empty | wc -l
1
% ls empty | wc -l
0
ls -l gibt bei leerem Verzeichnis trotzdem eine Zeile aus.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

DeletedUserReAsG

Re: Ordner alle 24 h zippen und auf anderen Server schieben

Beitrag von DeletedUserReAsG » 04.02.2012 15:26:52

Und ls ohne -l gibt mehrere Files in einer Zeile aus. 'wc -w' tut es auch nicht, sobald Spaces in den Dateinamen sind. Die . und .. kann man rausrechnen, sind konstant.

Edit: gerade mal ausprobiert, hattest Recht: wc -l bringt das richtige Ergebnis.

cu,
niemand

mayosemmel
Beiträge: 25
Registriert: 04.02.2012 12:24:45

Re: Ordner alle 24 h zippen und auf anderen Server schieben

Beitrag von mayosemmel » 04.02.2012 18:16:00

Problem gelöst!! :THX:
Jetzt muss ich nur noch bis morgen warten, ob der CronJob richtig läuft.

Hier meine Lösung:

Auf dem Gameserver:

Code: Alles auswählen

zip -r /var/www/dl/map.zip /home/user/minecraft/world
Auf dem Downloadserver:

Code: Alles auswählen

wget -q -P /home/root buddeltest.dyndns.org/dl/map.zip

datum=$(date +%d.%m.%Y)
cp /home/root/map.zip /var/www/$datum.zip

old_date=$(date --date '-10 days' +%d.%m.%Y)
rm /var/www/$old_date.zip

rm /home/root/map.zip
Falls ihr noch Vorschläge zur Verbesserung habt, immer her damit!!

Vielen Dank an alle
mayosemmel

Antworten