web-dev-qa-db-ja.com

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

ターミナルウィンドウを使用して、UNIX上でディレクトリ構造dir1をdir2に(すべてのサブディレクトリを含めて)コピーする方法を教えてください。

74
Dinesh Kumar
cp -rf /source/path/ /destination/path/

-r = recursive、すべてのサブディレクトリをコピーします

-f = force、既存の保存先ファイルを開くことができない場合、それを削除してやり直してください

-fフラグを使用する場合は、コピー先のものを強制的に上書きするため、注意が必要です。この提案をありがとうございます。

必要に応じて、*ワイルドカードを使用してディレクトリ内のすべてのファイルをコピーすることができます。

106
qroberts

cp -Rの答えは正しいのですが(ところでBSDのフラグは大文字でなければなりません。両方ともlinuxでサポートされています)、 tarに関する古い呪文があります

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

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

既存のシンボリックリンクを同じテキストを持つものに置き換えてコピーしますか?または同じターゲットへのリンクを使用して(補償するために相対パスを調整する)?それともターゲットのビット単位のコピーで?

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

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

10
dmckee

好き

cp -axv source dest

Rsyncもこれに適したツールです。

rsync -va source dest
8
Pete Ashdown