作業中のクラスタではrsyncを使用できないため、cp
などtar
を使用する必要がありますfind
。無視しながら、すべてのファイルやサブフォルダなどを含む大きなディレクトリをコピーしたいと思います。たとえば、「file1」、「file2」、「file3」などの名前のファイルはコピーされません。
私は見たこの文書はSOに関するものです。 これにより、次のことができます。含む特定のファイルのみ。基本的にこれが欲しいけど欲しい入らないようにする特定のファイル。
私も試しましたこのソリューション
しかし、そこに提案されたコマンドを使用しようとするとtar
エラーが発生しますtar: This does not look like a tar archive
。tar: Cowardly refusing to create an empty archive
cp !(filename-to-ignore) new_dir/
私もこの投稿ただし、サブフォルダはコピーされません。
私はbashの初心者なので、答えやフラグなどの機能を説明してくれれば本当に役に立ちます。今試してみたのは難しくないと思います。
答え1
GNUまたはlibarchiveの使用tar
:
(cd src && tar --exclude='file[123]' -cf - .) |
(cd dst && tar -xpf -)
GNUはtar
ファイルのスパース性を維持しておらず、すべての拡張属性ではなく、バージョン(または一部のオペレーティングシステムにいくつかのパッチがあるオペレーティングシステム)によって異なります。 (しばしば呼ばれるlibarchive
)は拡張属性を保持し、抽出時にオプションを使用してスパースファイルを生成できます。tar
bsdtar
-S
パイプを介して互いに接続された2つのサブシェルを実行します。最初は(現在の)ディレクトリとすべての内容をtar
再帰的に表すストリームを生成し.
ますが、名前がパターンと一致するファイルを無視しますtest[123]
(正規表現ではなくシェルglobパターンに似ています。これには{ test
1、2、3文字)来ます)。 } set)は、c
サブシェルの現在の作業ディレクトリを中断したd
後、独自の作業ディレクトリ()からストリームをcd
動的に抽出します。tar
dst
GNUは、次のように内部的にこれを実行することも選択tar
できます。-C
chdir()
GillesはあなたがリンクしたQ&Aに表示されます。(1つの欠落がありましたが、今追加してエラーを説明しました。).
シェルを使用するよりも利点はほとんどありませんが。cd
また、見ることができますinfo -n exclude tar
ファイルはGNUを使用してtar
さまざまな方法で除外でき、より一般的にはinfo -n choosing tar
ファイルが作成または抽出するアーカイブにファイルを選択/含める方法を調整します。