
No.1ベストアンサー
- 回答日時:
> コピーしたいディレクトリから下のディレクトリやファイルまで含めてそのままコピーする
「下のディレクトリやファイルまで含めて」という条件だけを指定するのが-rオプションです。
-rオプション無しだと、cpはファイルしかコピーできませんが、-rオプションを付けると
「コピーしようとしている物がディレクトリだったら、その中に入っている物をコピーする」
「そうやってコピーしようとしている物がまたディレクトリだったら、さらにその中に入っている物をコピーする」
…
と、順次ディレクトリを辿ってコピーしていきます。
この「ディレクトリを順次辿る」ことを「再帰的」と称しています。
一方、-aオプションの「属性」は、ファイルのタイプスタンプなどのことです。
-a 無しだと、ファイル先のファイルの更新時刻はコピーを実行した時刻になりますが、-a を付けると、更新時刻などもコピー元と同じになります。
「構造」とは、ディレクトリやシンボリックリンクなどの、特殊なファイルのことです。そのため、-aオプションでも-rオプションと同じく、再帰的なコピーは行います
-rオプションでは、タイムスタンプなどの情報が消えてしまいますし、
シンボリックリンクも「ファイルとしてコピー」されてしまいますので、「そのままコピーする」のなら、 -a オプションの方がいいでしょう。

No.2
- 回答日時:
Linuxということで、GNU cp を仮定して議論します。
他のUNIX系OSのcpコマンドには -a が無かったり、-r の動作が若干異なるので、
GNU/Linux 以外の環境では注意が必要です。
> また、コピーしたいディレクトリから下のディレクトリやファイル
> まで含めてそのままコピーするにはどちらが適しているのでしょうか?
「再帰的にコピー」とは、「コピーしたいディレクトリから下の
ディレクトリやファイルまで含めてそのままコピーする」という
意味とほぼ同じです。そして、-a と -r のどちらも、
この「再帰的なコピー」を行います。
しかし、-r でコピーしてしまうと、コピー先のファイルの更新時刻や
所有者といった情報(これらをファイルの属性といいます)が、コピーを
行った時刻やコピーを行ったユーザに変わってしまいますし、デバイス
ファイルやハードリンクといった特殊なファイルが正しくコピーできな
いことがあります。
-a はそういった問題はありません。-a の「できるだけ属性や
構造を保持する」とはそういう意味です。
ということで、Linux系OS (GNU/Linux) の限りにおいては、
-a と -r だけを比較するなら、-a が適すると考えられます。
ただし、冒頭で書いたように、-a は他のUNIXの cp には
無いことがあるので注意が必要です。Linuxを含めたほとんどの
UNIX系OSで使用できるオプションだけを使って -a に近い動作
させるには、-Rp というオプションになると思います(POSIX)。
それでも、-Rp では、ハードリンクをハードリンクとして
コピーできない等、完全には -a の代わりにはなりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
拡張子.dどういう意味
-
ファイル名で / (スラッシュ...
-
make時に出てきたエラーメッセ...
-
tarでディレクトリのみをアーカ...
-
「ドット(.)」と「¥」の意味...
-
/home/lost+foundを消してしまった
-
"cp -a"と"cp -r"の違い
-
ftpのmgetコマンドの自分の格納...
-
linuxコマンド mkdirでディレ...
-
特定文字列を除外してcpする方法
-
LinuxでSGID設定する際、2775と...
-
MS-DOS(DOS窓ではない)で"~"(チ...
-
★Win2000のドライブ文字変更★
-
rc.dとかディレクトリやファイ...
-
特定のサイトにアクセスできま...
-
unzipコマンドでディレクトリな...
-
サイト登録審査サービス「ルッ...
-
/(スラッシュ)で区切ったフル...
-
古いファイルやディレクトリを...
-
cpコマンドで、属性維持したま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル名で / (スラッシュ...
-
ftpのmgetコマンドの自分の格納...
-
7zを使うとフォルダの中身がす...
-
拡張子.dどういう意味
-
「照合パターンに合いません」...
-
"cp -a"と"cp -r"の違い
-
make時に出てきたエラーメッセ...
-
FTPコマンドのCDについて
-
linuxコマンド mkdirでディレ...
-
バッチファルの置き場所
-
scpによるデータ転送後、ディレ...
-
Linuxコマンドについて
-
シンボリックリンクについて
-
FTPでPUTできない原因は何?
-
zorin os lite 15 のデスクトッ...
-
ホームページのディレクトリを...
-
「ドット(.)」と「¥」の意味...
-
2TBのUSBメモリを2000円ほどで...
-
/(スラッシュ)で区切ったフル...
-
Minecraftにforgeを入れたら、...
おすすめ情報