web-dev-qa-db-ja.com

フォルダーを正確に複製する方法

プログラミングしているデバイスのファイルシステムをコピーしようとしています。私がインストールしていたファイルシステムがなぜ機能しなかったのかを解明しようとかなりの時間を費やした後、cpが仕事を終わらせなかったことがわかりました。元のファイルシステムとdu -sでコピーしたファイルシステムのサイズを確認するためにcp -rを使用しましたが、それらは約150バイト異なることがわかりました。

シンボリックリンクまたはある種のカーネルオブジェクトが正しくコピーされていないことを教えてくれます。

フォルダ/ファイルシステムを正確にコピーすることは可能ですか?もしそうなら、私はそれについてどうやって行きますか?

29
TopGunCoder

別の一般的なオプションは、tar c source | (cd target && tar x )を使用することです。 このlinuxdevcenter.comの記事。 を参照してください。

3
damienfrancois

これを簡単な方法で試してください:

cp -a src target

man cpから

    -a, --archive
           same as -dR --preserve=all

権利、シンボリックリンクを保存します...

58
Gilles Quenot

ここでは、Linuxのすべてのコードを試しました。 Rsync は正しいものとして@seanmclによって提案され、他の人はownersおよび/または一部の特殊ファイルまたは拒否された結果。正確なコードは次のとおりです。

$ Sudo rsync -aczvAXHS --progress /var/www/html /var/www/backup

ディレクトリ名のみを使用することを忘れずに、スラッシュを入れないでください/)またはワイルドカード/*sourceおよびtarget名の最後にある場合、ソースのすぐ下の隠しファイルはコピーされません。

6
Chetabahana

ファイルをコピーする最も正確な方法は、cpioを使用することです。

cd /path/to/source
find . -xdev -print0 | cpio -oa0V | (cd /path/to/target && cpio -imV)

本当に使いやすいわけではありませんが、これは非常に正確で、タイムスタンプ、所有者、権限、特殊ファイルを保持します。

3
janos

Rsync は、ファイルシステムをコピーする最良の方法です。これらは 無数の引数 であり、コピーする内容を正確に制御できます。

2
seanmcl