web-dev-qa-db-ja.com

Linuxでのコマンドラインの再帰的/深いディレクトリコピー?

ほとんどの場合に機能するLinuxで再帰的/深いディレクトリコピーを作成するための優れた一般的な方法は何ですか?私はcp -Rのような簡単なものとかなり精巧なcpioの呪文を使ってきました。どちらか一方をもう一方よりも好む大きな長所または短所はありますか?どれを最も頻繁に使用しますか?

13
Greg Mattes
NAME
cp - copy files and directories

-a, --archive
   same as -dpR

-d     same as --no-dereference --preserve=links
-p     same as --preserve=mode,ownership,timestamps
-R, -r, --recursive
    copy directories recursively

だからあなたの質問に答えて:

cp -a /foo /bar

シンボリックリンクとファイル/ディレクトリ 'mode' 'ownership'& 'timestamps'を保持しながら、ディレクトリ/ fooからディレクトリ/ barにすべてを再帰的にコピーします。

29
Gareth

私は"cd $ srcdir; tar -c。| tar -C $ destdir -x"のようなコマンドを最も頻繁に使用しています。ただし、rsync -a $ src $ dstも使用します。

Tarソリューションの最大の強みは、何年も前にcpio、rsync、または再帰的にコピーするcpがなかったシステムで使用しなければならないことです。タールはどこにでもあります。よく使ったので頭にくっついてますが、もっとエレガントな方法があると思います。それは常に仕事が正しく行われているように見えるので、私は本当に代わりを見つけるのに一生懸命に目を向けたことがありません。

6
Zoredache

Rsyncを見てください。2つのディレクトリを最新の状態に保つとコピーするデータが少なくなるので、気に入っています。リモートで動作することもあります。最も単純な形式では、rsync -a/src/dest

6
trent

rsyncは優れたツールです。データ転送のスイスアーミーナイフです。とてもシンプルで強力なツールです。使い始めると夢中になります。

0
Rory