logo

예제가 포함된 Linux의 rsync 명령

재동기화 또는 원격 동기화는 두 호스트 또는 시스템 간에 파일과 디렉터리를 효율적으로 동기화하는 Unix 계열 시스템용 소프트웨어 유틸리티입니다. 하나는 파일이 동기화될 소스 또는 로컬 호스트이고, 다른 하나는 동기화가 수행될 원격 호스트입니다. 기본적으로 두 가지 방법이 있습니다. 재동기화 데이터 복사/동기화 가능:

성능 시험
  • 다음과 같은 원격 셸을 통해 다른 호스트와 복사/동기화 SSH , rsh .
  • TCP를 사용하여 rsync 데몬을 통해 복사/동기화합니다.

Rsync는 다음과 같은 기능으로 유명합니다. 델타 전송 알고리즘 , 로컬 호스트에 있는 소스 파일과 대상 또는 원격 호스트에 있는 기존 파일 간의 차이점만 복사합니다.



예:

rsync local-file user@remote-host:remote-file>

여기서 일어나는 일:

Rsync는 먼저 SSH를 사용하여 연결합니다.user>원격 호스트에 요청하고user's>비밀번호. 연결되면 원격 호스트의 rsync를 호출한 다음 두 프로그램은 원격 파일이 로컬 파일과 일치하도록 복사해야 하는 로컬 파일의 부분을 결정합니다. rsync의 다음 동작에 유의하세요.



  • 원격 호스트에 존재하지 않는 파일은 복사됩니다.
  • 업데이트된 파일은 동기화되고, rsync는 파일의 변경된 부분만 원격 호스트에 복사합니다.
  • 정확히 동일한 파일은 원격 호스트에 복사되지 않습니다.

Linux의 `rsync` 명령 구문

rsync [options] source [destination]>

옵션 Linux의 'rsync' 명령에서 사용 가능

옵션

설명

a, – 아카이브



이는 다음을 사용하는 것과 동일합니다. -rlptgoD . 보관 모드에는 파일을 반복적으로 복사하고 거의 모든 항목(심볼릭 링크, 파일 권한, 사용자 및 그룹 소유권, 타임스탬프 등)을 보존하는 등 필요한 모든 옵션이 포함되어 있습니다.

-v, -상세

기본적으로 rsync는 자동으로 작동합니다. 단일 -v 옵션을 사용하면 전송된 파일에 대한 정보와 마지막에 요약이 제공됩니다. 두 개의 -v 옵션을 추가하면 마지막에 추가 정보와 함께 델타 전송 및 건너뛴 파일에 대한 상태 업데이트가 제공됩니다. rsync 디버깅에는 일반적으로 여러 -v 옵션이 사용됩니다.

-h, –사람이 읽을 수 있는 형식

사람이 읽을 수 있는 형식으로 출력됩니다.

-z, –압축

전송 중 파일 데이터 압축

`rsync`를 목록 명령으로 사용

소스 경로만 지정하면 소스의 내용이 다음과 유사한 출력 형식으로 나열됩니다.ls -l>.

rsync foo/>

위의 명령은 디렉토리에 있는 파일과 디렉토리를 나열합니다. .

산출:

파일 및 디렉터리를 로컬로 복사/동기화

소스 경로나 대상 경로 모두 원격 호스트를 지정하지 않으면 rsync 명령은 복사 명령으로 작동합니다.

rsync -avh foo/ bar/>

위 명령은 디렉토리에 있는 모든 파일과 디렉토리를 복사/동기화합니다.foo>디렉토리로 술집 . 대상 디렉터리가 없는 경우(여기bar>), rsync는 자동으로 하나를 생성하고 그 안의 모든 데이터를 복사합니다.

산출:

SSH를 사용하여 재동기화

rsync가 원격 시스템에 접속하는 방법에는 두 가지가 있습니다.

  • 원격 쉘 프로그램을 전송 수단으로 사용(예:ssh>(보안 셸) 또는rsh>(원격 쉘)).
  • TCP를 통해 rsync 데몬에 직접 연결합니다.

여기서는 ssh를 통한 rsync에 대해 논의하겠습니다.

rsync -avhze ssh /foo user@remote-host:/tmp/>

사용할 프로토콜 유형을 지정하려면-e>옵션이 사용됩니다.

산출:

특정 파일 권한으로 재동기화

변경되는 파일의 권한을 사용하여 파일을 로컬 또는 원격 호스트에 동기화하려는 경우. 다음 명령을 사용해야 합니다.

rsync -avhe ssh --chown=USER:GROUP /foo user@remote-host:/tmp/>

위 명령은 디렉토리에 있는 모든 파일을 동기화합니다. /foo 디렉토리에 있는 파일로 /tmp 에서remote-host>GROUP 그룹의 USER가 소유한 모든 파일과 함께.

산출:

메모: 그만큼user>그리고group>원격 호스트에 이미 생성되어 있어야 합니다.

재동기화 --ignore-existing-files>

대상에 이미 존재하는 파일을 건너뛸 수도 있습니다. 이는 일반적으로 다음을 사용하여 백업을 수행할 때 사용할 수 있습니다. –링크 대상 옵션, 중단된 백업 실행을 계속하는 동안.

