tar-Befehl gesucht, um ein Verzeichniss schrittweise zu packen
Eddie
- ftp
0 Christian Seiler0 Dieter Raber1 seth
Hallo allerseits,
mit folgendem Befehl kann ich ja EIN komplettes Verzeichnis in EINE Datei packen:
tar -cf _backup/fotos.tar meinVerzeichnis/Fotos/
Wie kann ich den Inhalt dieses Verzeichnisses schrittweise in mehrere Dateien packen? Dabei ist immer nur für eine einzige Datei Platz auf dem Server, zwischen den Packschritten muss ich also per FTP wieder Platz schaffen. Die Ursprungsdateien müssen bestehen bleiben.
Es müsste doch irgendeine Möglichkeit geben, im tar-Befehl "Intervalle" von zu packenden Verzeichnissen anzugeben?
Bspw. das Erstellungsdatum der Verzeichnisse, oder vielleicht den Dateinamen: die Unterverzeichnisse (unter Fotos/) sind durchnummeriert, allerdings ohne führende Nullen. Also ungefähr so:
1
10
100
1000
1001
1002
...
2
20
...
Zwischendrin fehlen auch mal Einträge, es sind also nicht alle vorhanden.
Danke für eure Hilfe,
Eddie
P.S.: Hintergrund ist folgender:
ich würde gerne 1600 MB über FTP downloaden, nur sind das verdammt viele Dateien - der FTP-Server lässt das nicht zu. Nach bisherigen Erfahrungen muss ich sagen: unmöglich (vgl. auch http://forum.de.selfhtml.org/archiv/2005/1/t99449/)
Also muss ich die Daten packen. Dummerweise stehen mir nur ~400MB zur Verfügung, ich muss den Job also in 4 Schritten erledigen.
Hallo Eddie,
P.S.: Hintergrund ist folgender:
ich würde gerne 1600 MB über FTP downloaden, nur sind das verdammt viele Dateien - der FTP-Server lässt das nicht zu. Nach bisherigen Erfahrungen muss ich sagen: unmöglich (vgl. auch http://forum.de.selfhtml.org/archiv/2005/1/t99449/)
Ich war im Januar nicht sehr im Forum aktiv, daher kannte ich den Thread nicht. Deswegen gleich mal ne Frage dazu: Hast Du eigentlich schonmal wget probiert? Gibt's auch für Windows und mittels
wget -rm --passive-ftp ftp://user:pass@host/dir/
solltest Du Dir alle Dateien runterladen können, ohne sie vorher packen zu müssen. Bzw. wenn wget abbricht kannst Du den Befehl einfach nochmal eingeben, dann überträgt er bereits erfolgreich übertragene Dateien nicht nochmal.
Kleine Anmerkung: wget legt ein paar Unterverzeichnisse an, wenn Du es so aufrufst, d.h. Du musst es immer im gleichen Oberverzeichnis aufrufen, damit es funktioniert. Außerdem legt wget in diesem Modus in jedem Verzeichnis eine Datei namens ».listing« an - die solltest Du, wenn Du die Dateien weiterkopieren willst, vorher löschen (aber erst nachdem Du alles gesichert hast), außer Du willst Platz verschwenden.
Viele Grüße,
Christian
Hallo Eddie,
Ich wuesste nicht, ob und wie man bei tar die Dateigroesse angeben koennte, aber vielleicht hast du noch andere Moeglickeiten, hier mal zwei Denkansaetze:
Gruß,
Dieter
gudn tach!
tar -cf _backup/fotos.tar meinVerzeichnis/Fotos/
Wie kann ich den Inhalt dieses Verzeichnisses schrittweise in mehrere Dateien packen?
[...] Dummerweise stehen mir nur ~400MB zur Verfügung, ich muss den Job also in 4 Schritten erledigen.
hilfe:
tar --help
speziell fuer dein problem ist der abschnitt interessant, den du mit
tar --help | grep -A 10 "Device selection"
erhaeltst.
aaalso:
tar -cML 390625 -f _backup/fotos1.tar meinVerzeichnis/Fotos/
390625 * 1024 B = 400000000 B = 400 MB
(bei 400 MiB, waere die tape-length 409600)
nachdem _backup/fotos.tar mit 400 MB vollgeschrieben wurde, fragt dich tar nach der zweiten datei. mit der angabe "n files2.tar" kann man dann einen neuen dateinamen angeben.
da aber kein platz mehr ist solltest du jetzt zunaechst die erste datei "files1.tar" herunterladen und auf dem server loeschen. anschliessend kannst du den zweiten teil des archivs erstellen lassen. usw.
komprimiert werden die dateien dabei aber nicht und -j (oder -z) ist zusammen mit -M nicht erlaubt.
vielleicht ist also wget tatsaechlich der sinnvollere weg.
eine alternative _mit_ kompression, die jedoch nur dann sinnvoll sein koennte, wenn der server und dein rechner sehr schnell sind und die internetverbindung lahm ist, ist folgende:
mit tar wie oben beschrieben archivieren und anschliessend manuell mit bzip2 files1.tar komprimieren und erst dann herunterladen. es kann allerdings sein, dass dann die tar-archive nicht so gross sein duerfen, je nachdem ob die temporaere auslagerung von bzip2 zu deiner quota zaehlt oder nicht.
prost
seth
Hallo seth,
cool, danke dir, das scheint auf jeden Fall schonmal die richtige Richtung zu sein!
aaalso:
tar -cML 390625 -f _backup/fotos1.tar meinVerzeichnis/Fotos/
Das "aaalso" trifft den Kern der Sache, denn nur mit --help hätte ich's vermtlich nicht auf die Reihe gekriegt...
komprimiert werden die dateien dabei aber nicht und -j (oder -z) ist zusammen mit -M nicht erlaubt.
Ist egal, es geht um JPGs (insg. ca. 80.000 Dateien, darum auch das Problem mit FTP), Komprimierung bringt also nicht allzuviel.
Jetzt habe ich allerdings noch das Problem, dass ich zwar 4 Dateien habe (1.tar bis 4.tar), aber nur 1.tar entpacken kann! Der Packer (7-zip) arbeitet problemlos, verlangt aber nicht nach der Fortsetzung. Und die anderen tar-Dateien moniert er als "not supported archive" :-(
Zwar bietet 7-zip einen "Combine Files"-Befehl, aber das ist wohl was anderes... :-/
Habt ihr noch eine Idee, wie ich das auf Windows hinkriegen kann?
Danke nochmal,
Eddie
gudn tach!
Das "aaalso" trifft den Kern der Sache, denn nur mit --help hätte ich's vermtlich nicht auf die Reihe gekriegt...
ja, ist zugegebenermassen ziemlich unausfuehrlich.
Jetzt habe ich allerdings noch das Problem, dass ich zwar 4 Dateien habe (1.tar bis 4.tar), aber nur 1.tar entpacken kann! Der Packer (7-zip) arbeitet problemlos, verlangt aber nicht nach der Fortsetzung. Und die anderen tar-Dateien moniert er als "not supported archive" :-(
hmm, mit 7-zip hab ich sowas auch noch nie probiert. ich habe gerade mal geschaut, ob 7-zip auf cli-ebene was dazu bietet, aber leider sieht's nicht danach aus.
Zwar bietet 7-zip einen "Combine Files"-Befehl, aber das ist wohl was anderes... :-/
das habe ich gar nicht gesehen, aber mit -v, genauer
-v{Size}}[b|k|m|g]: Create volumes
kann man immerhin volumes einer bestimmten groesse erzeugen. zum entpacken habe ich allerdings, wie gesagt, nix gefunden.
Habt ihr noch eine Idee, wie ich das auf Windows hinkriegen kann?
eine moeglichkeit, ist tar for windows zu installieren. damit sollte es gehen.
eine andere moeglichkeit (und so mache ich das), ist cygwin. cygwin liefert fuer windows einen riesigen funktionsumfang aus der linux-welt. tar ist (wahlweise) auch dabei.
das installations-tool ist ein wenig gewoehnungsbeduerftig, aber wenn man's mal verstanden hat, genial.
wenn man cygwin installiert hat und dessen bin-pfad dem windows-systempfad hinzufuegt, kann man im windows-cli (aka cmd.exe) die bei der installation ausgewaehlten sachen benutzen fast wie unter linux.
und wenn man die/den/das bash startet, darf man sogar slashes fuer die windows-backslashes verwenden und hat die linux-typische tab-vervollstaendigung.
mittlerweile, aber das ist jetzt bloss noch werbung und hat nix mehr mit dem eigentlichen problem zu tun, laeuft sogar X gescheit und man kann anwendungen wie nedit, xemacs oder gv ueber cygwin wunderbar unter windows laufen lassen.
prost
seth