/data
コピーには夜の時間がかかる多数のファイルとフォルダがあるフォルダがあります。
cp -r /data/* /data2
忘れてルートにコピーしました。p
目的地のすべてはルートの所有です。
ソースコードは削除しませんでしたが、/data
必要でない限り再コピーしたくありません。
ソースとターゲットの間で権限をコピーまたは同期する方法はありますか?
答え1
mtree
これにより、ファイルの内容をまったく読む必要がないという利点があります。ファイルメタデータのみを比較し、ソースと一致するようにターゲットを変更します。
$ sudo mtree -cp /data | sudo mtree -Utp /data2
-c
LHS に、mtree
path をルートとする階層仕様を生成するよう指示し-p
、RHS は/data
path をルートとする階層のmtree
所有者/グループ/権限-U
および変更時間で更新を呼び出します。-t
-p /data2
答え2
私は以下を使用しますrsync
:
rsync -avic --progress /data/ /data2
注:
末尾は意図的な/
ものであり、その下のすべてのファイルが作成または再コピーされないように/data/
してください。 (尾に従う必要はありません)rsync
/data2/data
/
/data2
オプションは次のとおりです。
-a
「アーカイブ」にちなんで名前が付けられていますが、実際にはコマンドの動作を模倣する便利なオプション(サブディレクトリに再帰的に戻るなど)をオンにしますcp -r
。コピーを詳細に作成し、コピーされ
-v
たファイルの権限と所有権を設定する方法を示します。これはコピープロセスで非常に便利です。チェックサムを使用して、各ファイルのデータをコピーする必要があるかどうかを決定します。これにより、ファイルの内容のコピーがスキップされ、ターゲットファイルの所有権/権限のみが調整されます。必須ではありませんが、ファイルの内容をターゲットにコピーする進行状況を表示します。-i
rsync
-c
rsync
--progress
-v
オプションを使用すると、-i
各ファイルが端末ウィンドウで少なくとも1行以上スクロールします。これをしたくない場合は無視してください。 rsyncが何をするかを示す詳細なテスト実行を実行しますが、ファイルを変更したくない場合はそれを追加できます-n
。そのため、-avicn
これらのオプションを試して実行し-avicn --progress
てから、そのオプションを使用して実行する方が-ac --progress
良いかもしれません。