ファイルシステムを取得しました: /foo
そして、別のファイルシステムができました: /bar
質問:/foo から /bar にすべてのファイルをコピーするにはどうすればよいですか?
圧縮するスペースはなく、コピーするだけです。しかし、ファイルシステムにはシンボリックリンクやハードリンクが存在する可能性があります。そのため、これらと所有者、権限、構造、隠しファイルを保存する必要があります。最善の方法は何でしょうか?
追加: 奇妙な文字を含むファイルやブロック/文字ファイルも
アップデート: これで gzip を使用できますか? ネットワーク経由でコピーする必要がある場合、圧縮は非常に便利です。
答え1
ルイのコメントほぼ十分です。これにより、隠しファイルを含むすべてがコピーされます。
cd /foo; tar cpf - . | (cd /bar; tar xpvf -)
( として実行root
)。
2 つのプロセス間でコピーされるデータを圧縮する場合はtar
、パイプラインにコンプレッサーとデコンプレッサーを追加できます。
cd /foo; tar cpf - . | gzip -9 | (cd /bar; gunzip | tar xpvf -)
のバージョンがtar
サポートしている場合は、代わりに次のフラグを使用できますz
。
cd /foo; tar cpzf - . | (cd /bar; tar xpzvf -)
(一部のプラットフォームではこの-p
フラグはデフォルトで有効になっていますがroot
、AIX についてはよくわかりません。)
答え2
Tarは非常に多機能ですが、inodeデータに関連する多くの根本的な問題については知りません。
cd $src; find . | backup -if - | (cd $target; restore -xqf -)
数年前、私はこれを「きれいなスクリプト」にしましたが、主に上記のものをコマンド ラインで使用しています。
きれいなスクリプト(2009 年から!うわあ!)については、以下を参照してください。http://www.rootvg.net/content/view/301/309/