좋아하는 rsync 팁과 요령


57

더 많이 사용 rsync할수록 파일 전송의 스위스 군용 칼임을 알게됩니다. 너무 많은 옵션이 있습니다. 나는 최근에 당신이 갈 수 --remove-source-files있고 파일이 복사 될 때 소스에서 파일을 삭제하여 복사 프로그램보다 조금 더 이동한다는 것을 알았습니다 . :)

가장 좋아하는 작은 rsync 팁과 요령은 무엇입니까?

답변:


19

많은 파일을 동기화해야하는 경우 rsync 버전 3을 사용해보십시오! V3는 파일 목록을 점진적으로 빌드하고 버전 2보다 훨씬 빠르고 메모리를 덜 사용합니다.

플랫폼에 따라 크게 달라질 수 있습니다. OSX 버전 2.6.3에서는 컴파일 한 버전 3.0.2가 즉시 복사를 시작하는 동안 5 백만 개의 파일을 작성하는 데 1 시간 이상 걸리거나 충돌이 발생했습니다.


참고로 한 가지 옵션 (예 --delete-before를 들어) 을 사용하는 경우 이전 "빌드 목록 우선"동작이 사용되므로 이러한 옵션이 올바르게 작동해야합니다. 따라서이 동작이 표시되지 않으면 사용중인 다른 옵션은 가능한 것을 중지하는 것으로 알려져 있습니다. 큰 트리에서 rsync를 대화식으로 사용하고 초기 스캔을 강제로 수행하여 출력 --progress이 정확 하도록하는 경우에 유용합니다 (예 : 초기 스캔 후 새 객체를 찾을 수 없으므로 "비교할 객체"수는 절대 증가하지 않습니다) ).
David Spillett

18

--link-dest공간 효율적인 스냅 샷 기반 백업 생성을 사용 하여 백업 된 데이터의 전체 사본이 여러 개 (각 백업 실행마다 하나씩)있는 것처럼 보이지만 실행간에 변경되지 않는 파일은 새 사본 저장 공간을 작성하는 대신 하드 링크됩니다.

