Sie sind nicht angemeldet.

General_V

Super Moderator

  • »General_V« ist der Autor dieses Themas

Beiträge: 1 043

Wohnort: Mönchengladbach

Beruf: Brückenkranführer / Staplerfahrer

Rootserver vorhanden: Nein

  • Nachricht senden

1

Montag, 17. Januar 2011, 14:50

.bz2 Packer

Servus zusammen,

kennt jemand ein guten .bz2 Tool, aber auch eins das automatisch alle Unterverzeichnisse mit packt

Wie bei Linux find Ordner -exec bzip2 -9k '{}' \; bloß für Windows halt :D

Beiträge: 2 498

Wohnort: Schwelm

Beruf: Immobilien-Verwalter / Serveradministrator

Rootserver vorhanden: Nein

  • Nachricht senden

2

Montag, 17. Januar 2011, 14:56

Re: .bz2 Packer

Ja das wäre herrlich, wenn man bei bzip2 einfach sagen könnte:

"Verpack mir alle Dateien in diesem Ordner schön einzeln und nacheinander, aber eins zwo eins zwo - Pilger!" :ugeek:

General_V

Super Moderator

  • »General_V« ist der Autor dieses Themas

Beiträge: 1 043

Wohnort: Mönchengladbach

Beruf: Brückenkranführer / Staplerfahrer

Rootserver vorhanden: Nein

  • Nachricht senden

3

Montag, 17. Januar 2011, 15:04

Re: .bz2 Packer

Naja fragen Kostet nichts oder ^^

DeaD_EyE

Administrator

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

4

Montag, 17. Januar 2011, 16:49

Re: .bz2 Packer

Früher hatte ich das mittels rsync und find -mtime geregelt. Das war aber nicht gerade schnell.
Ich hatte angefangen ein FastDL-Script zu schreiben, welches den zentralen Mappool in ein Verzeichnis fürs Web packt. Es werden beim ersten mal alle Dateien rüberkopiert und dann die Typen mit bzip2 gepackt, die in der Variable bz2_include_filetypes enthalten sind.

Derzeitige Voraussetzungen:
  • Gemeinsamer Mappool, in dem nur die Dateien enthalten sind, welche nicht von Valve sind.
  • Webserver auf dem gleichen Host, wenn man faul ist und nich rsync/lftp mit einbauen will/kann.


Verwendung:
  • mappool="/pfad/zum/gemeinsamen/mappool"
  • mappool_web="/pfad/zum/webspace"
  • game="unterverzeichnis in /pfad/zum/gemeinsamen/mappool"
  • bz2_include_filetypes="alle Dateitypen, die gepackt werden sollen, werden hier ohne Punkt durch Leerzeichen verwendet"
  • diff_old="${game}_current.txt" #kann so bleiben
  • diff_new="${game}_new.txt" #kann so bleiben


Anmerkung:
Verwendet man mein Script, wie im Beispiel mit den Variablen, kommen alle maps, materials, models, resource, scripts usw. nach /home/server/mappool/css/
Im Webroot, also /home/server/mappool_web/css/ befinden sich dann die vom Server benötigten Dateien.
Hat z.B. die Subdomain fastdl.fastdownloadxy.de als DocRoot /home/server/mappool_web/css/, muss als URL für den FastDL folgendes verwendet werden: "http://fastdl.fastdownloadxy.de"
Wird stattdessen der DocRoot /home/server/mappool_web/ verwendet, müsste sv_downloadurl folgendermaßen lauten: "http://fastdl.fastdownloadxy.de/css"
Die zweite Variante macht Sinn, wenn der Clan mehr als nur CS:S spielt und mehrere GameServer mit unterschiedlichen Spielen hat. So muss dann nicht für jedes weitere Spiel eine andere SubDomain angelegt werden. Wer das cool findet css.fastdl.fastdownloadxy.de zu verwenden kann das aber auch über die Vhosts regeln.

Was das Script kann:
  • Neue Dateien werden von "mappool" in das angegebene Verzeichnis "mappool_web" kopiert bzw. auch gepackt. (Je nach Dateityp)
  • Geänderte Dateien werden kopiert bzw. auch gepackt.
  • Dateinamen und Pfade mit Leerzeichen bereiten keine Probleme
  • Wurde nichts geändert, ist die AusführungsZeit des Scriptes unter einer Sekunde (habs noch nicht mit 10.000 Dateien getestet)


