ファイルシステムがあります:/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/