
ターミナル ウィンドウを使用して、Unix 上でディレクトリ構造 dir1 を dir2 (すべてのサブディレクトリを含む) にコピーするにはどうすればよいですか?
答え1
cp -rf /source/path/ /destination/path/
-r
= 再帰的に、すべてのサブディレクトリをコピーします
-f
= 強制、既存の宛先ファイルを開けない場合は削除して再試行します
注記-f
このフラグを使用すると、コピー先の内容がすべて強制的に上書きされるため、注意が必要です。この提案をしてくれた @Nifle に感謝します。
必要に応じて、* ワイルドカードを使用してディレクトリ内のすべてのファイルをコピーすることもできます。
答え2
答えは正しいですがcp -R
(ちなみにBSDの旗は大文字でなければなりませんが、Linuxではどちらもサポートされています)、タールに関する古い呪文:
$ tar cf - . | (cd DIR; tar xf - )
なぜそんなことをするのでしょうか?タールはかなり洗練された理解力を持っているからですリンク困難であり象徴的でもある。
既存のシンボリック リンクを同じテキストを持つシンボリック リンクに置き換えるためにコピーしますか? または、同じターゲットへのリンク (補正のために相対パスを調整) に置き換えますか? または、ターゲットのビット単位のコピーに置き換えますか?
元のファイルの 2 つのファイルがハードリンクされている場合、新しい構造にはデータのコピーが 2 つある必要がありますか、それとも 1 つだけでしょうか?
決断、決断。Tar には適切なデフォルトがありますが、それについては非常に具体的に指定できます。
答え3
好き
cp -axv source dest
Rsyncはこれに適したツールです
rsync -va source dest