Linux rsync 명령의 10가지 유용한 예

게시 됨: 2022-10-28
bash 프롬프트를 표시하는 Linux 노트북
Fatmawati achmad zaenuri/Shutterstock.com

Linux rsync 명령은 강력한 파일 복사 및 폴더 동기화 도구입니다. 다음은 자신의 시스템에서 잘 사용할 수 있는 10가지 일반적인 사용 사례입니다.

목차

재동기화 도구

rsync 도구는 두 컴퓨터 간에 파일과 디렉터리를 복사합니다. 대상 컴퓨터에 없는 원본 컴퓨터의 파일을 찾기 위해 디렉터리 트리를 검색하는 정교한 알고리즘을 사용합니다. 이러한 파일은 대상 컴퓨터로 전송됩니다. rync 가 그렇게 똑똑한 이유는 기존 파일의 어떤 부분이 수정되었는지 파악할 수 있고 변경된 부분 만 전송한다는 것입니다.

rsync 를 사용하여 하드 드라이브의 다른 위치, 동일한 컴퓨터의 다른 하드 드라이브, 외부적으로 연결된 USB 드라이브 또는 기타 네트워크 액세스 가능 위치에 파일을 복사할 수 있습니다.

rsync를 사용하여 Linux 시스템을 백업하는 방법
관련 rsync를 사용하여 Linux 시스템을 백업하는 방법

또한 rsync 는 기호 링크, 하드 링크 및 파일 소유권, 권한 및 액세스 시간과 같은 파일 메타데이터를 선택적으로 보존할 수 있습니다. 이 모든 기능을 지원하기 위해 rsync 에는 많은 옵션이 있으며 모든 옵션을 파악하는 데 시간이 걸립니다. 시작하는 데 도움이 되도록 이 10가지 예를 수집했습니다. 우리는 이미 rsync 로 백업을 수행하는 것에 대해 작성했으므로 여기서는 다른 용도에 집중하고 있습니다.

많은 옵션에 대해 rsync 명령의 구조는 간단합니다. 소스, 대상 및 사용하려는 옵션을 제공해야 합니다. rsync 가 이미 Linux 컴퓨터에 설치되어 있음을 알게 될 것입니다(모든 테스트 시스템에 설치되어 있음). 그러나 그렇지 않은 경우 배포의 저장소에 있을 것입니다.

1. 다른 디렉토리에 파일 복사

여기 우리를 시작하는 간단한 예가 있습니다. "project-files" 디렉토리에서 "Documents" 디렉토리로 파일을 복사할 것입니다. -a (아카이브) 옵션과 -v (자세한 정보) 옵션의 두 가지 옵션을 사용하고 있습니다. verbose 옵션은 rsync 가 수행하는 작업을 설명하도록 지시합니다. archive 옵션은 파일 소유권과 곧 살펴보게 될 기타 항목을 보존합니다.

명령 형식은 options source-location destination-location 입니다.

 rsync -av /home/dave/project-files/ /home/dave/Documents/ 

rsync를 사용하여 동일한 컴퓨터의 다른 디렉토리에 파일 복사

"Documents" 폴더에서 ls 를 사용하면 파일이 복사되었음을 나타냅니다.

문서 디렉토리의 파일 나열

rsync 가 작동하는 동안 파일은 복사되는 대로 나열됩니다. 들었다:

  • 전송된 바이트 수입니다.
  • 수신된 바이트 수입니다. 파일 전송이 일어나기 전에 rsync 는 어떤 파일을 전송해야 하는지 알아내야 합니다. 그렇게 하려면 대상의 파일에 대한 일부 정보를 rsync 에서 검색해야 합니다. 이 정보는 수신된 바이트에 포함됩니다.
  • 전송 속도입니다.
  • 복사된 파일의 총 크기입니다.
  • "속도 향상." 이것은 전송된 바이트와 수신된 바이트의 합으로 나눈 총 크기의 비율입니다. 이 숫자가 높을수록 전송이 더 효율적입니다.

소스 디렉토리의 텍스트 파일을 수정하고 rsync 명령을 반복했습니다.

 rsync -av /home/dave/project-files/ /home/dave/Documents/ 

