
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で質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のような設定をしたMakefileを作成するにはどう記述すればよい 1 2023/02/03 20:10
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- USBメモリー・SDカード・フラッシュメモリー ファイルをコピーできない 5 2022/09/23 10:38
- UNIX・Linux サーバー間のデータコピー(データ形式とデーターフォーマットの変換あり。一定間隔で処理) 2 2023/08/22 22:15
- Windows 10 指定したファイルを任意の範囲のディレクトリ内に上書き保存したい 1 2022/11/24 10:42
- UNIX・Linux Ubuntu でinvalid filenameとなるファイルをコピーする方法 3 2023/06/08 22:26
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- 電気工事士 【電気設備設計士さんに液晶パネルタイプの電力量計に関する質問です】キュービクル内の液晶 1 2023/07/24 18:16
- UNIX・Linux redmineにメールを飛ばす方法 1 2022/09/13 22:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シンボリックリンクについて
-
ftpのmgetコマンドの自分の格納...
-
拡張子.dどういう意味
-
ファイル名で / (スラッシュ...
-
7zを使うとフォルダの中身がす...
-
Linuxコマンドについて
-
scpによるデータ転送後、ディレ...
-
FTPコマンドのCDについて
-
「照合パターンに合いません」...
-
バッチファルの置き場所
-
linuxの特定のディレクトリへの...
-
FTPでPUTできない原因は何?
-
make時に出てきたエラーメッセ...
-
FTPで上書きできない
-
linuxのコマンドラインで、拡張...
-
tarコマンドのエラーについて
-
空フォルダーでFDはいっぱい...
-
"cp -a"と"cp -r"の違い
-
/varの容量不足の解決策はない...
-
「ドット(.)」と「¥」の意味...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ftpのmgetコマンドの自分の格納...
-
ファイル名で / (スラッシュ...
-
拡張子.dどういう意味
-
7zを使うとフォルダの中身がす...
-
Linuxコマンドについて
-
make時に出てきたエラーメッセ...
-
FTPでPUTできない原因は何?
-
"cp -a"と"cp -r"の違い
-
linuxコマンド mkdirでディレ...
-
FTPコマンドのCDについて
-
/(スラッシュ)で区切ったフル...
-
「照合パターンに合いません」...
-
zorin os lite 15 のデスクトッ...
-
scpによるデータ転送後、ディレ...
-
バッチファルの置き場所
-
ホームページのディレクトリを...
-
「ドット(.)」と「¥」の意味...
-
#./configureの時点でダメです。
-
ftpでのフォルダごとの転送はで...
-
LinuxでSGID設定する際、2775と...
おすすめ情報