copy_only_missing? - /B および /C が欠落しているパスの /A から /C にのみコピーします。きちんとした方法です。

copy_only_missing? - /B および /C が欠落しているパスの /A から /C にのみコピーします。きちんとした方法です。

以下からコピーしたいです。/ㅏ到着/氏道がなくなった/雨そして/氏。 (これはパスであり、たとえばマウントを介してリモートの場所を表すことができるとしますsshfs。)

私は知りたいです...ループを作成し、ファイルシステムを繰り返し、ファイルごとにチェックするよりもきれいな方法はありますか?

ツリーディレクトリのコンテンツ例/ㅏ/雨/氏:

/ㅏ:

/A/1abc/qwe
/A/2abc/asd
/A/3abc/zxc
/A/4abc/rty

/雨:

/A/2abc/asd
/A/3abc/zxc

/氏:

/C/1abc/qwe

予想:以下からコピー/ㅏ到着/氏固有パス4abc/rty:

/A/4abc/rty -> /C/4abc/rty

実際のケースについて説明しましょう/ㅏ/雨/氏、次のシナリオにつながります。

  • 一部からバックアップを作成します。/源泉/ㅏ)一部には/目的地/雨)といくつかのパスをコピーできませんでした。だからあなたはとにかく行方不明のコピーをしたいと思います。だからあなたは見つけます/他の目的地/氏)を受け入れることができ、欠落しているアイテムのみをコピーしようとしています。複製が制限される理由の例は次のとおりです。/ㅏ到着/雨失敗する可能性があります:ディスクがいっぱいです。/雨(例:ファイル名の長さ)、存在しませんが、/氏ファイルシステムなど

答え1

一つの解決策は共同設置BとC(Cは書き込み分岐として機能します)その後、問題はB + Cから欠落しているファイルをAからB + Cにコピーすることになります。これは次の方法で行うことができます。

rsync -a --ignore-existing /A /B+C

共同設置の場合、1つの可能性は次のとおりです。UnionFS ヒューズ

unionfs-fuse -o cow /C=RW:/B=RO /B+C

または共用体:

mount -t unionfs -o dirs=/C=rw:/B=ro unionfs /B+C 

関連情報