rsync를 사용하여 동일한 컴퓨터의 다른 디렉토리에 파일 복사

이번에 업데이트해야 할 유일한 파일은 우리가 수정한 텍스트 파일입니다. 속도 향상 수치는 이제 30,850입니다. 이것은 모든 파일을 복사하는 것보다 해당 단일 파일의 수정된 부분을 복사하는 것이 얼마나 더 효율적인가입니다.

-a (아카이브) 옵션은 실제로 다른 옵션의 모음을 나타냅니다. 다음 옵션을 모두 사용하는 것과 같습니다.

  • r : 소스 디렉토리의 디렉토리 트리를 통해 재귀적으로 작업하고 대상 디렉토리에 복사하여 아직 존재하지 않는 경우 생성합니다.
  • l : 심볼릭 링크를 심볼릭 링크로 복사합니다.
  • p : 파일 권한을 유지합니다.
  • t : 파일 수정 시간을 유지합니다.
  • g : 그룹 권한을 유지합니다.
  • o : 파일 소유권을 유지합니다.
  • D : 특수 파일 및 장치 파일을 복사합니다. 특수 파일은 소켓 및 선입선출 파이프(fifos)와 같이 파일처럼 취급되는 통신 중심 항목일 수 있습니다. 장치 파일은 장치 및 의사 장치에 대한 액세스를 제공하는 특수 파일입니다.

이것은 자주 사용되는 조합으로 rsync-a (아카이브) 옵션을 모두 호출하는 축약형 방법으로 제공합니다.

2. 디렉토리를 다른 디렉토리로 복사

이전 rsync 명령을 보면 소스 디렉토리의 파일 경로에 슬래시 "/"가 표시됩니다. 이것은 중요합니다. 디렉토리의 내용 을 복사하도록 rsync 에 지시합니다. 후행 슬래시를 제공하지 않으면 rsync 가 디렉토리 그 내용을 복사합니다.

 rsync -av /home/dave/project-files /home/dave/Documents/ 

rsync를 사용하여 동일한 컴퓨터의 다른 디렉토리에 디렉토리 및 그 내용 복사

이번에는 디렉토리 이름이 나열된 대로 파일 이름에 추가됩니다. 대상 디렉토리 내부를 보면 소스 폴더가 그 안에 있는 파일과 함께 복사된 것을 볼 수 있습니다.

 ls 문서/
 ls 문서/프로젝트 파일/ 

전송된 디렉토리에 복사된 파일 나열

3. 디렉토리를 다른 드라이브에 복사

동일한 하드 드라이브의 다른 위치에 파일을 복사해도 드라이브 오류에 대한 보호 기능이 제공되지 않습니다. 해당 드라이브가 고스트를 포기하면 해당 파일의 원본 및 대상 복사본을 잃게 됩니다. 다른 하드 드라이브에 복사하는 것이 데이터를 보호하는 훨씬 더 강력한 방법입니다. 목적지 드라이브에 대한 올바른 경로를 제공하기만 하면 됩니다.

 rsync -av /home/dave/project-files /run/mount/drive2 

동일한 컴퓨터의 다른 하드 드라이브에 파일 복사

다른 하드 드라이브를 보면 디렉터리와 파일이 복사되었음을 알 수 있습니다.

 ls 실행/마운트/drive2/프로젝트 파일/ 

동일한 컴퓨터의 다른 하드 드라이브에 복사된 파일 나열

관련: 하드 드라이브에 오류가 발생했을 때 수행할 작업

4. 먼저 테스트 실행하기

rsync 가 어떻게 유용하게 파일을 삭제할 수 있는지 살펴보기 전에 rsync 가 테스트 실행을 수행하도록 하는 방법을 살펴보겠습니다.

테스트 실행에서 rsync 는 우리가 요청한 작업을 수행하는 동작을 거치지만 실제로 수행하지는 않습니다. 명령이 실행되었다면 어떤 일이 일어났는지 보고합니다. 이렇게 하면 명령이 우리가 기대하는 것과 정확히 일치하는지 확인할 수 있습니다.

강제 실행을 위해 --dry-run 옵션을 사용합니다.

 rsync -av --dry-run /home/dave/geocoder /run/mount/drive2 

