
rsync共有を持つリモートサーバーがあり、過去7日間のファイルを抽出するだけです。
次のコマンドを使用して、日付に基づいてファイルを送信できます。
find /path -mtime 7 ... -exec rsync -a
ただし、サーバーにログインしてファイルをローカルコンピュータに送信することはできないため、rsyncを使用して7日未満のすべてのファイルをインポートしてクロールする方法が必要です。
サーバー上のデータ全体が100 TBを超え、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/" .