파이썬 Rsync
끊임없이 변화하는 기술의 세계에서 우리는 여전히 파일을 전송하거나 교환해야 하는 경우에 직면할 수 있습니다. Rsync
는 전송 세부 정보를 지정하는 데 도움이 되는 Linux 기반 도구입니다.
이 기사에서는 rsync
와 Python 스크립트에서 rsync를 사용하는 방법을 살펴봅니다.
파이썬 Rsync
위에서 언급했듯이 rsync
는 전송 세부 정보를 지정하는 데 도움이 되는 강력한 도구입니다. 즉, 전송에서 제외할 파일과 사용해야 하는 셸 종류를 결정할 수 있습니다.
Rsync는 일반적으로 전송 복잡성이 높은 전송 또는 파일을 대량으로 전송하는 데 사용됩니다. cron
의 도움으로 rsync
로 생성된 백업을 자동화하는 것도 가능합니다.
Linux의 rsync
명령
일반적인 rsync
명령 형식은 다음과 같습니다.
rsync [option] [origin] [destination]
이것은 Linux에 익숙할 때 간단한 명령이지만 어쨌든 분해하겠습니다. 모든 명령은 rsync
키워드로 시작합니다.
그 다음에는 선택의 폭이 넓은 옵션이 뒤따릅니다. 각 옵션은 실행하려는 rsync
의 특성을 지정합니다.
여기에서 원본과 대상은 파일을 전송하려는 위치(대상)와 위치(원본)입니다. 이것은 rsync
가 많은 경고 없이 파일을 다시 쓰는 원인이 되는 경우가 많기 때문에 우리가 동기화하는 것이 무엇인지 뿐만 아니라 로컬 또는 원격 시스템에서 동기화하는지 여부에 주의해야 함을 의미합니다.
다음은 rsync
에 대한 기본 및 공통 옵션 목록입니다.
-a
- 이 옵션은 파일을 재귀적으로 복사하는 데 도움이 되며 파일이 복사된 후에도 파일 소유권을 보존하는 데 도움이 됩니다.-dry-run
- 이 옵션을 사용하면 명령이 실행될 경우 발생하는 변경 사항을 관찰하기 위해 명령에 대한 시험을 실행할 수 있습니다. 이 옵션은 실제 변경 사항을 가져오지 않습니다.-delete
- 이 옵션은 대상 시스템/디렉토리에서 외부 파일을 삭제하는 데 도움이 됩니다.-e
- 이 옵션은 사용해야 하는 쉘에 대해rsync
에 알리는 데 도움이 됩니다.-exclude="*.filetype"
- 이 옵션을 사용하면 전송에서 특정 파일 유형을 모두 제외할 수 있습니다. 위의 명령에서filetype
을 실제 파일 형식으로 바꿉니다. 예:-exclude="*.docx"
.-h
- 이 옵션은rsync
에 대한 도움말을 시작하는 데 도움이 됩니다.-progress
- 이 옵션은 명령이 실행될 때 전송 진행률을 표시하는 데 도움이 됩니다.-q
- 이 옵션은 백그라운드에서 또는 조용히 모든 명령을 실행합니다.-v
- 이 옵션은 사용자가 실행 중인 모든 프로세스를 읽을 수 있도록 전송합니다.-z
- 이 옵션은 동기화된 데이터를 압축하는 데 도움이 됩니다.
Python 스크립트에서 Rsync 사용
이제 Python에서 Rsync를 사용하는 두 가지 방법이 있습니다.
-
subprocess
를 호출하고rsync
명령을 지정합니다.import subprocess subprocess.call(["rsync", "[option]", "[origin]", "[destination]"])
-
pyrsync
라이브러리 사용맞습니다. Python은 이제 Rsync용 라이브러리를 제공합니다. 이 라이브러리는 Rsync의 래퍼가 아니지만 Rsync 자체의 완전한 기능을 포함합니다.
pip
를 통해 이 라이브러리를 설치할 수 있습니다.pip install pyrsync
처음에 rsync
는 MD5 해시를 사용해야 합니다. 개발자는 현대화된 pyrsync
에서 사용하는 SHA256
을 사용하는 것과 비교하여 구식이라고 생각하는 경우가 많습니다. SHA256
은 검증 프로세스의 보안에 대한 표준 요구 사항을 충족합니다.
pyrsync
는 출시 이후 주요 릴리스가 없었지만 개발 세계에서 엄청난 잠재력을 가지고 있음을 관찰할 수 있으며 현재 이 라이브러리에는 버그나 취약점이 없는 것으로 알려져 있습니다.
라이브러리를 사용할 수 없으므로 사용 가능한 소스 코드에서 빌드하고 설치해야 합니다.
‘Pyrsync’는 처음부터 제공하는 기능을 구축하지 않아도 되므로 개발 시간과 리소스를 절약할 수 있는 잠재력이 있습니다.
읽기 쉬운 코드와 Pypi
의 간단한 설치 지침을 통해 스크립트에 통합하기가 매우 쉽습니다.
시스템에 설치 도구가 이미 설치되어 있는 경우 이 명령을 실행해야 합니다.
$ sudo python setup.py install
시스템에 설정 도구가 없더라도 setup.py
스크립트는 부재를 감지하고 Python의 내장 distutils
를 대신 사용하도록 기본값을 설정합니다.
이 모듈에 대한 명령 스크립트의 예제 흐름은 다음과 같습니다.
# In the system with the file that needs patching
>>> import pyrsync2
>>> unpatched = open("unpatched.file", "rb")
>>> hashes = pyrsync2.blockchecksums(unpatched)
# In the remote machine receiving hashes
>>> import pyrsync2
>>> patchedfile = open("patched.file", "rb")
>>> delta = pyrsync2.rsyncdelta(patchedfile, hashes)
# In the origin machine with the unpatched file after receiving delta
>>> unpatched.seek(0)
>>> save_to = open("locally-patched.file", "wb")
>>> pyrsync2.patchstream(unpatched, save_to, delta)
여기서 주목해야 할 중요한 점은 이 라이브러리가 현재 Python 3에 대한 지원만 제공한다는 것입니다.
이 기사가 Python에서 rsync
를 사용하는 방법을 이해하는 데 도움이 되기를 바랍니다.
My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.
LinkedIn