누군가 나 에게이 rsync 명령을 설명 할 수 있습니까?


11

아무도 이것이 무엇을 말해 줄 수 있습니까?

rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log

삭제 bkp01하고 offbk2로그를 보냅니 offbkp01.log까?


그는 맨 페이지를 읽을 수 없습니다. 그가 여기서 답을 읽고 있다고 생각하는 이유는 무엇입니까? XD
반짝임

2
당신이있을 때 누가 맨 페이지를 필요로 explainshell.com/...을 ?!
Tom

답변:


33

이것을 부분으로 나누기 위해 두 가지 주요 섹션과 요약 및 메모가 있습니다.

  • rsync명령
    rsync -uva --delete /srv/bkp01 /srv/offbk2/
  • rsync 명령을 실행하는 쉘이 수행 한 출력 리디렉션 :
    rsync-command > ~/offbkp01.log

rsync 명령:

기본 명령 :

  • rsync -나는 이것이 설명이 필요 없다고 가정합니다 (그러나 요청하면 제공 할 것입니다).

명령 옵션 :

  • -uva -단일 문자 옵션 세트로, 짧고 긴 형식이 표시됩니다.

    • -u --update-rsync는 모든 수정 사항이 원본의 파일과 나이가 같거나 크기가 다른 대상 파일에만 적용해야한다고 알려줍니다. 즉, rsync는 대상을 업데이트 할 소스의 변경 사항 만 전달해야 하지만 대상 파일이 이전 버전이되도록 변경해서는 안됩니다.

      몇 가지 예외가 있습니다. 유형의 차이 (예 : 하나는 파일이고 다른 하나는 디렉토리)는 날짜와 상관없이 업데이트를 유발합니다. 심볼릭 링크 및 기타 특수 파일은이 옵션을 무시합니다. 그리고 중요한 것은 삭제되는 파일에 영향을 미치지 않습니다.

    • -v --verbose-rsync가 실행하는 동안 인쇄하는 정보의 양을 증가시킵니다. 이것이 없으면 rsync는 (거의?) 아무것도 인쇄하지 않습니다. 이 옵션을 그대로 사용하면 rsync는 전송중인 파일을 알려주고 마지막에 요약을 넣습니다. v매뉴얼 페이지에서 v디버깅 할 때만 두 개 이상을 사용해야 한다고하더라도 더 많은 정보가 인쇄되는 정보를 증가시킵니다 .
    • -a --archive-이것은 다른 여러 옵션 ( -rlptgD)과 함께 패키지로 제공됩니다. 긴 이름에서 알 수 있듯이 파일과 디렉토리를 보관하기위한 많은 공통 옵션을 설정하는 빠른 방법입니다. 그것은 :
      • -r --recursive-rsync에게 디렉토리를 재귀 적으로 복사하도록 지시합니다. 이 -d --dirs옵션 이나 더 구체적인 옵션 이 없으면 rsync는 발생한 디렉토리를 건너 뛰기 만합니다 (그리고 출력에서 ​​알려줍니다).
      • -l --links-소스가 심볼릭 링크 인 경우 대상에서 심볼릭 링크를 만듭니다. 다른 옵션에 따라 심볼릭 링크를 건너 뛰거나 완전히 별도의 사본 (즉, 심볼릭 링크 대신 내용 (또는 파일의 다른 사본)이있는 실제 디렉토리)으로 만들 수 있습니다.
      • -p --perms -대상 파일의 권한을 소스 파일과 동일하게 설정합니다.
      • -t --times-대상 파일의 수정 시간을 소스 파일과 동일하게 설정합니다. 이 시간을 동기화 상태로 유지하면 rsync 알고리즘의 효율성이 높아 지므로 일반적으로 명시 적 또는 암시 적으로 항상 사용하기를 원합니다.
      • -g --group-대상의 그룹 속성을 소스와 동일하게 설정합니다. 기본적으로 이름으로 연결되지만 경우에 따라 그룹 ID 번호로 대체됩니다. 수신 rsync가 수퍼 유저로 실행되지 않는 경우 (또는로 가짜 --fake-super) 수신 측 에서 rsync를 호출 한 사용자 가 구성원 인 그룹 만 설정할 수 있습니다. 그렇지 않으면 그룹은 앞서 언급 한 동일한 사용자의 기본 그룹으로 설정됩니다.
      • -D-옵션 --devices과 동일 --specials합니다. 그들은 의미한다 :
        • --devices-캐릭터 및 블록 장치 파일이 전송됩니다. 수신 rsync가 수퍼 유저로 실행되지 않거나으로 가짜 인 경우에는 효과 가 없습니다 --fake-super.
        • --specials -소켓과 같은 특수 파일이 전송됩니다 (그렇지 않은 경우).
  • --delete-rsync에게 대상에 있지만 소스에는없는 파일을 삭제하도록 지시합니다. 이것은 위에서 설정된 업데이트 옵션의 영향을받지 않습니다 (실제로 대부분의 파일 시스템은 어떤 조치가 최신 조치인지 확인하기 위해 필요한 데이터를 보유하지 않기 때문에 어떻게 될 수 있습니까?). 이 옵션은 와일드 카드 / 글로브 확장 소스에서 작동 하므로 dir / *는 dir /와 다릅니다. 몇 가지 중요한 참고 사항 :
    • 이것은 분명히 위험합니다. --dry-run의도하지 않은 변경 사항이 없는지 확인하는 전송을 수행하는 옵션을 먼저 사용하여 시도해야합니다 .
    • I / O (입력 / 출력) 오류가있는 경우, 즉 변경 내용 전송, 읽기 또는 쓰기에 문제가있는 경우 해당 시점부터 삭제가 무시됩니다. --ignore-errors옵션을 사용하여 재정의 할 수는 있지만 그렇게하고 싶지는 않을 것입니다.
    • 삭제 알고리즘에는 매뉴얼 페이지에서 더 많은 내용을 읽을 수있는 몇 가지 변형이 있습니다. 수신 rsync가 버전 3.0.0 이상인 경우 (이 글을 쓰는 시점 기준) --delete-during알고리즘이 사용됩니다. 수신기가 오래된 경우 --delete-before사용됩니다. 오류가 발생할 경우 파일이 특정 종류의 일관성을 유지하는 것이 중요한 경우 (예 : 다른 모든 변경이 이루어질 때까지 아무것도 삭제하지 않는 경우) 기본 옵션보다 더 구체적인 옵션을 사용해야합니다.

