여러 소스를 재 동기화하고이를 달성하는 가장 좋은 방법이 궁금합니다.
예 :
/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
죄수 : 일부 수동 구성
어느 쪽을 추천 하시겠습니까?
더 좋은 방법이 있습니까?
답변
여러 개의 소스 인수를 전달할 수 있습니다.
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
답변
Gilles의 답변을 정말로 좋아하지만 디렉토리 구조를 유지하면서 --relative
옵션 과 함께 여러 소스 인수를 전달하면 디렉토리 구조를 유지하는 것이 가장 좋습니다 .
이 경우 다음과 같은 것을 가질 수 있습니다.
rsync -aR /etc/fstab /home/user/download bkp
결과는 bkp/etc/fstab
및 bkp/home/user/download
.
이것에 대한 가장 좋은 부분은 (rsync v. 2.6.7부터 믿습니다) 수신기에서 복제하려는 디렉토리 구조의 양을 본질적으로 제어 할 수 있다는 것입니다.
( 여기서--relative
옵션 에 대한 설명서를 참조 하십시오 )
예를 들어서
rsync -aR /home/./user1/download /home/./user2/download bkp
우리는 끝낼 것 bkp/user1/download
하고 bkp/user2/download
.
답변
쉼표로 구분 된 소스 목록을 포함하는 중괄호도 작동합니다.
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