Ich möchte meine Verzeichnisstruktur ohne die Dateien kopieren. Gibt es im tar eine Option, alle Dateien zu ignorieren und nur die Verzeichnisse rekursiv zu kopieren.
Verzeichnisnamen, die Leerzeichen oder andere Sonderzeichen enthalten, erfordern möglicherweise zusätzliche Aufmerksamkeit. Zum Beispiel:
%Vor%Hier sind einige Variationen, um diese Fälle von "ungewöhnlichen" Verzeichnisnamen zu behandeln:
%Vor%Wenn -print0 mit find verwendet wird, werden Dateinamen als nullterminierte Strings ausgegeben. mit -0 xargs interpretiert Argumente auf die gleiche Weise. Wenn Sie null als Terminator verwenden, stellen Sie sicher, dass auch Dateinamen mit Leerzeichen und Zeilenumbrüchen korrekt interpretiert werden.
Es ist auch möglich, Ergebnisse direkt von find
nach tar
zu leiten:
Wenn tar mit -T - (oder - files-from - ) aufgerufen wird, liest es Dateinamen von stdin und erwartet, dass jeder Dateiname durch eine Zeile getrennt wird Pause.
Für maximale Wirkung kann dies mit Optionen für nullterminierte Strings kombiniert werden:
%Vor% Von diesen halte ich diese letzte Version für die robusteste, da sie sowohl ungewöhnliche Dateinamen unterstützt als auch (im Gegensatz zu xargs) nicht inhärent durch Systembefehlszeilengrößen begrenzt ist. (siehe xargs --show-limits
)
Gehe in den Ordner, in dem du anfangen willst (deshalb benutzen wir find dot) Speichern Sie die Tar-Datei woanders. Ich glaube, ich habe einen Fehler gemacht, als ich es genau dort gelassen habe. Teer mit r nicht c. Ich denke mit cf erstellst du immer neue Dateien und nur dich Holen Sie sich den letzten Satz von Dateiunterverzeichnissen. Teer wird an die TAR-Datei angehängt. - Keine Rekursion, da der Fund Ihnen bereits die gesamte Liste der Dateien liefert also willst du nicht rekurrieren.
finden. -type d | xargs tar rf /irgendwoinsel / was auch immer-dirsonly.tar --no-recursion
tar tvf /irgendwo /was-dirsonly.tar | mehr, um zu überprüfen, was du hast.