cp -rpを忘れた場合にのみ所有権を変更します。

cp -rpを忘れた場合にのみ所有権を変更します。

/dataコピーには夜の時間がかかる多数のファイルとフォルダがあるフォルダがあります。

cp -r /data/* /data2 忘れてルートにコピーしました。p

目的地のすべてはルートの所有です。

ソースコードは削除しませんでしたが、/data必要でない限り再コピーしたくありません。

ソースとターゲットの間で権限をコピーまたは同期する方法はありますか?

答え1

mtreeこれにより、ファイルの内容をまったく読む必要がないという利点があります。ファイルメタデータのみを比較し、ソースと一致するようにターゲットを変更します。

$ sudo mtree -cp /data | sudo mtree -Utp /data2

-cLHS に、mtreepath をルートとする階層仕様を生成するよう指示し-p、RHS は/datapath をルートとする階層のmtree所有者/グループ/権限-Uおよび変更時間で更新を呼び出します。-t-p /data2

答え2

私は以下を使用しますrsync

rsync -avic --progress /data/ /data2

注:
末尾は意図的な/ものであり、その下のすべてのファイルが作成または再コピーされないように/data/してください。 (尾に従う必要はありません)rsync/data2/data//data2

オプションは次のとおりです。
-a「アーカイブ」にちなんで名前が付けられていますが、実際にはコマンドの動作を模倣する便利なオプション(サブディレクトリに再帰的に戻るなど)をオンにしますcp -r。コピーを詳細に作成し、コピーされ
-vたファイルの権限と所有権を設定する方法を示します。これはコピープロセスで非常に便利です。チェックサムを使用して、各ファイルのデータをコピーする必要があるかどうかを決定します。これにより、ファイルの内容のコピーがスキップされ、ターゲットファイルの所有権/権限のみが調整されます。必須ではありませんが、ファイルの内容をターゲットにコピーする進行状況を表示します。-irsync
-crsync
--progress

-vオプションを使用すると、-i各ファイルが端末ウィンドウで少なくとも1行以上スクロールします。これをしたくない場合は無視してください。 rsyncが何をするかを示す詳細なテスト実行を実行しますが、ファイルを変更したくない場合はそれを追加できます-n。そのため、-avicnこれらのオプションを試して実行し-avicn --progressてから、そのオプションを使用して実行する方が-ac --progress良いかもしれません。

関連情報