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/
그러나 이것은 테스트되지 않았습니다.
-print0
GNU(및 기타)에서 발견된 이름은 구분 기호 find
로 인쇄되며 이 표준 입력 스트림을 특정 방식으로 해석 합니다 .nul
-0
rsync
--files-from-
읽은 파일 경로는 --files-from
지정된 소스를 기준으로 해야 하기 때문에 /
in을 소스로 사용하고 있습니다 ( in은 절대 경로라고 rsync
가정합니다 )./source/path
find
조합 변경(테스트되지 않음):
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'
.