web-dev-qa-db-ja.com

1週間より新しいrsyncファイル

サーバーAでrsyncを実行して、7日よりも新しいすべてのファイルをサーバーBからコピーします。

find . -mtime -7

サーバーBのファイルを削除したくありません。

25
mm1

これはあなたをしっかりと進行させるはずです

rsync -RDa0P \
    --files-from=<(find sourcedir/./ -mtime -7 -print0) \
    . user@B:targetdir/

これにより、デバイスノード、権限、タイムスタンプがコピーされます。 --Hオプションは--files-fromで正確ではないだろうと確信しています

31
sehe

私は、リモートサーバーからローカルサーバーに同期するために、cybertoastのコメントに基づいてこのスクリプトを書きました。

ドライランの場合、./script.sh 3または./script.sh 3 dryを使用してスクリプトを呼び出すことができます。

#!/bin/bash
TIME=$1
DRYRUN=$2

if [[ -z $TIME ]]; then
  echo "Error: no time argument."
  echo "Please enter the number of days to sync."
  exit 1
fi

if [[ $DRYRUN = "dry" ]]; then
  DRYRUNCMD="--dry-run"
  echo "Dry run initiated..."
fi

rsync -avz $DRYRUNCMD --files-from=<(ssh \
    user@remote "find path/to/data/ \
    -mtime -$TIME ! -name *.mkv -type f \
    -exec ls $(basename {}) \;") \
  user@remote:. .
6
Rohmer