Rsync только новые файлы с удаленного сервера

У меня есть удаленный сервер с общим ресурсом rsync, и мне нужно вытащить только последние 7 дней файлов.

Я могу ОТПРАВИТЬ файлы на основе даты, используя:

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

но я не могу просто войти на сервер и отправить файлы на свой локальный компьютер, поэтому мне нужен способ использовать rsync, чтобы получить все файлы, размер которых меньше 7 дней, и захватить их.

Я не могу просто синхронизировать все, поскольку общие данные на сервере превышают 100 ТБ, и у меня нет доступа к удаленному серверу, кроме модуля rsync.

Удивительно, но на самом деле это можно сделать только с помощью rsync(1) , без доступа оболочки к удаленному серверу.

Предполагая bash(1) и date(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" 

Это подход, который я использовал как часть rsnapshot резервного копирования rsnapshot :

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