특정 사용자의 파일만 재동기화

특정 사용자의 파일만 재동기화

특정 사용자의 파일만 재동기화하는 방법이 있습니까? 여러 사용자의 파일이 포함된 폴더가 있지만 특정 사용자의 파일만 백업하고 싶습니다.

rsync에 대한 매뉴얼 페이지를 살펴봤지만 그런 플래그는 없는 것 같습니다.

어떤 아이디어가 있나요?

답변1

아니요, rsync 명령줄에서 직접 특정 사용자의 파일을 골라낼 수 있는 방법은 없습니다.

그러나 예를 들어 다음과 같은 명령을 사용하여 이러한 파일 목록을 생성하는 것은 매우 쉽습니다.

   find /src/directory -type f -exec ls -lh {} \; | awk '{if ($3 == "your_name") for (i=1; i<=NF-8; i++) $i = $(i+8); NF-=8; print}'

find/src/디렉토리 아래의 트리에서 모든 파일을 찾고 소유자가 포함된 긴 목록을 인쇄한 다음 이 목록을 에 전달합니다. awk그러면 이 목록은 귀하에게 속한 파일("your_name")을 선택합니다. 전체 경로를 인쇄합니다. 로 시작하는 이상한 구문은 for일부 파일 이름에 공백이 포함될 수 있기 때문에 발생합니다. 따라서 이 구문은 i.e.9번째 열의 모든 토큰( , 공백으로 구분된 모든 문자 시퀀스)을 인쇄합니다(파일 이름에는 임의의 숫자가 포함될 수 있음). 공백). 또한 이 구성은 이것이 한 줄에 유지되도록 합니다.

이 출력을 파일로 리디렉션한 다음 이 파일에 나열된 파일에만 rsync를 사용할 수 있습니다.

답변2

MariusMatutiae의 대답은 나에게 효과가 없었습니다. 나는 거기에 많은 줄만 얻었습니다 -rw-r--r--.

그래서 저는 다음과 같은 답변을 개발했습니다.

  1. find명령에는 사용하기 훨씬 쉬운 옵션 -user(및 )이 있습니다. -group상대 경로/파일 이름이 필요합니다:
    a) find옵션: -printf '%P\n'또는
    b) 파이프 통과sed -e "s#/path##"
  2. rsync는 파일에서 동기화할 수 있는 가능성을 제공합니다: . 이 파일은 로컬에 필요합니다. 따라서 파일을 rsync 푸시해야 합니다. 그렇지 않으면 파일을 가져오는 서버가 이전에 목록이 생성된 원격 측에서 먼저 해당 파일을 가져와야 합니다.--files-from=FILE


=> 내 예에서는 1a) find /usr/share/piwik/ -user www-data -printf '%P\n' > /tmp/find-piwik-rsync.list또는
1b) 가 작동합니다.find /usr/share/piwik/ -user www-data | sed -e "s#/usr/share/piwik/##" > /tmp/find-piwik-rsync.list

2)rsync -a --files-from=/tmp/find-piwik-rsync.list /usr/share/piwik/ remote:/usr/share/piwik

-n먼저 / 로 테스트해야 합니다 --dry-run.

관련 정보