(실제로, 나는 여전히 똑같은 것을 달성 하는 rysnc-followed-by-cp -al 방법을 사용합니다. 두 기술오래 되었지만 여전히 좋은 방법은 http://www.mikerubel.org/computers/rsync_snapshots/ 를 참조하십시오 . 및 관련 문제)

이 기술의 한 가지 주요 단점은 디스크 오류로 인해 파일이 손상된 경우 해당 파일에 연결된 모든 스냅 샷에서 파일이 손상되지만 오프라인 백업도 가지고 있기 때문에이 문제를 적절히 방지 할 수 있다는 것입니다. 주의해야 할 또 다른 사항은 파일 시스템에 충분한 inode가 있거나 실제로 디스크 공간이 부족하기 전에 ode가 부족하다는 것입니다 (ext2 / 3 기본값에는 문제가 없었 음).

또한, --dry-run특히 --delete*옵션을 사용할 때 약간의 편집증에 매우 유용한 것을 잊지 마십시오 .


6
--dry-run의 경우 +1
David Z

1
-n은 --dry-run
ctennis의 지름길입니다.

3
특히 다른 사람들이 유지 관리 할 수있는 스크립트에서 긴 이름을 사용하는 것을 선호합니다. 문서를 참조하지 않고 의도 한 것을 명확하게 만듭니다.
David Spillett

+1 위에서 설명한 것처럼 하드 링크 된 스냅 샷을위한 --link-dest 방법을 사용하여 많은 머신에서 많은 TB의 백업 솔루션을 구현했습니다. 완벽하게 작동했습니다.
matja

--link -dest 백업이 마음에 드시면 후드 아래에서 rsync를 사용 하는 Dirvish 를 확인하십시오
hfs

14

느린 링크를 통해 거대한 파일로 웹 사이트를 업데이트해야하는 경우 다음과 같이 작은 파일을 전송할 수 있습니다.

rsync -a --max-size = 100K / var / www / 거기 : / var / www /

그런 다음 큰 파일에 대해이 작업을 수행하십시오.

rsync -a-최소 크기 = 100K --bwlimit = 100 / var / www / 거기 : / var / www /

rsync에는 웹 사이트에 편리한 많은 옵션이 있습니다. 불행히도 동시 업데이트를 감지하는 기본 제공 방법이 없으므로 크론 스크립트에 논리를 추가하여 대용량 파일의 겹치는 쓰기를 피해야합니다.


10

한 디렉토리의 작은 파일 서브 세트를 다른 위치와 동기화 된 상태로 유지하려고 할 때 --existing 옵션을 사용합니다.


감사! 이것은 방금 필터 규칙 작성에서 나를 구했습니다.
벤 자도

8

--rsh 내 꺼야

ssh의 암호를 더 빠른 것으로 변경 ( --rsh="ssh -c arcfour")하고 sshs 체인을 설정 하여 (와 함께 사용하는 것이 좋습니다 ssh-agent) 직접 대화 할 수없는 호스트간에 파일을 동기화 하는 데 사용했습니다 . ( rsync -av --rsh="ssh -TA userA@hostA ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/).


7
--time-limit

이 옵션을 사용하면 Tsync 후 rsync가 중지되고 종료됩니다. 이 옵션은 밤 동안 (바쁜 시간이 아닌) 많은 양의 데이터를 재 동기화 한 다음 사람들이 하루 중 (바쁜 시간) 네트워크를 사용하기 시작할 때 중지 될 때 유용하다고 생각합니다.

--stop-at=y-m-dTh:m

이 옵션을 사용하면 rsync를 중지 할 시간을 지정할 수 있습니다.

Batch Mode

배치 모드를 사용하여 동일한 일련의 업데이트를 여러 동일한 시스템에 적용 할 수 있습니다.


유능한! 프로세스를 죽이기 전에 "at"명령을 사용 했었습니다
Lionel

소스 패치 : rsync.samba.org/ftp/rsync/rsync-patches-3.1.0.tar.gz ; 패치가 포함 된 Win32 바이너리 : itefix.no/i2/cwrsync
jftuga

2
불행하게도 Redhat / Centos 또는 Ubuntu 배포판과 함께 배포 된 rsync에서는 이러한 옵션을 사용할 수 없습니다.
IanB

@Lionel : at프로세스를 죽이는 데 어떻게 사용 하고 있습니까?
IMTheNachoMan

6

느리게 실행되는 rsync가 얼마나 멀리 있는지 궁금해하고 -v를 사용하여 파일이 전송 될 때 파일을 나열하지 않은 경우 파일이 열려있는 파일을 찾을 수 있습니다.

 ls -l /proc/$(pidof rsync)/fd/*

/ proc가있는 시스템에서

예를 들어 원격 시스템에 많은 공간이 남아있는 것처럼 보이지만 rsync가 지금 막 중단되었습니다. 이 트릭은 내가 기억하지 못하는 예기치 않게 큰 파일을 찾는 데 도움이되었으며 다른쪽에는 맞지 않습니다.

소켓 링크가 끊어 졌기 때문에 다른 쪽 끝은 분명히 포기했습니다.

/proc/22954/fd/4: broken symbolic link to `socket:[2387837]'

5

--archive 백업과 유사한 작업을위한 표준 선택 (기본값은 아니지만)으로, 소스 파일 (권한, 소유권 등)의 대부분의 메타 데이터가 복사되도록합니다.

그러나 그것을 사용하지 않으려는 경우 종종 --times파일의 수정 시간을 복사하는 을 포함하고 싶을 때가 있습니다. rsync는 수정 시간을 비교하고 변경되지 않은 경우 파일을 건너 뛰기 때문에 다음 번 rsync 실행 (반복적으로 수행한다고 가정)이 훨씬 빨라집니다. 놀랍게도 (적어도 나에게)이 옵션은 기본값이 아닙니다.


4

내가 가장 많이 사용하는 것은 --exclude-from제외 할 항목이 포함 된 파일을 지정할 수있게하는 것입니다.

또한 --chmod소스가 엉망이더라도 권한을 원하는 상태로 유지할 수 있기 때문에 매우 유용합니다.


4

--backup-dir = date +%Y.%m.%d--delete 만일을 대비하여 삭제하고 있지만 복사하는 중입니다 ...


4

광산은 --inplace입니다. 백업 서버에서 ZFS 또는 btrfs를 실행하고 기본 스냅 샷을 만들 때 궁금합니다.


3

물론 --delete, 소스에서 찾을 수없는 대상에서 물건을 제거하는 것도 있습니다.


2

cwrsync-Windows 용 Rsync http://www.itefix.no/i2/node/10650

이 버전에는 OpenSSH가 포함되어 있으므로 보안 채널을 통해 파일을 전송할 수 있습니다.


나는 cwrsync를 사용하며 훌륭합니다. 누군가 가이 멋진 기능을 Windows에 가져 와서 기뻤습니다.
Andrew Ensley

2
--partial 

중단의 경우

--bwlimit=100

대역폭을 제한하려면-큰 파일, 디렉토리를 복사하는 데 좋습니다


단위는 bwlimit무엇입니까? 초당 비트, 초당 바이트?
Timo Kähkönen 2016

@Timo, bwlimit는 초당 킬로바이트입니다.
Andrew Ferrier

1

서버에서 rsync를 데몬으로 설정 한 경우 다른 디렉토리 목록처럼 공유 모듈을 찾아 볼 수 있습니다. 그러면 사용 가능한 경로와 그렇지 않은 경로를 볼 수 있습니다.


1

GlusterF를 사용할 때 크기가 0 인 T 파일에 병목 현상이 발생하여 충돌 한 브릭 또는 복제본 간의 동기화를 위해 --min-size=1충돌 한 서버에서 빈 파일을 동기화하지 않아야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.