rsync 명령의 테스트 실행 수행

복사되었을 파일이 나열되고 일반적인 통계를 얻은 다음 메시지 (DRY RUN) 가 표시되어 실제로 아무 일도 일어나지 않았다는 것을 알 수 있습니다.

5. 대상 디렉토리에서 파일 삭제

--delete 옵션은 rsync 에 소스 디렉토리에 없는 대상 디렉토리의 파일과 디렉토리를 삭제하도록 지시합니다. 이는 대상 디렉토리가 소스 디렉토리의 정확한 사본이 됨을 의미합니다. 신중하게 --dry-run 옵션을 먼저 사용하겠습니다.

 rsync -av --delete --dry-run /home/dave/geocoder /run/mount/drive2 

파일을 삭제할 수 있는 rsync 명령의 테스트 실행 수행

2개의 파일이 삭제됨을 알려드립니다. 그들이 삭제되는 것을 신경쓰지 않는다고 확신한다면 --dry-run 옵션을 제거하고 명령을 실제로 수행할 수 있습니다.

 rsync -av --delete /home/dave/geocoder /run/mount/drive2 

원본 디렉터리에 없는 대상 디렉터리에서 파일 복사 및 제거

이번에는 디렉토리의 내용이 동기화되고 두 개의 추가 파일이 삭제됩니다.

6. 소스 파일 삭제

성공적인 전송 후 소스 파일을 삭제하도록 선택할 수 있으므로 rsync 가 복사본보다 이동처럼 작동합니다. 전송에 성공하지 못한 경우 원본 파일은 삭제되지 않습니다. 사용해야 하는 옵션은 --remove-source-files 입니다.

 rsync -av --remove-source-files /home/dave/geocoder /run/mount/drive2 

성공적인 전송 후 rsync가 소스 파일을 삭제하도록 강제

파일이 전송되지 않은 경우에도 파일을 삭제할 수 있습니다. rsync 가 검사하고 모든 파일이 이미 대상 디렉토리에 있고 rsync 가 수행할 작업이 없는 경우 rsync 는 성공적인 전송으로 간주하기 때문입니다.

또한 rsync 는 소스 디렉토리의 파일 만 삭제합니다. 소스 디렉토리나 하위 디렉토리는 삭제하지 않고 그 안에 있는 파일만 삭제합니다. 소스 디렉토리에서 ls 와 함께 -R (재귀) 옵션을 사용하여 이를 확인할 수 있습니다.

 ls -R 지오코더 

rsync가 소스 파일을 삭제한 후의 빈 디렉토리 트리

7. 원격 컴퓨터에 파일 복사

폴더를 원격 컴퓨터와 동기화하려면 두 컴퓨터에 rsync 를 설치해야 합니다. 원격 컴퓨터에 rsync 를 사용하기 전에 두 컴퓨터 간에 SSH 통신을 설정하십시오.

Linux 셸에서 SSH 키를 만들고 설치하는 방법
관련 Linux 셸에서 SSH 키를 만들고 설치하는 방법

rsync 가 작동하려면 원격 컴퓨터에서 일반 사용자로 원격으로 로그인할 수 있어야 합니다. 아이디와 비밀번호를 사용하여 로그인을 하든, SSH 키를 설정하여 비밀번호가 없는 안전한 액세스를 설정했는지는 중요하지 않지만 사용자로 로그인할 수 없으면 rsync 가 작동하지 않습니다. 어느 하나.

암호로 로그인하면 rsync 가 암호를 묻는 메시지를 표시합니다. SSH 키를 사용하여 로그인하면 프로세스가 원활합니다.

추가로 해야 할 일은 사용자 계정 이름과 원격 컴퓨터의 IP 주소를 대상 파일 경로의 시작 부분에 추가하는 것입니다. 컴퓨터 이름 또는 IP 주소에서 사용자 이름을 구분하려면 at 기호 " @ "를 사용하고 디렉터리 경로에서 컴퓨터 이름 또는 IP 주소를 구분하려면 콜론 " : "을 사용합니다.

테스트 네트워크에서 이 두 명령은 동일합니다.

 rsync -av /home/dave/geocoder [email protected]:/home/dave/Downloads
 rsync -av /home/dave/geocoder [email protected]:/home/dave/다운로드 

