여러 소스 폴더를 재 동기화하는 방법


34

여러 소스를 재 동기화하고이를 달성하는 가장 좋은 방법이 궁금합니다.

예 :

/etc/fstab
/home/user/download

나는 3 가지 해결책에 대해 생각했다.

  • 해결책 1

rsync를 여러 번 호출

rsync -a /etc/fstab bkp
rsync -a /home/user/download bkp

죄수 : 통계를 집계하기 어렵다

  • 해결책 2

tobackup심볼릭 링크가 포함 된 폴더를 만들고 -L옵션 사용

sync -aL /home/user/tobackup bkp

con : 백업 할 내용에 심볼릭 링크가 없어야합니다

  • 해결책 3

파일을 백업으로 옮기고 원래 위치에 심볼릭 링크를 만듭니다.

rsync -a /home/user/tobackup bkp

죄수 : 일부 수동 구성

어느 쪽을 추천 하시겠습니까?

더 좋은 방법이 있습니까?


답변:


33

여러 개의 소스 인수를 전달할 수 있습니다.

rsync -a /etc/fstab /home/user/download bkp

이것은 생성 bkp/fstab하고 bkp/download당신이 준 별도의 명령처럼. 대신 소스 구조를 유지하는 것이 바람직 할 수 있습니다. 이렇게하려면 /소스로 사용하고 인클루드-익스 클루 드 규칙 을 사용하여 복사 할 파일을 지정하십시오. 이를 수행하는 두 가지 방법이 있습니다.

  • /***전체 디렉토리 트리를 복사 할 때 디렉토리의 끝에 디렉토리 와 함께 각 파일 및 디렉토리 구성 요소를 명시 적으로 포함 시키십시오 .

    rsync -a \
        --include=/etc --include=/etc/fstab \
        --include=/home --include=/home/user --include='/home/user/download/***' \
        --exclude='*' / bkp
    
  • 모든 최상위 디렉토리를 포함합니다 /*/(즉, rsync를이 통과 할 수 있도록 /etc하고 /home사본 파일을 찾을 때)와 두 번째 레벨 디렉토리 /*/*/(위해 /home/user),하지만 파일이 복사되지 도착하는 디렉토리를 벗겨을. 부모를 명시 적으로 나열 할 필요가 없기 때문에 더 편리합니다. 당신은 사용할 수있는 --prune-empty-dirs --include='*/'대신 수준의 개수를 계산하지만, 아무도 규칙이 아무것도 외부를 일치시킬 수 있습니다 포함하지 경우에도이 디렉토리를 탐험하기 위해 전체 파일 시스템을 통과 할 rsync와 같은 여기 비현실적이다 /etc하고 /home/user/download.

    rsync -a --prune-empty-dirs \
        --include='/*/' --include='/*/*/' \
        --include=/etc/fstab \
        --include='/home/user/download/***' \
        --exclude='*' / bkp
    

1
훌륭하지만 bkp 안에 디렉토리 구조를 유지하는 방법은 무엇입니까?
로드리고

내 말은, bkp / etc / fstab과 bkp / home / user / dowlonad? 아니면 / bkp / fstab 및 bkp / download?
Rodrigo

@Rodrigo 나는 내 대답을 편집했습니다
Gilles 'SO-stop

13

Gilles의 답변을 정말로 좋아하지만 디렉토리 구조를 유지하면서 --relative옵션 과 함께 여러 소스 인수를 전달하면 디렉토리 구조를 유지하는 것이 가장 좋습니다 .

이 경우 다음과 같은 것을 가질 수 있습니다.

rsync -aR /etc/fstab /home/user/download bkp

결과는 bkp/etc/fstabbkp/home/user/download.

이것에 대한 가장 좋은 부분은 (rsync v. 2.6.7부터 믿습니다) 수신기에서 복제하려는 디렉토리 구조의 양을 본질적으로 제어 할 수 있다는 것입니다.
( 여기서--relative 옵션 에 대한 설명서를 참조 하십시오 )

예를 들어서

rsync -aR /home/./user1/download /home/./user2/download bkp

우리는 끝낼 것 bkp/user1/download하고 bkp/user2/download.


2

쉼표로 구분 된 소스 목록을 포함하는 중괄호도 작동합니다.

rsync -vap --progress --stats root@server:{/etc,/root/backups,/home/ultralazer} /mnt/bigdrive

cp 및 기타 특정 유틸리티를 사용하여 중괄호 sytnax를 호출 할 때 발생하는 것과 다소 유사합니다.

cp -vr /etc /root/backups /home/{ultralazer,zerocool} /mnt/bigdrive

이것으로 ssh 포트를 어떻게 지정 하시겠습니까? 이 구문은 다음을 사용할 때 작동하는 것 같습니다-e
tcurdt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.