100MB를 초과하는 파일을 제외하고 알려진 파일 확장자 패턴과 일치하는 100MB를 초과하는 파일을 포함하여 데이터를 전송하려면 어떻게 해야 합니까?

100MB를 초과하는 파일을 제외하고 알려진 파일 확장자 패턴과 일치하는 100MB를 초과하는 파일을 포함하여 데이터를 전송하려면 어떻게 해야 합니까?

100MB를 초과하는 파일을 제외하고 알려진 파일 확장자 패턴과 일치하는 100MB를 초과하는 파일을 포함하여 데이터를 전송하려면 어떻게 해야 합니까?

rsync 옵션에 대해 읽었지만 rsync를 사용하면 이를 달성할 수 없을 것 같습니다 --max-size=. or와 함께 사용해도 충분히 유연하지 않기 때문입니다.--include--exclude

답변1

두 단계로 진행됩니다(단순화를 위해 이러한 단계를 결합할 수도 있음).

먼저 "작은" 파일을 전송하십시오.

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'.

관련 정보