Bashを使用して、タイムスタンプ、権限、および他のすべての属性を含むすべての属性をまったく同じに保ちながら、ディレクトリを別の場所にコピーするにはどうすればよいですか?
ベストアンサー1
あなたが探しているツールは、rsync
多くのLinuxプラットフォームの標準です。適切なオプションを使用すると、すべての目的に合わせてソースディレクトリをターゲットディレクトリに1対1でコピーできます。
rsync -aHSAX -ih --progress /path/to/source_dir/ /path/to/target_dir
これにより、全体がコピーされます。コンテンツユーザー、権限、タイムスタンプ、ACL、および拡張属性(最後の2つを思い出してくれた@K-att-に感謝します)を維持し、シンボリックリンクをシンボリックリンクにコピーしますsource_dir
。target_dir
コピー先のファイルシステムは、ソースのファイルシステムと同じ属性をサポートする必要があります。それ以外の場合は、エラーメッセージが表示されます。
含まれているディレクトリもコピーするsource_dir
(つまり、新しく作成されたディレクトリで終わる場合)、次のディレクトリを省略するtarget_dir/source_dir/
必要があります。/
source_dir/
cp
別の方法は適切なオプションを使用することです。
cp -r --preserve=all /path/to/source_dir /path/to/target_dir
サポートされているすべての属性(所有者、権限、タイムスタンプ、ACL、SELinuxコンテキスト、拡張属性)も繰り返しコピーして保存されます。