Hallo,
ich habe Dolibarr 20.0.3 auf einen Ubuntu 20.04 mit PHP 8.2, seit der Version 20.0.3 funktioniert mein Backup in der Stufe 2 nur mit einer Fehlermeldung „Fehler : Error tar generation return Error 2“ aus der TAR wird kein TAR.GZ mehr, in der 20.0.2 hat noch alles funktioniert, der SQL Backup läuft tadelos mit „tar.gz“ Endung.
Es gibt nur 1 Stelle im Sourcecode wo dieser Fehler ausgegeben wird:
→ htdocs\admin\tools\export_files.php
// We also exclude '/temp/' dir and 'documents/admin/documents'
// We make escapement here and call executeCLI without escapement because we don't want to have the '*.log' escaped.
$cmd = "tar -cf '".escapeshellcmd($outputdir."/".$file)."' --exclude-vcs --exclude-caches-all --exclude='temp' --exclude='*.log' --exclude='*.pdf_preview-*.png' --exclude='documents/admin/documents' -C '".escapeshellcmd(dol_sanitizePathName($dirtoswitch))."' '".escapeshellcmd(dol_sanitizeFileName($dirtocompress))."'";
$result = $utils->executeCLI($cmd, $outputfile, 0, null, 1);
$retval = $result['error'];
if ($result['result'] || !empty($retval)) {
$langs->load("errors");
dol_syslog("Documents tar retval after exec=".$retval, LOG_ERR);
$errormsg = 'Error tar generation return '.$retval;
tar error 2 bedeutet imho das es Leseprobleme (Permission denied?, o.ä.) gegeben hat.
Lass dir den Befehl „$cmd“ doch anzeigen und führe den angezeigten Befehl dann mal händisch auf der Kommandozeile aus.
Stufe 1 verwendet „mysqldump“
Stufe 2 verwendet „tar“
und in beiden wird dann anschliessend gezippt
Jetzt hab ich mal wieder Zeit gefunden mich dem Problem zu Widmen,
wenn ich mich mit Putty einlogge, dann kann ich problemlos mit „tar -cf“ aus der tar-datei eine tar.gz erstellen, sowohl als „root“ als auch „www-data“.
Erzeuge ich ein Backup mit zip statt gzip bekomme ich eine Schreibfehler
Fehler : Fehler beim Schreiben in das Verzeichnis /var/www/dolibarr/documents/admin/documents
Die ZIP Datei wird dennoch erstellt.
Was mich wundert, wenn ich mir die Ordnerinhalte Backup und Documents anschaue
dann haben die Dateien unterschiedliche Berechtigungen
im backup Ordner sind die erstellten Dateien alle rw-rw----
im Documents Ordner rw-r–r–
meine manuell erstellten tar.gz Dateien haben
als www-data rw-rw-r–
als root rw-r–r–
Ich habe mir nochmals in den man-pages den Exitcode von tar angeschaut und zum Exitcode „2“ steht da folgendes:
2 Fataler Fehler. Dies bedeutet, dass ein fataler, nicht korrigierbarer Fehler auftrat.
Falls ein Unterprozess, der von tar aufgerufen wurde, mit einem von Null verschiedenen Exit-Code beendet wurde, beendet sich tar auch mit diesem Code. Dies kann beispielsweise passieren, falls eine Komprimierungsoption (z.B. -z)
verwendet wurde und das externe Komprimierungsprogramm fehlschlug.
Der Exitcode „2“ wird zurückgegeben z.B. auch bei
ungültigem Pfaden (hier wird „stat“ als unterprozess verwendet)
Und da gibt es 3 Möglichkeiten
Pfad für die Destination (wo die Datei erstellt wird)
Pfad nach der Option „-C“
Pfad zu den Sourcedateien (dolibarr_documents)
Eine Änderung (Pfadangabe) des auszuführenden Befehles erzeugt bei mir einen Exitcode von „2“.
Hast du dir den auszuführenden Befehl auch mal anzeigen lassen?
Füge dazu einfach im Sourcecode zwischen den beiden Zeilen
$cmd = "tar…
und $result = $result…
Der erste Logeintrag stammt von der Funktion „executeCLI“ und der zweite Logeintrag ist die Folge davon und stammt von „export_files.php“ siehe meine erste Antwort.
Loge dich bitte mal ein und wechsle nach „/var/www/dolibarr“.
Dann führe den Befehl aus:
also als root hat er die tar Datei zwar bearbeitet, ohne Fehlermeldung, aber es blieb eine tar Datei.
als www-data, wurde ebanfalls die tar Datei bearbeitet aber ein Fehler
tar: documents/admin/backup/mysqldump_dolibarr_20.0.3_2501092121.sql.gz: Funktion open fehlgeschlagen: Keine Berechtigung
tar: Beende mit Fehlerstatus aufgrund vorheriger Fehler
Funktion open ist bei mir in php disabled.
www-data@doli:~/dolibarr$ ls -al /var/www/dolibarr/documents/admin
insgesamt 28
drwxr-x--- 5 www-data www-data 4096 Jan 9 22:21 .
drwxr-x--- 55 www-data www-data 4096 Feb 17 07:52 ..
drwxr-x--- 2 www-data www-data 12288 Feb 17 08:45 backup
drwxr-xr-x 2 www-data www-data 4096 Feb 17 13:10 documents
drwxrwx--x 5 www-data www-data 4096 Feb 17 08:09 temp
Im Folder „backup“ liegt noch mindestens eine Datei von Version 20.0.3 rum.
Diese kann „tar“ nicht öffnen (open). Das hat imho nichts mit der php Funktion „open“ zu tun.
Kontrolliere dort mal die Berechtigungen der „mysqldump_…“ Dateien.
OMG,
ich hab diese duselige Datei die ganzen Tage schon gesehen gehabt, die Datei war mit root:root, keine Ahnung wie so was passieren kann, habe die rechte auf www-data:www-data umgestellt, jetzt geht es wieder.
VIELEN LIEBEN DANK
ich habe wieder eine ganze Menge dazugelernt.
Schön, manchmal sind es kleine Dinge mit großen Auswirkungen
Die mysqldump_… Datei wird imho mit user „root“ und keinen Rechten für „Alle“ erstellt und erst in einem 2. Schritt wird dann die Berechtigung per chmod gesetzt.
So wie ich das gesehen habe erfolgt in der Funktion „dolChmod“ keine Fehlerüberprüfung.
So könnte es also sein das der 1. Schritt geklappt hat und nur die Änderung der Berechtigungen fehlgeschlagen ist und nicht geloggt/angezeigt wurde.