100 MBを超えるファイルを除いて、既知のファイル拡張子パターンと一致する100 MBを超えるファイルを含むデータを転送するにはどうすればよいですか?

100 MBを超えるファイルを除いて、既知のファイル拡張子パターンと一致する100 MBを超えるファイルを含むデータを転送するにはどうすればよいですか?

100 MBを超えるファイルを除いて、既知のファイル拡張子パターンと一致する100 MBを超えるファイルを含むデータを転送するにはどうすればよいですか?

rsyncオプションについて読みましたが、rsyncを使用するとこれを達成できないようです--max-size=。 orと一緒に使っても十分に柔軟ではないからです。--include--exclude

ベストアンサー1

2つのステップに進みます(単純化のためにこれらのステップを組み合わせることもできます)。

まず「小さい」ファイルを転送します。

find /source/path -type f -size -100M -print0 |
rsync -av -0 --files-from=- / user@server:/destination/

次に、ファイル名が一致する「ラージ」ファイルを転送しますpattern

find /source/path -type f -size +99M -name 'pattern' -print0 |
rsync -av -0 --files-from=- / user@server:/destination/

しかし、これはテストされていません。

-print0GNU(およびその他)で見つかった名前は区切り文字findで印刷され、この標準入力ストリームを特定の方法で解釈します。nul-0rsync--files-from-

読み取ったファイルパスは--files-from指定されたソースに基づいている必要があるため、/inをソースとして使用しています(inは絶対パスであるとrsync仮定します)。/source/pathfind


組み合わせの変更(テストされていません):

find /source/path -type f \
    \( -size -100M -o -name 'pattern' \) -print0 |
rsync -av -0 --files-from=- / user@server:/destination/

pattern「ラージ」ファイルには複数の文字列が許可されています。

find /source/path -type f \
    \( -size -100M -o -name 'pattern1' -o -name 'pattern2' -o -name 'pattern3' \) -print0 |
rsync -av -0 --files-from=- / user@server:/destination/

各ファイル拡張子は、使用するすべてのファイル拡張子patternと似ています。*.mp4に示すように、これらの内容を引用する必要があります-name '*.mp4'

おすすめ記事