コピーしたい/あに/Cパスが見つからない/Bそして/C(これらはパスであり、たとえば 経由でマウントされたリモートの場所も表すことができると想定してくださいsshfs
)
私は疑問に思う...ループを記述し、ファイルシステムを反復処理してファイルごとにチェックするよりも簡潔な方法はありますか?
ツリーディレクトリの内容の例/あ、/B、/C:
/あ:
/A/1abc/qwe
/A/2abc/asd
/A/3abc/zxc
/A/4abc/rty
/B:
/A/2abc/asd
/A/3abc/zxc
/C:
/C/1abc/qwe
予想: コピー元/あに/Cパスのみ4abc/rty
:
/A/4abc/rty -> /C/4abc/rty
実例を挙げて説明すると/あ、/B、/C次のようなシナリオが考えられます。
- バックアップを取って、コピーして/ソース(/あ)一部に/行き先(/B)そして、いくつかのパスはコピーできませんでした。だから、とにかく不足しているものをコピーしたいのです。/別の目的地(/C)がそれらを受け入れることができ、不足しているものだけをコピーしたいとします。以下は、コピー元からコピーする理由の制限の例です。/あに/B失敗する可能性があります: ディスクがいっぱいです。ファイルシステムの制限/B(ファイル名の長さなど)は存在しないが、/Cファイルシステムなど
答え1
一つの解決策は、ユニオンマウントBとCの書き込みブランチをCとします。すると問題は、B+Cに存在しないファイルのみをAからB+Cにコピーすることになります。これは次のように実行できます。
rsync -a --ignore-existing /A /B+C
ユニオンマウントの場合、1つの可能性はユニオンFSヒューズ。
unionfs-fuse -o cow /C=RW:/B=RO /B+C
または unionfs:
mount -t unionfs -o dirs=/C=rw:/B=ro unionfs /B+C