他のファイルシステムからコピーするのを防ぐ「cp -a」コマンドのバリエーションはありますか?

他のファイルシステムからコピーするのを防ぐ「cp -a」コマンドのバリエーションはありますか?

/data/something次のサブディレクトリがあるディレクトリがあるとします。

/data/something/iowa
/data/something/wyoming
/data/something/burkinafaso
/data/something/slovenia

4つのサブディレクトリすべてにコンテンツがあります。マウントポイントがあり、burkinafaso何もありません。すべてのサブツリーで再帰的にコピーされ、空の方法でディレクトリ構造をコピーしたいと思います。とは異なり、そのようなスイッチはないようです。私がしたいことをする最善の方法は何ですか?sloveniaiowawyomingiowawyomingburkinafasosloveniacpdu -xfind -xdev

答え1

GNU Coreutils(ほとんどのLinuxディストリビューション)があるシステムでは、このcpコマンドには-x

cpのマニュアルページから:

-x, --one-file-system

答え2

rsync持つ

-x, --one-file-system       don't cross filesystem boundaries

-x, --a ファイルシステム

これは、繰り返し時にファイルシステムの境界を超えないようにrsyncに指示します。これは、複数のファイルシステムからコピーする項目を指定するユーザーの能力を制限するものではなく、ユーザーが指定した各ディレクトリの階層内でrsyncが繰り返され、削除中に受信側でも同様の繰り返しが行われる点だけに制限されます。また、rsyncは同じデバイスの「バインド」マウントを同じファイルシステムにあるかのように処理することを忘れないでください。

このオプションを繰り返すと、rsyncはレプリカのすべてのマウントポイントディレクトリを無視します。それ以外の場合、見つかった各マウントポイントには空のディレクトリが含まれます(デフォルトのマウントポイントディレクトリの属性にアクセスできないため、マウントされたディレクトリの属性を使用)。

rsyncがシンボリックリンクを縮小するように指示された場合(--copy-linksまたは--copy-unsafe-linksを介して)、他のデバイスのディレクトリへのシンボリックリンクはマウントポイントとして扱われます。非ディレクトリへのシンボリックリンクはこのオプションの影響を受けません。

(ソース: man rsync)

そして、ソースとターゲットの両方がローカルになることができます。私が知っている限り、rsyncs--archiveオプションはsと一致しているように見え、保持する資格があるほぼすべてを保持します。cp

関連情報