원격 서버의 새 파일만 재동기화

원격 서버의 새 파일만 재동기화

rsync 공유가 있는 원격 서버가 있고 지난 7일 동안의 파일만 추출하면 됩니다.

다음 명령을 사용하여 날짜를 기준으로 파일을 보낼 수 있습니다.

find /path -mtime 7 ... -exec rsync -a

하지만 서버에 로그인하여 파일을 로컬 컴퓨터로 보낼 수는 없으므로 rsync를 사용하여 7일 미만의 모든 파일을 가져와 크롤링하는 방법이 필요합니다.

서버에 있는 전체 데이터가 100TB가 넘고 rsync 모듈 외에는 원격 서버에 접근할 수 없기 때문에 단순히 모든 것을 동기화할 수는 없습니다.

답변1

rsync(1)놀랍게도 이 작업은 실제로 원격 서버에 대한 셸 액세스 없이 자체적으로 수행될 수 있습니다 .

bash(1)GNU를 가정하면 date(1):

#! /usr/bin/env bash

src=rsync://example.com/archives/
dst=/path/to/mirrors

cutoff=$( date -d '7 days ago' +%s )
rsync -na --no-motd --out-format='%M %f' "$src" "$dst" | \
    while IFS= read -r line; do
        d=${line%% *}
        fn=${line#* }
        fdate=$( date -d "${d/-/ }" +%s ) || continue
        if [ $fdate -ge $cutoff ]; then printf '%s\0' "$fn"; fi
    done | \
    rsync -a --files-from=- -0 "$src" "$dst"

답변2

백업 스크립트의 일부로 사용하는 방법은 다음과 같습니다 rsnapshot.

rhost=user@backuphost
rpath=/path/to/files

ssh -qx "$rhost" "cd '$rpath' && find . -mtime -7 -print0" |
    rsync --from0 --files-from=- -avHS "$rhost:$rpath/" .

관련 정보