FTP Übertragungsmodus
Temruk
- php
Hallo Experten,
in einem PHP-Skript mache ich einen mysqldump und schiebe damit meine Backups auf einen FTP-Server. Dummerweise komprimiere und packe ich die SQL mit tar -czf und dann:
$upload = ftp_put($connection_id, $zieldatei, $lokale_datei, FTP_ASCII);
also Übertragung als Ascii. Jetzt möchte ich eine Datei wieder vom FTP zurückholen. Ich komme auf diesen FTP nur von meinem Host aus drauf, also gehe ich per shell und ftp drauf und mache ein "mget". Die Datei, die dann wieder beim lokalen Server ankommt ist dann korrupt. Ich denke, das liegt am falschen Übertragungsmodus auf dem Rückweg, also dass er hier binary nimmt? Könnte das sein? Wenn ja: wie stelle ich denn auf der shell den Übertragungsmodus ein?
Herzlichen Dank!
Temruk
Ok, gefunden :) Ein einfaches "Ascii" wars, danke :)
Hello,
Ok, gefunden :) Ein einfaches "Ascii" wars, danke :)
Hoffentlich überall weggelassen oder ersetzt gegen 'binary', wenn es diese Einstellung gibt.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hoffentlich überall weggelassen oder ersetzt gegen 'binary', wenn es diese Einstellung gibt.
Hallo Tom,
Ascii habe ich aus lauter Dummheit / Nichtwissen genommen :( Werde ich natürlich jetzt ersetzen. Jetzt muss ich nur irgendwie an die alten Daten herankommen. Oder habe ich jetzt schon verloren?
Viele Grüße,
Temruk
Hello,
Hallo Tom,
Ascii habe ich aus lauter Dummheit / Nichtwissen genommen :( Werde ich natürlich jetzt ersetzen. Jetzt muss ich nur irgendwie an die alten Daten herankommen. Oder habe ich jetzt schon verloren?
Das kann ich nicht mit Bestimmtheit behaupten, aber mit Pech, ist die Ersetzung nicht reversibel.
Wenn nämlich auf dem Weg von Linux zu WinDOS die Zeichen wie folgt ersetzt wurden:
0a -> 0d0a
0d -> 0d0a
0d0a -> 0d0a
Der Rückweg wäre bei echten ASCII-Dateien:
0d0a -> 0a
0d -> 0a
0a -> 0a
Das hieße, dass in der Binärdatei zu recht enthaltene 0d Zeichen nach dem Rücktransport alle verscwunden sind.
Das hängt aber vom Übertragungsprogramm ab, wie das "Übertragung als ASCII" implementiert hat.
Wenn Du die Dateien nicht vorher komprimiert hättest, es sich also wirklich um Textdateien handeln würde, würde ich vermuten, dass Du sioe auf jeden Fall wieder benutzten könntest.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
Hi Tom,
ich danke dir schon jetzt sehr für die Hilfe!
Wenn nämlich auf dem Weg von Linux zu WinDOS die Zeichen wie folgt ersetzt wurden:
0a -> 0d0a
0d -> 0d0a
0d0a -> 0d0aDer Rückweg wäre bei echten ASCII-Dateien:
0d0a -> 0a
0d -> 0a
0a -> 0aDas hieße, dass in der Binärdatei zu recht enthaltene 0d Zeichen nach dem Rücktransport alle verscwunden sind.
Das hängt aber vom Übertragungsprogramm ab, wie das "Übertragung als ASCII" implementiert hat.
Das ist per PHP-Skript geschehen, das auf einer ubuntu-Kiste läuft. Sprich ich habe einen Cronjonb, der stößt ein PHP-Skript an und das macht einen Dump, dann tar und dann per ftp auf einen weiteren Linux-Server.
Wenn Du die Dateien nicht vorher komprimiert hättest, es sich also wirklich um Textdateien handeln würde, würde ich vermuten, dass Du sioe auf jeden Fall wieder benutzten könntest.
Das katastrophale ist, dass heute der Server einen Festplattenschaden hatte und das die einzigen Backups sind, die ich habe :(
Liebe Grüße aus dem schönen Oberharz
Und zurück aus dem verregneten Baden!
Hello,
kannst Du auf dem Backup-Server arbeiten?
Dann lege erstmal eine Kopie von Dateien an und dann versuche, sie direkt auf dem Backupserver zu dekompromieren. Vielleicht klappt das ja noch.
Viel Glück und Erfolg!
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
kannst Du auf dem Backup-Server arbeiten?
Leider nein :( Ich kann nur die Standard-FTP-Befehle nutzen...
Dann lege erstmal eine Kopie von Dateien an und dann versuche, sie direkt auf dem Backupserver zu dekompromieren. Vielleicht klappt das ja noch.
Viel Glück und Erfolg!
Das kann ich in der Tat brauchen, danke!
Viele Grüße,
Temruk
Hello,
Leider nein :( Ich kann nur die Standard-FTP-Befehle nutzen...
Ich habe hier noch die Beschreibung gefunden, was ungefähr passiert im ASCII-Modus:
http://en.wikipedia.org/wiki/File_Transfer_Protocol#Data_format
Es könnten also noch mehr Zeichen ersetzt worden sein.
Da aber beides Linux-Plattformen sind, sind Deine Chancen noch recht hoch, dass von Linux zu Linux gar nichts verfremdet wurde. Vielleicht hast Du noch einen anderen Denkfehler drin?
Lade die Daten mal im Binaray-Mode auf Deinen (Windows-)Host und versuche nochmal, sie mit WinRar
http://www.winrar.de/ zu öffnen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Lade die Daten mal im Binaray-Mode auf Deinen (Windows-)Host und versuche nochmal, sie mit WinRar
http://www.winrar.de/ zu öffnen.
Das versuche ich sofort!
Nochmals wegen dem Denkfehler. Ich habe folgendes gemacht:
1. MySQL-Dump auf Linux Server
2. Das mit tar -czf gezippt
3. Per FTP im ASCII-Modus auf einen weiteren Linux Server
4. Zurück per ASCII-Modus auf den ausgangs Linux Server
5. gunzip -d oder tar -xvz schlägt fehl.
Ok, ich bekomme die Datei zumindest auf. Die Zeichen sind recht durcheinander, aber immerhin mal eine Fährte :)
Hello,
Ok, ich bekomme die Datei zumindest auf. Die Zeichen sind recht durcheinander, aber immerhin mal eine Fährte :)
Hast Du mal einen Ausschnitt aud der Datei, dort wo es Dir durcheinander vorkommt?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hast Du mal einen Ausschnitt aud der Datei, dort wo es Dir durcheinander vorkommt?
Jawohl ja, gerne! Einmal Salat :)
INSERT INTO sh\_admraengeen
VALUES (1Idee, RealisierhnuT¤ e Spielleitung'
Sollte sein:
INSERT INTO 'sh_adminraenge' VALUERS ('1', 'Idee, Realisierung & Spielleitung',...
:(
Hello,
Hast Du mal einen Ausschnitt aud der Datei, dort wo es Dir durcheinander vorkommt?
Jawohl ja, gerne! Einmal Salat :)
INSERT INTO
sh\_admraengeen
VALUES (1Idee, RealisierhnuT¤ e Spielleitung'Sollte sein:
INSERT INTO 'sh_adminraenge' VALUERS ('1', 'Idee, Realisierung & Spielleitung',...
^
Tippfehler?
Ich habe darüber jetzt einen Tag immer wieder nachgedacht, aber was da alles passiert sein kann, da fehlt mir auch die passende Idee.
Kommt nun auch wieder darauf an, mit welchem Editor Du Dir das jeweils angeschaut hatst und welche Transformationen der nun schon wieder vorgenommen hat. Die Teile sind alle große Kinderkacke, weil sie oft nicht vernünftig einstellbar sind und ich bisher außerdem keinen einzigen kenne, der in der Stausleiste anzeigt, welche Transformationen und Highlightings er gerade vornimmt.
Also "angenommener Quellzeichensatz -> dargestellter Zeichensatz"
Highlightigng nach "PHP, HTML, ..."
usw.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
$upload = ftp_put($connection_id, $zieldatei, $lokale_datei, FTP_ASCII);
also Übertragung als Ascii.
Warum als ASCII? Verstehe ich nicht. Warum willst Du Zeilenumbruchzeichen in einem Binärfile (gezipptes File) austauschen? Die haben doch dort überhaupt keine semantische Bedeutung als Zeilenumbrüche, sondern sind nur zufällig errechnete Bytewerte.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Ok, jetzt bleibt das Problem, wenn ich die Datei wieder lokal habe und dann mit gunzip entpacken möchte, sagt er:
invalid compressed data--format violated
:( Hat mir ein Experte einen Tipp?
Herzlichen Dank!
Temruk
Hi,
Ok, jetzt bleibt das Problem, wenn ich die Datei wieder lokal habe und dann mit gunzip entpacken möchte, sagt er:
invalid compressed data--format violated
Hast du denn jetzt BINARY als Übertragungsmodus gewählt?
ASCII wäre un- und blödsinnig.
MfG ChrisB