2010-12-15 15:45:40 +0000 2010-12-15 15:45:40 +0000
81
81

Unix上のディレクトリをコピーする

ターミナルウィンドウを使って、Unix上のディレクトリ構造(dir1)をdir2(すべてのサブディレクトリを含む)にコピーするにはどうすればいいですか?

回答 (3)

117
117
117
2010-12-15 15:49:02 +0000
cp -rf /source/path/ /destination/path/

-r = 再帰的に、すべてのサブディレクトリをコピー

-f = 強制的に、既存の保存先ファイルが開けない場合は、それを削除してからもう一度やり直し

注意 -fフラグを使う場合は、コピー先を強制的に上書きしてしまうので注意が必要です。この提案をしてくれた @Nifle さんに感謝します。

必要ならば、ディレクトリ内の全てのファイルをコピーするために *ワイルドカードを使いたいかもしれません。

11
11
11
2010-12-15 16:07:16 +0000

cp -Rの答えは正しいのですが(ちなみにBSDのフラグの場合は大文字でなければなりません、どちらもlinuxではサポートされています)、 tarにまつわる古い呪文 があります。

$ tar cf - . | (cd DIR; tar xf - )

一体なぜそんなことをするのか? なぜなら、tar はハードとシンボリックの両方の link をかなり高度に理解しているからだ。

0x1&

コピーして既存のシンボリックリンクを同じテキストを持つものに置き換えたいのでしょうか?それとも同じターゲットへのリンクをコピーしますか? それともターゲットのビット単位のコピーで?

オリジナルの2つのファイルがハードリンクされている場合、新しい構造体にはデータのコピーが2つあるべきですか、それとも1つだけですか?

決断、決断。Tar は賢明なデフォルトを持っていますが、それについては非常に具体的にすることができます。

9
9
9
2010-12-15 19:54:18 +0000
cp -axv source dest

Rsyncはこの

rsync -va source dest
```のためのもう一つの良いツールです。