1 주일이 지난 rsync 파일


24

서버 A에서 rsync를 실행하여 7 일 이후의 서버 B에서 모든 파일을 복사하려고합니다.

find . -mtime -7

서버 B에서 파일을 삭제하고 싶지 않습니다.


b) 얼마나 자주 rsync를 실행합니까?

답변:


30

이것은 당신을 확실한 방법으로 진행해야합니다

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

장치 노드, 권한, 타임 스탬프를 복사합니다. 나는 -H 옵션이 --files-from으로 정확하지 않을 것이라고 확신합니다.


23
원격 필터로 설정하려면 :rsync -avn --files-from=<(ssh user@A 'find /path/on/A/ -mtime -7 -type f -exec basename {} \;') user@A:/path/on/A/ user@B:targetdir
cybertoast

cybertoast의 의견에 대한 수정 사항을 추가하고 싶습니다. 아마도 내 것과는 다른 컨텍스트 일지 모르지만 시간 기준에 따라 원격 서버에서 파일을 간단하게 추출하려고했습니다. 따라서 서버 A는 내 목적지이고 서버 B는 내 소스입니다. rsync -avn --files-from = <(ssh user @ A 'find / path / on / A / -mtime -7 -type f -exec basename {} \; ') user @ B : / / path / in / server / A 소스에 대한 / 만 있음을 주목하십시오. --files-from은 상대 경로를 관리합니다. 의심스러운 경우 man rsync를 사용하고 --files-from 섹션을 참조하십시오.
einarc

@cybertoast basename명령에서 무엇을 의미합니까? 설명해 주시겠습니까?
Kemat Rochi 2016

@KematRochi- "기본 이름, dirname-경로 이름의 파일 이름 또는 디렉토리 부분을 반환합니다." 희망이 도움이됩니다.
cybertoast 2016 년

6

나는 원격 서버에서 로컬로 동기화하기 위해 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:. .
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.