以下からディレクトリをコピーしたいと思います。
path1/dir1
到着
path2/dir2
初めて電話したとき
cp -r path1/dir1 path2/dir2
問題ありません。 dir2 は path2 の下に作成されます。
ls path2/dir2
bu 2番目に、dir1はpath2 / dir2の下に作成されました。
ls path2/dir2/dir1
justを使用して正しい動作を取得できますかcp
? (=呼び出されないrm -f path2/dir2
)
答え1
-T
cp(GNU)オプションを使用してくださいcp
:
cp -rT path2/dir2 path1/dir1
この目的のためにこれを使用する場合rsync
(変更されていないファイルをコピーしないため、必要なものかもしれません)、/
ディレクトリ自体以外のコンテンツが具体的にコピーされるようにソースディレクトリにaを追加できます。たとえば、
rsync -r path1/dir1/ path2/dir2
答え2
すでに存在する宛先にディレクトリを「コピー」する場合、目的の動作は明確ではありません。あなたはしたいですか?
- 新しいファイルを追加するだけですか?
- 新しいファイルを追加し、内容が変更されたファイルを更新しますか?
- ファイルを追加および更新し、ソースから削除されたターゲットのファイルを削除しますか?
基本的に、単純なコピー操作と思われる作業は実際にははるかに複雑ですcp
。すべての場合にこのコマンドを使用しようとしますrsync
。