명령 위치 :

  • /srv/bkp01-소스 파일 또는 디렉토리. 디렉토리 끝에 슬래시가 있거나없는 경우 및 다른 디렉토리가 존재하는 경우의 의미에 대한 자세한 규칙이 있습니다. 자세한 내용은 맨 페이지 의 USAGE 섹션을 볼 수 있지만 슬래시가 없으면 이 디렉토리의 내용 이 대상으로 복사되는 것이 아니라이 디렉토리 가 대상 으로 복사됩니다. 이것이 디렉토리가 아닌 파일 인 경우에도 동일합니다.
  • /srv/offbk2/-대상 디렉토리. 일반적으로이 옵션은 옵션을 사용하여 명령의 다른 곳에 지정하지 않는 한 항상 rsync 명령 섹션에 나열된 마지막 항목입니다.

셸의 출력 리디렉션 :

셸 명령 :

  • >-이는 왼쪽에있는 파일에서 stdout (표준 출력)을 오른쪽에있는 파일로 리디렉션하여 내용이되고 파일이없는 경우 파일을 작성합니다 (가능한 경우). 몇 가지 참고 사항 :
    • 위 명령의 끝에 추가 하여 stderr (표준 오류 출력)을 동일한 파일리디렉션 할 수도 있습니다 2>&1. 순서는 중요하므로 어디에 두어야하는지 일반화해야합니다. 매직 넘버 1는 stdout, 2stderr, &(본질적으로) "주소", 전체 명령 스 니펫은 "stderr의 출력을 stdout 스트림으로 리디렉션"을 의미합니다.
    • 로그 파일을 바꾸지 않고 추가하려는 경우 대신 사용할 수 있습니다 >>. stderr을 동일한 위치로 리디렉션하는 방법은 동일하게 유지됩니다.
    • 를 사용하여 stdout 및 stderr을 다른 위치로 보낼 수 있습니다 1> stdout_file 2> stderr_file. 교체 대신 추가하여 해당 명령 >>대신 대신 사용할 수도 있습니다 >.

쉘 변수 / 특수 기호 :

  • ~ -이것은 현재 사용자의 홈 디렉토리의 약자이며 다음 비트의 일부를 구성합니다.

쉘 레벨 위치 :

  • ~/offbkp01.log-현재 사용자의 홈 디렉토리에있는 파일 offbkp01.log. 로 리디렉션으로 인해 rsync 명령의 출력이 배치되는 위치입니다 >.

요약:

요약하면이 명령은 다음과 같습니다.

  • 모든 일반 파일, 디렉토리, 심볼릭 링크, 특수 파일 및 장치 파일 복사
  • 뿐만 아니라 대부분의 중요한 파일 속성 ,
  • 에서 /srv/bkp01 ,
  • /srv/offbk2/bkp01 ,
  • 그것은 것 아무것도 삭제 /srv/offbk2/하는이 아닌/srv/bkp01 다음과 같은 조건 :

    • 만약 일반 파일, 디렉토리 또는 심볼릭 링크 (?)수정 시간/srv/offbk2/ 그 최신 버전 인 에 수정 시간 이상 /srv/bkp01, 이 업데이트되지 않습니다 , 경우 두 항목이 여전히 동일한 유형 ((일반 파일, 디렉토리 또는 심볼릭 링크? )).
  • 또한 rsync는 셸이 파일에 작업 (특히 전송중인 파일 및 최종 요약 ) 에 대한 정보 를 인쇄 합니다 . 해당 로그 파일은 아직 존재하지 않으면 새로 작성되며 이미 존재하는 경우 겹쳐 씁니다. ~/offbkp01.log