Was es noch nicht kann aber kommen wird:
  • LockFile, damit das Script nicht in merheren Instanzen gleichzeitig aufgerufen werden kann
  • Entfernen von gelöschten Dateien aus mappool_web
  • Abgleich per RSYNC
  • Abglich über FTP
  • Die Möglichkeit mithilfe einer Dateiliste auch normale GameServer zu behandeln, die keinen ausgelagerten Mappool verwenden. Da werden sich die Teklabuser besonders drauf freuen. Hierbei behalte ich mir vor eine komerzielle Version zu vertreiben. Ich bin mir noch nicht so ganz sicher. Von mir aus kann jeder Privatuser das Script verwenden. Aber sobald jemand mit meiner Arbeit Geld verdient, denke ich da anders darüber.


Was noch nicht unterstützt wird, werde ich von oben nach unten abarbeiten.

Hier der Code:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/bin/bash
mappool="/home/server/mappool"
mappool_web="/home/server/mappool_web"
game="css"
bz2_include_filetypes="bsp dx80 dx90 html jpg mdl mp3 nav phy sw tga vmt vtf vvd wav"

diff_old="${game}_current.txt"
diff_new="${game}_new.txt"


bz2include() {
        if [ $# = 1 ]; then
                grep ".$1$"
                return
        fi

        output=".$1$"
        shift
        for type in $@; do
                output="$output|.$type$"
                shift
        done
        egrep "$output"
        return
        }


filelist() {
    # $1=mappool
    # $2=game

    find $2/ -type f | while read file; do echo ""$file" `stat -c "%Z" "$file"`"done
    }

diff_files() {
    # $1=mappool
    # $2=diff_old
    # $3=diff_new

    cd $1
    diff "$2" "$3" grep '^> ' awk -'"' '{print $2}'
    cd "$OLDPWD"
    }

diff_deleted_files() {
    # $1=mappool
    # $2=diff_old
    # $3=diff_new

    cd $1
    diff "$2" "$3" grep '^< ' awk -'"' '{print $2}'
    cd "$OLDPWD"
        }


cp_files() {
    # $1=mappool
    # $2=mappool_web

    while read file; do
            [[ ! -d  "`dirname "$2/$file"`" ]] && mkdir -"`dirname "$2/$file"`"
            cp "$1/$file" "$2/$file"
    done
    }

cp_all() {
    # $1=mappool
    # $2=mappool_web
    # $3=game
    mkdir -"$2/$3"
    cp -"$1/$3" "$2/"
    }

check_create_diff() {
    # $1=mappool
    # $2=mappool_web
    # $3=game
    # $4=diff_old
    # $5=diff_new

    cd $1
    if [ ! -"$4" ]; then
        filelist "$1" "$3" > $4
        cp_all "$1" "$2" "$3"
    fi
    
    filelist "$1" "$3" > $5

    cd "$OLDPWD"
    }

compress_files() {
    # $1=mappool_web
    # $2=game
    # $3=filetypes
    find $1/$bz2include $| while read file; do
        bzip2 -"$file2>&grep -" already exists.$"
    done
    }

check_create_diff "$mappool" "$mappool_web" "$game" "$diff_old" "$diff_new"
diff_files "$mappool" "$diff_old" "$diff_newcp_files "$mappool" "$mappool_web"
compress_files "$mappool_web" "$game" "$bz2_include_filetypescp $mappool/$diff_new $mappool/$diff_old


Wie man sieht, habe ich die Funktion für gelöschte Dateien schon eingebaut. Aber diese kann so noch nicht funktionieren. Ich werde auch noch die Funktion für die Filelist ändern. Anstatt einer Schleife verwende ich dann nur noch den Befehl find, welcher dann zusätzlich die ctime ausgibt.

Das Script hab ich bereits bei uns auf dem Root im Einsatz, welches mir die Arbeit erleichtert. Das alte Script hab ich verworfen.

DeaD_EyE

Administrator

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

5

Montag, 17. Januar 2011, 17:04

Re: .bz2 Packer

Zitat

Wie bei Linux find Ordner -exec bzip2 -9k '{}' \; bloß für Windows halt :D


Fuck :-D
Jetzt erst wahrgenommen.

Naja, verwende GNU Find und GNU Bzip2 für Windows. Ich weiß nur nich ob -exec unterstützt wird. Ansonsten müsstest du dir Cygwin installieren.

General_V

Super Moderator

  • »General_V« ist der Autor dieses Themas

Beiträge: 1 043

Wohnort: Mönchengladbach

Beruf: Brückenkranführer / Staplerfahrer

Rootserver vorhanden: Nein

  • Nachricht senden

6

Montag, 17. Januar 2011, 18:13

Re: .bz2 Packer

Ich kann mich noch an ein Tool Erinnern, dort hat man einen bz2 Ordner und man musste alles in diesen Ordner packen was gepackt werden soll, das Programm hat dann alles was im bz2 Ordner war automatisch gepackt inkl. unterordner usw. das war was feines. Aber finde es nicht mehr und weiß den Namen nicht mehr :(

DeaD_EyE

Administrator

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

7

Montag, 17. Januar 2011, 20:44

Re: .bz2 Packer

Wieso packt ihr beide denn clientseitig, wenn ihr einen root habt? Fall euch der Datentransfer zu groß sein sollte, könnt ihr die Dateien vor den Upload ja mmit 7zip packen und auf dem Root wieder entpacken, dass das FastDL-Script drüberjagen und ggf. den Abgleich über FTP machen.

Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

8

Montag, 17. Januar 2011, 20:48

Re: .bz2 Packer

Ansonsten -> Mit Winscp alles auf ne Virtuelle Maschine laden dort Packen Runterladen Uploaden
Fast genau so umständlich^^

aber so würde ich es machen.

Mfg
Impact

9

Montag, 17. Januar 2011, 21:00

Re: .bz2 Packer

Zitat von »"General_V"«

Ich kann mich noch an ein Tool Erinnern, dort hat man einen bz2 Ordner und man musste alles in diesen Ordner packen was gepackt werden soll, das Programm hat dann alles was im bz2 Ordner war automatisch gepackt inkl. unterordner usw. das war was feines. Aber finde es nicht mehr und weiß den Namen nicht mehr :(


Meinst du dashier?: FPS-BANANA - zBzipper ???

MFG
Godzilla

HinterhaltHubi

unregistriert

10

Dienstag, 18. Januar 2011, 00:44

Re: .bz2 Packer

Impact hat doch ein so schönes Video zum packer eingestellt:

http://www.youtube.com/watch?v=4hDI40B3AZ0&feature=related">http://www.youtube.com/watch?v=4hDI40B3 ... re=related</a>

Gruß HUBI

General_V

Super Moderator

  • »General_V« ist der Autor dieses Themas

Beiträge: 1 043

Wohnort: Mönchengladbach

Beruf: Brückenkranführer / Staplerfahrer

Rootserver vorhanden: Nein

  • Nachricht senden

11

Dienstag, 18. Januar 2011, 00:52

Re: .bz2 Packer

Ahhh Cool so eins in der Art hab ich gesucht Danke euch allen für die Hilfe :D

DeaD_EyE

Administrator

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

12

Montag, 24. Januar 2011, 18:41

Re: [Gelöst] .bz2 Packer

Kack Windoof-Tools.
Nachdem man mir den Zugang zu dem Root verweigert hat (Clansplit), war ich gezwungen zum packen von Maps meinen Windows-PC zu nutzen. Da mein Linux-Home-Server zu langsam ist, der Laptop auch und ich kein zweites OS auf meinem Spiele-PC habe, hab ich mir mal direkt Cygwin installiert. Die VM wär mir zu umständlich gewesen.

Dadurch hat man eine unixoide Umgebung in einem Fenster unter Windows. Man kann ganz gewohnt die Linux-Befehle verwenden.



Achja, der Befehl find funktioniert auch.

Hier noch eine kleine Bilderserie:





Ihr mit eurem Windows-Tool :right:
Wer das testen will, findet die lokalen Laufwerke unter /cygdrive/
Es können im Terminal auch Windows-Programme ausgeführt werden.
Falls das mit dem Shell-Scripting klappt, könnte ich ja mal das FastDL-Script unter Windows testen.

PS: Mein Shell-Script wird funktionieren. Hab mal die Pipes usw getestet. Das witzige ist, dass die C-Time unter Win7 wegen dem Dateisystem sogar genauer ist, als bei ext3.