Linux rsync 명령의 10가지 유용한 예
게시 됨: 2022-10-28 Linux rsync
명령은 강력한 파일 복사 및 폴더 동기화 도구입니다. 다음은 자신의 시스템에서 잘 사용할 수 있는 10가지 일반적인 사용 사례입니다.
재동기화 도구
rsync
도구는 두 컴퓨터 간에 파일과 디렉터리를 복사합니다. 대상 컴퓨터에 없는 원본 컴퓨터의 파일을 찾기 위해 디렉터리 트리를 검색하는 정교한 알고리즘을 사용합니다. 이러한 파일은 대상 컴퓨터로 전송됩니다. rync
가 그렇게 똑똑한 이유는 기존 파일의 어떤 부분이 수정되었는지 파악할 수 있고 변경된 부분 만 전송한다는 것입니다.
rsync
를 사용하여 하드 드라이브의 다른 위치, 동일한 컴퓨터의 다른 하드 드라이브, 외부적으로 연결된 USB 드라이브 또는 기타 네트워크 액세스 가능 위치에 파일을 복사할 수 있습니다.
또한 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/
"Documents" 폴더에서 ls
를 사용하면 파일이 복사되었음을 나타냅니다.
rsync
가 작동하는 동안 파일은 복사되는 대로 나열됩니다. 들었다:
- 전송된 바이트 수입니다.
- 수신된 바이트 수입니다. 파일 전송이 일어나기 전에
rsync
는 어떤 파일을 전송해야 하는지 알아내야 합니다. 그렇게 하려면 대상의 파일에 대한 일부 정보를rsync
에서 검색해야 합니다. 이 정보는 수신된 바이트에 포함됩니다. - 전송 속도입니다.
- 복사된 파일의 총 크기입니다.
- "속도 향상." 이것은 전송된 바이트와 수신된 바이트의 합으로 나눈 총 크기의 비율입니다. 이 숫자가 높을수록 전송이 더 효율적입니다.
소스 디렉토리의 텍스트 파일을 수정하고 rsync
명령을 반복했습니다.
rsync -av /home/dave/project-files/ /home/dave/Documents/
이번에 업데이트해야 할 유일한 파일은 우리가 수정한 텍스트 파일입니다. 속도 향상 수치는 이제 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/
이번에는 디렉토리 이름이 나열된 대로 파일 이름에 추가됩니다. 대상 디렉토리 내부를 보면 소스 폴더가 그 안에 있는 파일과 함께 복사된 것을 볼 수 있습니다.
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
복사되었을 파일이 나열되고 일반적인 통계를 얻은 다음 메시지 (DRY RUN)
가 표시되어 실제로 아무 일도 일어나지 않았다는 것을 알 수 있습니다.
5. 대상 디렉토리에서 파일 삭제
--delete
옵션은 rsync
에 소스 디렉토리에 없는 대상 디렉토리의 파일과 디렉토리를 삭제하도록 지시합니다. 이는 대상 디렉토리가 소스 디렉토리의 정확한 사본이 됨을 의미합니다. 신중하게 --dry-run
옵션을 먼저 사용하겠습니다.
rsync -av --delete --dry-run /home/dave/geocoder /run/mount/drive2
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
는 소스 디렉토리의 파일 만 삭제합니다. 소스 디렉토리나 하위 디렉토리는 삭제하지 않고 그 안에 있는 파일만 삭제합니다. 소스 디렉토리에서 ls
와 함께 -R
(재귀) 옵션을 사용하여 이를 확인할 수 있습니다.
ls -R 지오코더
7. 원격 컴퓨터에 파일 복사
폴더를 원격 컴퓨터와 동기화하려면 두 컴퓨터에 rsync
를 설치해야 합니다. 원격 컴퓨터에 rsync
를 사용하기 전에 두 컴퓨터 간에 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/다운로드
파일을 로컬로 복사할 때와 동일한 정보가 보고됩니다.
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
복사된 유일한 파일은 특별히 포함된 파일입니다.
9. 전송 중인 파일 압축
-z
(압축) 옵션은 rsync
가 전송된 파일을 압축하도록 합니다. 그러나 대상 컴퓨터에 압축된 파일로 저장되지 않고 전송 자체 중에만 압축됩니다. 이렇게 하면 긴 전송 속도를 높일 수 있습니다.
rsync -avz /home/dave/geocoder /run/mount/drive2
10. 진행 상황 모니터링
긴 전송에 대해 말하면 전송 진행 상황을 볼 수 있도록 몇 가지 통계를 추가할 수 있습니다.
-P
(partial, progress) 옵션은 실제로 --partial
및 --progress
두 가지 옵션을 추가합니다. --partial
옵션은 전송이 실패할 경우 부분적으로 전송된 파일을 유지하도록 rsync
에 지시합니다. 이렇게 하면 전송이 다시 시작될 때 시간이 절약됩니다.
--progress
옵션은 각 파일에 대해 전송된 데이터를 바이트 단위로 인쇄하고 전송 속도, 소요 시간, 전송 중인 파일 수 및 나머지 파일 수를 백분율로 인쇄합니다.
rsync -aP /home/dave/geocoder /run/mount/drive2
출력이 꽤 빨리 스크롤되어 읽기가 어렵습니다. 명령에서 -v
(verbose) 옵션을 제거하여 상황을 약간 개선할 수 있습니다. 그럼에도 불구하고 여전히 윙윙 거리는 소리로 읽기가 어렵습니다.
전체 전송의 진행 상황을 모니터링하는 것이 더 유용한 경우가 많습니다. –info 옵션을 사용하여 이를 수행하고 매개변수로 "progress2"를 전달할 수 있습니다.
sync -a --info=progress2 /home/dave/geocoder /run/mount/drive2
이것은 실제로 유용한 진행 보고서를 제공합니다.
스테로이드의 cp처럼
rsync
명령은 빠르고 유연하며 익숙해지는 데 시간을 할애할 가치가 있습니다. -av
옵션, 소스 디렉토리 및 대상 디렉토리가 있는 rsync
명령의 기본 형식은 전혀 기억하기 어렵지 않습니다.
많은 사용 사례의 경우 그게 전부입니다. 그것에 익숙해지면 나머지는 쉽게 올 것입니다.
관련: Rsync와 데이터 동기화에 대한 비초보자 가이드