NB : --fake-superrsync가 수퍼 유저 활동을 시뮬레이션하도록하는 옵션입니다. 파일의 확장 된 속성을 사용하여 더 큰 권한 없이는 설정할 수없는 속성을 저장하여이를 수행합니다. 각 속성의 실제 버전은 옵션과 사용 가능한 권한이 주어지면 의미가 있습니다. 이렇게하면 수퍼 유저 권한이없는 경우에도 일부 백업을 수행하는 것이 편리하지만 실제 보안 속성이 설정되지 않을 수 있기 때문에 일반적으로 rsync를 사용하는 것보다 보안 위험이 더 클 수 있습니다. 그들에 관한 정보가 백업 되었음에도 불구하고


출처 : rsync로 작업하고 맨 페이지를 읽는 데 많은 시간이 걸립니다 .


8
그것은 인상적인 첫 번째 게시물입니다. 당신이 주위에 붙어 있기를 바랍니다!
terdon

나는 두 번째 @terdon. 젠장! 그는 불타고있다. 좋은 일을 유지하십시오. 이것은 실제로 인상적인 답변입니다.
AzkerM

대답은 "셜록 홈즈"인 것 같습니다. 나는 당신의 설명 스타일을 좋아합니다 ..
Rahul Patil

9

매뉴얼에서 :

--지우다

이것은 rsync에게 수신 측 (송신 측에없는 파일)에서 외부 파일을 삭제하되 동기화되는 디렉토리에 대해서만 삭제하도록 지시합니다. 와일드 카드가 쉘에 의해 확장되고 rsync가 요청을 가져 오기 때문에 디렉토리의 내용에 와일드 카드를 사용하지 않고 전체 디렉토리 (예 : "dir"또는 "dir /")를 보내려면 rsync에 요청해야합니다. 파일의 상위 디렉토리가 아닌 개별 파일을 전송합니다. 전송에서 제외 된 파일도 --delete-excluded 옵션을 사용하거나 전송 측에서만 일치하는 것으로 규칙을 표시하지 않는 한 삭제되지 않습니다 (필터 규칙 섹션의 포함 / 제외 수정 자 참조).

따라서 와일드 카드를 사용하지 않은 경우 원래 디렉토리의 일부가 아닌 대상에서 파일을 삭제합니다.

소스 디렉토리 :

1.txt
2.txt
3.txt

대상 디렉토리 :

4.txt

rsync 다음에 4.txt가 사라지고 대상에 1.txt, 2.txt 및 3.txt가 있습니다.


다른 것들에 관해서 :

uva
  • 파일 업데이트
  • verbose : 결과를 터미널로 반향합니다 (예 : 마지막 질문으로 예).
  • 보관 : 보관 모드; -rlptgoD와 같음 (아니오 -H, -A, -X)

출처 :man rsync
Sammitch

3

아니요, bkp01디렉토리 에서 외부 파일 만 삭제합니다 .

또한:

  • -u, --update-수신자에서 최신 파일을 건너 뜁니다.
  • -v, --verbose-자세한 정보 표시
  • -a, --archive-보관 모드; -rlptgoD와 같음 (아니오 -H, -A, -X)

rsync -uva --delete /srv/bkp01 /srv/offbk2/명령 의 출력은 리디렉션 연산자 ( )~/offbkp01.log사용하여 파일 로 전송되어 터미널에 인쇄됩니다. 파일이 존재하지 않으면 파일이 생성됩니다. 파일이 존재하면 이전 내용이 지워집니다.>

자세한 내용 man rsync은 참조하십시오 .


3
에서 아무 것도 삭제하지 않습니다 bkp01. 대상에서 외부 파일, 즉 소스에 존재하지 않는 파일을 삭제합니다.
매트 Nordhoff

bkp01에서 파일이 삭제되지 않습니다.
Xavier J

1
rsync 

원격 파일 복사-로컬 디스크, 디렉토리 또는 네트워크에서 파일 트리를 동기화합니다.

-u update 

-v verbose

-a archive


--delete --> delete

여기에서 offbk2 안의 파일을 삭제합니다 .

그런 다음 결과 출력 (성공 여부)이 해당 로그 파일로 리디렉션됩니다.


bkp01에서 파일이 삭제되지 않습니다.
Xavier J
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.