rsync를 사용하여 SSH를 통해 원격 컴퓨터에 파일 복사

파일을 로컬로 복사할 때와 동일한 정보가 보고됩니다.

8. 파일 또는 디렉토리 포함 또는 제외

대상 컴퓨터에 복사하고 싶지 않은 파일과 디렉터리가 원본 디렉터리에 있을 수 있습니다. --exclude 옵션을 사용하여 제외할 수 있습니다. 비슷한 방식으로 --include 옵션을 사용하여 특정 파일과 디렉토리를 포함하도록 선택할 수 있습니다.

특이한 점은 --include 옵션을 단독으로 사용하면 특별히 포함된 파일을 포함하여 모든 파일이 정상적으로 복사된다는 것입니다. 포함된 파일만 복사하려면 다른 모든 파일을 --exclude 해야 합니다.

명령에 --include--exclude 옵션을 원하는 만큼 사용할 수 있지만 --exclude 옵션 앞에 --include 옵션을 넣어야 합니다. 또한 소스 파일 경로에 슬래시가 있는지 확인하십시오.

이 명령은 C 소스 코드 파일과 CSV 데이터 파일만 대상 컴퓨터에 복사합니다.

 rsync -av --include="*.c" --include="*.csv" --exclude="*" /home/dave/geocoder/ /run/mount/drive2/geocoder

rsync를 사용하여 선택한 파일을 동일한 컴퓨터의 다른 하드 드라이브에 복사

복사된 유일한 파일은 특별히 포함된 파일입니다.

9. 전송 중인 파일 압축

-z (압축) 옵션은 rsync 가 전송된 파일을 압축하도록 합니다. 그러나 대상 컴퓨터에 압축된 파일로 저장되지 않고 전송 자체 중에만 압축됩니다. 이렇게 하면 긴 전송 속도를 높일 수 있습니다.

 rsync -avz /home/dave/geocoder /run/mount/drive2 

-z rsync 옵션으로 전송되는 파일 압축

10. 진행 상황 모니터링

긴 전송에 대해 말하면 전송 진행 상황을 볼 수 있도록 몇 가지 통계를 추가할 수 있습니다.

-P (partial, progress) 옵션은 실제로 --partial--progress 두 가지 옵션을 추가합니다. --partial 옵션은 전송이 실패할 경우 부분적으로 전송된 파일을 유지하도록 rsync 에 지시합니다. 이렇게 하면 전송이 다시 시작될 때 시간이 절약됩니다.

--progress 옵션은 각 파일에 대해 전송된 데이터를 바이트 단위로 인쇄하고 전송 속도, 소요 시간, 전송 중인 파일 수 및 나머지 파일 수를 백분율로 인쇄합니다.

 rsync -aP /home/dave/geocoder /run/mount/drive2 

-P 옵션을 사용하여 각 파일 전송에 대한 통계 제공

출력이 꽤 빨리 스크롤되어 읽기가 어렵습니다. 명령에서 -v (verbose) 옵션을 제거하여 상황을 약간 개선할 수 있습니다. 그럼에도 불구하고 여전히 윙윙 거리는 소리로 읽기가 어렵습니다.

전송된 각 파일에 대한 전송 통계

전체 전송의 진행 상황을 모니터링하는 것이 더 유용한 경우가 많습니다. –info 옵션을 사용하여 이를 수행하고 매개변수로 "progress2"를 전달할 수 있습니다.

 sync -a --info=progress2 /home/dave/geocoder /run/mount/drive2 

전체 rsync 전송에 대한 통계

이것은 실제로 유용한 진행 보고서를 제공합니다.

스테로이드의 cp처럼

rsync 명령은 빠르고 유연하며 익숙해지는 데 시간을 할애할 가치가 있습니다. -av 옵션, 소스 디렉토리 및 대상 디렉토리가 있는 rsync 명령의 기본 형식은 전혀 기억하기 어렵지 않습니다.

많은 사용 사례의 경우 그게 전부입니다. 그것에 익숙해지면 나머지는 쉽게 올 것입니다.

관련: Rsync와 데이터 동기화에 대한 비초보자 가이드