web-dev-qa-db-ja.com

(ubuntu tar)隠しディレクトリのアーカイブ

ディレクトリmydirのtarは隠しファイルと隠しサブディレクトリをアーカイブしますが、withinmydirから*ワイルドカードは使用しません。これは長年の既知の不整合またはバグですか?

編集(追加情報):ワイルドカードを使用したmydir内のtarは、immediateディレクトリ内の隠しファイルと隠しサブディレクトリを「表示」またはアーカイブしません。ただし、mydirの隠しサブディレクトリでは、隠しファイルと隠しサブディレクトリがアーカイブされます。

18
H2ONaCl

答えは、*ワイルドカードはシェルによって処理され、ドットで始まるものには拡張されないということです。他のワイルドカード?も、ドットで始まるものには展開されません。拡張を行うのはシェルであると指摘してくれたKeithに感謝します。したがって、tarとは何の関係もありません。

shopt -s dotglobを使用する場合、拡張には.filenameなどが含まれます。アンディに感謝します。

shopt -u dotglobを使用してオフにします。

dotglobオプションを切り替えても、ls自体は変更されません。むしろ、ls *のようなものに示されているように拡張動作を変更するだけです。

編集:私の推奨事項は以下のコメントにあります。

5
H2ONaCl

ワイルドカードを使用すると、機能しません。を指定する必要があります。 (現在のディレクトリ)隠しファイルを含む完全なディレクトリを意味する場合。できるよ

tar -cvpzf test.tgz .
29
Madhur Ahuja

次を使用できます。

tar -cvpzf test.tgz * .??*

ただし、これは名前が2より大きい隠しファイルに対してのみ機能します(「。」および「..」を防ぐため)。

6
Markoj

シェルはワイルドカードを展開するので、タールはワイルドカードを見ることさえできません。必要に応じて、明示的に追加する必要があります。 (.*)。ただし、単一のディレクトリをtarするのが最も一般的であり、tarを解除するとすべてが同じ場所に移動します。

3
Keith

次を使用して、現在のディレクトリ(.hiddenを含む)内のすべてのファイル/フォルダを圧縮できます。

tar -zcvf compressed.tgz `ls -A -1`

最後の引数は、圧縮するフォルダーです。合格すればls -A -1、現在のディレクトリ内のすべてのフォルダを渡しますが、.および..。サブディレクトリに関しては、.hiddenファイルはデフォルトですでに圧縮に含まれています。

2
zurfyx
shopt -s dotglob

これにより、

1
andy