
Ich muss eine große Anzahl von Dateien (> 100.000) in einem Tar-Archiv speichern und bin auf den folgenden Fehler gestoßen:/bin/sh: /bin/tar: kann nicht ausgeführt werden [Arg-Liste zu lang].
Gibt es Einschränkungen bei UNIX Solaris Tar oder GNU Tar? Oder ist das ein ZFS-Problem? Ich verwende Solaris 11.3 mit ZFS.
Antwort1
Dies ist keine Einschränkung von tar. Sie überschreiten die maximale Größe der Argumente, die an ein Programm übergeben werden können. Wenn die Liste der Dateinamen in einer Datei verfügbar ist, können Sie -T
die Option von GNU tar verwenden:
tar -c -f output.tar -T filelist.txt
Tar kann die Dateiliste auch von der Standardeingabe empfangen, indem -
als Dateiname verwendet wird. Wenn Sie beispielsweise ein Archiv mit allen Dateien und Unterverzeichnissen von erstellen möchten mydir
, können Sie die Ausgabe von find
an tar übergeben:
find mydir | tar -c -f output.tar -T -
Antwort2
Wie andere bereits gesagt haben, liegt das Problem (wahrscheinlich) an der Länge des Befehls und nicht an der Größe des Archivs. Sie sollten in der Lage sein,
tar cfTar-DateiDatei001 Datei002 … Datei100 tar ufTar-DateiDatei101 Datei102 … Datei200 tar ufTar-DateiDatei201 Datei202 … Datei300 ︙Alternativ können Sie
tar cfTar-DateiDatei001um das Archiv zu erstellen, und dann
tar cfTar-Datei Datei002 … Datei100 tar ufTar-DateiDatei101 Datei102 … Datei200 tar ufTar-DateiDatei201 Datei202 … Datei300 ︙(ggf. mit
xargs
) um etwas hinzuzufügen.