cp -rとcp -aの違い


174

私は違いを探していますcp -rcp -a。フォルダからファイルをコピーするという意味で「再帰的」とはどういう意味ですか?


62
説明の意味が必ずしも明確ではないため、一部の人々はmanページのより良い説明を探しています。特定のコマンドで実際に何が起こっているかを把握するために、何度も掘り下げてテスト/実験する必要がありました。grepのmanページはいつでも私を混乱させる可能性があります。
ジョー

2
あなたのフラストレーションは理解できますが、ほとんどの場合、学ぶための最良の方法はテストと実験です。
トリプルDES

37
または、ここで質問し、理解できる方法で回答を得て、テストと実験の対象と方法をよりよく理解することで学習します。などなど、あなたは非常によく私のために動作しないために動作しますのでご注意下さい
ウィルLanni

回答:


198

再帰とはcp、ディレクトリの内容をコピーすることを意味し、ディレクトリにサブディレクトリがある場合、それらも(再帰的に)コピーされます。を指定しない-Rと、cpコマンドはディレクトリをスキップします。Linuxの-r場合と同じですが-R、他のUNIXバリアントのいくつかのエッジケースでは異なります。

デフォルトでcpは、古いファイルと同じコンテンツを持ち、同じ許可を持つがumaskによって制限された新しいファイルを作成します。コピーは、コピーの時点から日付が付けられ、コピーを実行するユーザーに属します。この-pオプションを使用すると、コピーは元のファイルと同じ修正時間、同じアクセス時間、同じ許可を持ちます。また、コピーを実行するユーザーがそのようなファイルを作成する権限を持っている場合、元の所有者と同じ所有者とグループを持ちます。

この-aオプションは-R、および-pに加えて、他のいくつかの保存オプションを意味します。同じディレクトリツリー、同じファイルタイプ、同じコンテンツ、同じメタデータ(時間、権限、拡張属性など)にできるだけ近いコピーを作成しようとします。


35
基本的に、特別なものが必要な場合を除き-r-aarchiveの場合)が常に最も安全であり、おそらく予想されることなので、必要になることはありません。
AMS

2
@amsはい、それは良い要約です。使用する唯一の一般的な理由-rはあなたがLinux以外のUNIXバリアントを持っていないから-aですcp -rp。またはrsync -a
ジル

時にはパーミッションは-r許可ではなく、-aます
DrCord

-rではなく-RはUbuntu 18で動作しません
Arkady

16

「再帰的」の-rまたは-Rオプションは、サブフォルダー内のファイルを含むすべてのファイルをコピーすることを意味します。

リストされている-aオプションは-dRと同じです。つまり、リンクを保持し、サブディレクトリの内容をコピーします。リンクを保存することの意味は、再帰的にコピーしているため、リンクをたどらないということです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.