
Wenn ich diesen Befehl von PHP aus ausführe
sudo -u db2inst1 ls -t /var/lib/edumate/bdrs/*/*/daily/*NODE* | sort -r
ich erhaltesudo: unable to execute /bin/ls: Argument list too long
ls listet alle täglichen Backup-Dateien auf, die wir für jeden Kunden haben. Der Kunde hat sein Verzeichnis unter dem bdrs
Verzeichnis. Ich vermute also, dass die Anzahl der Dateien größer als zulässig geworden ist, weil es vorher korrekt funktioniert hat.
Gibt es eine Möglichkeit, mit einem Shell-Befehl eine Liste aller täglich gesicherten Dateien abzurufen?
Antwort1
Konvertieren Sie es find
so, dass die erweiterten Dateinamen nicht im eigentlichen Befehl vorkommen (derzeit lautet die Shell "Glotzen", was Sie nicht wollen.
sudo -u db2inst1 find /var/lib/edumate/bdrs/ -ipath '/var/lib/edumate/bdrs/*/*/daily/*NODE*' | sort -r
Antwort2
Mit zsh ist es einfacher.On
Glob-Qualifiziererändert die Sortierreihenfolge in die umgekehrte lexikografische Namensreihenfolge.
sudo -u db2inst1 zsh -c 'print -l /var/lib/edumate/bdrs/*/*/daily/*NODE*(On)'
Es hat übrigens keinen Sinn, -t
an zu übergeben , da die Sortierreihenfolge für Sie egal ist.ls