rsync --ignore-existing -avhe /foo user@remote-host:/tmp/>

따라서 대상에 존재하지 않는 파일은 모두 복사됩니다. 여기서는 삭제했습니다.geeksforgeeks>디렉토리의 폴더foo>이므로 다음 항목만 복사해야 합니다.geeksforgeeks>예배 규칙서.

메모: 이는 기존 디렉터리를 무시하지 않으며 아무 작업도 수행되지 않습니다. 로컬 호스트의 파일에 일부 변경 사항이 있더라도 해당 파일이 원격 호스트에 있으면 여전히 동기화되지 않습니다.

산출:

전송 중 진행 상황 표시

로컬 호스트에서 원격 호스트로 데이터를 전송하는 동안 진행 상황을 표시하려면 다음을 사용할 수 있습니다.-–progress>옵션.

rsync -avhe ssh --progress /foo user@remote-host:/tmp/>

특정 파일에 대한 전송이 완료되면 rsync는 아래와 같이 요약 줄을 출력합니다.

산출:

위 이미지의 파일을 보면/foo/file2>, 그것은 우리에게 다음을 알려줍니다

  • 파일 길이는 총 44바이트였습니다.
  • 전체 파일의 평균 전송 속도는 완료하는 데 걸린 0:00:00초 동안 초당 42.97KB였습니다.
  • 올 들어 두 번째 이적이다. 재동기화 세션.
  • 파일 목록의 총 13개 파일 중 원격 호스트가 확인해야 할 파일(최신 여부 확인)이 10개 더 있습니다.
  • 로컬 파일 시스템에 최신 버전이 있는 경우에만 원격을 업데이트하십시오.
    로컬 파일 시스템에서 최근에 업데이트된 파일을 원격 호스트를 통해 복사하려는 경우. 그것은 끝났다 -업데이트 깃발. 이제 동작은 다음과 같습니다.
    • 원격 호스트에 존재하지 않는 파일은 복사됩니다.
    • 로컬과 원격 모두에 존재하지만 로컬 호스트에 최신 타임스탬프가 있는 파일은 원격 호스트에 복사됩니다. (반대로, 이전 타임스탬프가 있는 파일은 복사되지 않습니다.)

    여기서는 몇 가지 사항을 변경했습니다. 파일1 그리고 파일2 , 하지만 파일2 최근에 이루어졌습니다. 그래서 단지 파일2 동기화됩니다.

    rsync -avhe ssh --progress --update /foo root@remote-host:/tmp/>

    산출: 재동기화 업데이트

    전송 성공 후 로컬 호스트에서 파일 자동 삭제

    이제 웹 서버와 백업 서버가 있고 일일 백업을 생성하여 백업 서버와 동기화한 다음 웹 서버에 백업의 로컬 복사본을 보관하고 싶지 않다고 가정해 보겠습니다. 따라서 전송이 성공한 후 수동으로 삭제하는 대신 다음을 사용할 수 있습니다.--remove-source-files>웹 서버에서 파일을 자동으로 삭제하는 플래그입니다.

    rsync -avhe ssh --remove-source-files /foo user@backup-server:/tmp>

    산출:

    메모: 이렇게 하면 파일만 삭제되고 디렉터리는 삭제되지 않습니다.

    로컬 호스트에서 삭제된 파일을 삭제합니다.

    로컬 호스트에서 삭제된 일부 파일이 있고 이를 원격 호스트에서도 업데이트하려면 다음을 사용해야 합니다.--delete>옵션.

    rsync -avhe ssh /foo --delete user@remote-host:/tmp/>

    산출:

    그래서 여기 파일1 , 파일2 , 파일3 로컬 호스트에서 삭제되었으며, 볼 수 있듯이 원격 호스트에서도 업데이트되었습니다.

    참고: ` rsync`는 양쪽에 있는 디렉터리를 동기화하기 위해 파일을 자동으로 삭제하지 않습니다.

    `rsync`를 사용하여 연습 실행 수행

    Dry run은 `rsync`가 아무런 변경도 하지 않고 실제 실행과 거의 동일한 출력을 표시하는 시험 실행을 수행하도록 합니다. 일반적으로 -v, –verbose 및/또는 -i, –itemize-changes 옵션과 함께 사용되어 실제로 실행하기 전에 `rsync` 명령이 수행하는 작업을 확인합니다.

    rsync -avhe ssh --dry-run --chown=USER:GROUP /foo user@remote-host:/>

    산출:

    결론

    이 기사에서는 호스트나 시스템 간에 파일과 디렉터리를 동기화하는 다재다능하고 강력한 도구인 Linux의 rsync 명령에 대해 논의했습니다. 델타 전송 알고리즘과 다양한 옵션을 통해 효율적인 데이터 동기화, 백업 기능, 파일 전송 관리 기능을 제공합니다. rsync 명령을 마스터함으로써 Linux 사용자는 파일 일관성을 보장하고 데이터 전송을 최적화하며 데이터 관리 작업 흐름을 간소화할 수 있습니다.