Ich habe hier bei stackoveflow einige Codes zum ZIP einer bestimmten Datei gefunden, aber wie wäre es mit einem bestimmten Ordner?
Folder/
index.html
picture.jpg
important.txt
drinnen drin My Folder
sind Dateien. Nach dem Zippen der My Folder
möchte ich auch den gesamten Inhalt des Ordners löschen, außer important.txt
.
Fand dies hier bei Stack
Ich brauche deine Hilfe. Vielen Dank.
Antworten:
Code aktualisiert am 22.04.2015.
Zip einen ganzen Ordner:
Zippen Sie einen ganzen Ordner + löschen Sie alle Dateien außer "important.txt":
quelle
$zip->close()
funktioniert nicht. Überprüfen Sie meine Antwort hierIn der ZipArchive-Klasse gibt es eine nützliche undokumentierte Methode: addGlob ();
Jetzt dokumentiert unter: www.php.net/manual/en/ziparchive.addglob.php
quelle
addGlob
rekursiv?Versuche dies:
Dies wird jedoch nicht rekursiv komprimiert.
quelle
My folder
, aber ich habe auch einen Ordner in einem Ordner,My folder
der mir den Fehler gibt: Berechtigung verweigert durch Aufheben der Verknüpfung des Ordners mit inMy folder
if (!is_dir($file) && $file != 'target_folder...')
stattdessen. Oder überprüfen Sie die Antwort von @kread, wenn Sie rekursiv komprimieren möchten. Dies ist der effizienteste Weg.My folder
wird immer noch nicht gelöscht, aber es gibt trotzdem keine Fehler mehr.$zip->close()
funktioniert nicht. Überprüfen Sie meine Antwort hierIch gehe davon aus, dass dies auf einem Server ausgeführt wird, auf dem sich die Zip-Anwendung im Suchpfad befindet. Sollte für alle Unix-basierten Server gelten und ich denke, die meisten Windows-basierten Server.
Das Archiv befindet sich anschließend in archive.zip. Beachten Sie, dass Leerzeichen in Datei- oder Ordnernamen eine häufige Fehlerursache sind und nach Möglichkeit vermieden werden sollten.
quelle
Ich habe es mit dem folgenden Code versucht und es funktioniert. Der Code ist selbsterklärend. Bitte lassen Sie mich wissen, wenn Sie Fragen haben.
quelle
ini_set('memory_limit', '512M');
vor der Ausführung des Skripts undini_restore('memory_limit');
am Ende hinzugefügt . Bei schweren Ordnern musste Speichermangel vermieden werden (es handelte sich um einen Ordner mit mehr als 500 MB).Dies ist eine Funktion, die einen ganzen Ordner und seinen Inhalt in eine Zip-Datei komprimiert. Sie können sie einfach so verwenden:
Funktion:
quelle
Probieren Sie das EFS PhP-ZiP MultiVolume-Skript aus ... Ich habe Hunderte von Gigs und Millionen von Dateien komprimiert und übertragen ... ssh wird benötigt, um Archive effektiv zu erstellen.
Aber ich glaube, dass resultierende Dateien mit exec direkt von PHP verwendet werden können:
Ich weiß nicht, ob es funktioniert. Ich habe es nicht versucht ...
"Das Geheimnis" ist, dass die Ausführungszeit für die Archivierung die für die Ausführung von PHP-Code zulässige Zeit nicht überschreiten sollte.
quelle
Dies ist ein funktionierendes Beispiel für das Erstellen von ZIPs in PHP:
quelle
Ich fand diesen Beitrag in Google als zweites Top-Ergebnis, zuerst wurde exec :( verwendet
Obwohl dies nicht genau meinen Bedürfnissen entsprach, beschloss ich, mit meiner schnellen, aber erweiterten Version eine Antwort für andere zu veröffentlichen.
SCRIPT-FUNKTIONEN
Wie auch immer, auf das Skript. Auch wenn es viel aussieht. Denken Sie daran, dass hier ein Überschuss vorhanden ist. Sie können also die Berichtsabschnitte nach Bedarf löschen.
Es kann auch unordentlich aussehen und bestimmte Dinge können leicht bereinigt werden ... Also kommentieren Sie es nicht, es ist nur ein schnelles Skript mit grundlegenden Kommentaren. NICHT FÜR DEN LIVE-GEBRAUCH. Aber einfach für den Live-Gebrauch zu bereinigen !
In diesem Beispiel wird es aus einem Verzeichnis ausgeführt, das sich im Stammverzeichnis www / public_html befindet. Es muss also nur ein Ordner nach oben verschoben werden, um zum Stammverzeichnis zu gelangen.
WAS TUT ES??
Es wird einfach der gesamte Inhalt der Variablen $ pathBase komprimiert und die Zip-Datei in demselben Ordner gespeichert. Es führt eine einfache Erkennung für frühere Sicherungen durch und überspringt diese.
CRON BACKUP
Dieses Skript habe ich gerade unter Linux getestet und von einem Cron-Job mit der Verwendung einer absoluten URL für die pathBase einwandfrei funktioniert.
quelle
Verwenden Sie diese Funktion:
Anwendungsbeispiel:
quelle
Verwenden Sie dies funktioniert gut.
quelle
Erstellen Sie einen Zip-Ordner in PHP.
Zip-Erstellungsmethode
Rufen Sie die Zip-Methode auf
quelle
Ich habe das Skript ein wenig verbessert.
quelle
Dadurch wird Ihr Problem behoben. Versuch es bitte.
quelle
Für alle, die diesen Beitrag lesen und nach einem Grund suchen, warum die Dateien mit addFile anstelle von addFromString komprimiert werden sollen, ohne die Dateien mit ihrem absoluten Pfad zu komprimieren (nur die Dateien komprimieren und sonst nichts), siehe meine Frage und Antwort hier
quelle