Python 버전 2 클라이언트 라이브러리를 사용하는 Azure 파일 공유 코드 샘플

이 문서에서는 Python용 Azure 파일 공유 클라이언트 라이브러리의 버전 2를 사용하는 코드 샘플을 보여 줍니다.

2023년 3월 31일부터 현재 Azure SDK 지침을 준수하지 않는 Azure SDK 라이브러리에 대한 지원이 중지되었습니다. 새로운 Azure SDK 라이브러리는 일관된 환경을 구동하고 보안 태세를 강화하기 위해 정기적으로 업데이트됩니다. 새 기능과 중요한 보안 업데이트를 활용하기 위해 새 Azure SDK 라이브러리로 전환하는 것이 좋습니다.

이전 라이브러리는 2023년 3월 31일 이후에도 계속 사용할 수 있지만 더 이상 Microsoft의 공식 지원 및 업데이트를 받지 않습니다. 자세한 내용은 사용 중지 공지 지원을 참조하세요.

필수 조건

pip install을 사용하여 다음 패키지를 설치합니다.

pip install azure-storage-file

다음 import 문을 추가합니다.

from azure.storage.file import FileService

Azure 파일 공유 만들기

관련 문서: Python을 사용하여 Azure Files 개발

다음 코드 예에서는 FileService 개체를 사용하여 공유가 없는 경우 새로 만듭니다.

file_service.create_share('myshare')

디렉터리 만들기

관련 문서: Python을 사용하여 Azure Files 개발

루트 디렉터리에 이들 모두를 포함하는 대신 하위 디렉터리 내에서 파일을 배치하여 스토리지를 구성할 수 있습니다.

아래 코드는 루트 디렉터리 아래에 sampledir이라는 이름의 하위 디렉터리를 만듭니다.

file_service.create_directory('myshare', 'sampledir')

파일 업로드

관련 문서: Python을 사용하여 Azure Files 개발

이 섹션에서는 로컬 스토리지에서 Azure Files로 파일을 업로드하는 방법을 알아봅니다.

Azure 파일 공유에는 파일이 상주할 수 있는 최소한의 루트 디렉터리가 포함되어 있습니다. 파일을 만들고 데이터를 업로드하려면 다음 방법 중 하나를 사용합니다.

데이터의 크기가 64MB를 초과하는 경우 필요한 청크를 수행하는 메서드입니다.

create_file_from_path는 지정된 경로에서 파일의 콘텐츠를 업로드하고, create_file_from_stream은 이미 열려 있는 파일/스트림에서 콘텐츠를 업로드합니다. create_file_from_bytes는 바이트 배열을 업로드하고, create_file_from_text는 지정된 인코딩(기본값: UTF-8)을 사용하여 지정된 텍스트 값을 업로드합니다.

다음 예제에서는 sunset.png 파일의 내용을 myfile 파일에 업로드합니다.

from azure.storage.file import ContentSettings
file_service.create_file_from_path(
    'myshare',
    None,  # We want to create this file in the root directory, so we specify None for the directory_name
    'myfile',
    'sunset.png',
    content_settings=ContentSettings(content_type='image/png'))

Azure 파일 공유의 파일 및 디렉터리 열거

관련 문서: Python을 사용하여 Azure Files 개발

공유의 파일 및 디렉터리를 나열하려면 list_directories_and_files 메서드를 사용합니다. 이 메서드는 생성기를 반환합니다. 다음 코드는 공유에 있는 각 파일 및 디렉터리의 이름 을 콘솔에 출력합니다.

generator = file_service.list_directories_and_files('myshare')
for file_or_dir in generator:
    print(file_or_dir.name)

파일 다운로드

관련 문서: Python을 사용하여 Azure Files 개발

파일에서 데이터를 다운로드하려면 다음 방법 중 하나를 사용합니다.

데이터의 크기가 64MB를 초과하는 경우 필요한 청크를 수행하는 메서드입니다.

다음 예제에서는 get_file_to_path를 사용하여 myfile 파일의 콘텐츠를 다운로드한 다음 out-sunset.png 파일에 저장하는 방법을 보여 줍니다.

file_service.get_file_to_path('myshare', None, 'myfile', 'out-sunset.png')

공유 스냅샷 만들기

관련 문서: Python을 사용하여 Azure Files 개발

전체 파일 공유의 특정 시점 복사본을 만들 수 있습니다.

snapshot = file_service.snapshot_share(share_name)
snapshot_id = snapshot.snapshot

메타데이터를 사용하여 공유 스냅샷 만들기

metadata = {"foo": "bar"}
snapshot = file_service.snapshot_share(share_name, metadata=metadata)

공유 및 스냅샷 나열

관련 문서: Python을 사용하여 Azure Files 개발

특정 공유에 대한 모든 스냅샷을 나열할 수 있습니다.

shares = list(file_service.list_shares(include_snapshots=True))

공유 스냅샷 찾아보기

관련 문서: Python을 사용하여 Azure Files 개발

각 공유 스냅샷을 찾아보고 특정 시점에서 파일 및 디렉터리를 검색할 수 있습니다.

directories_and_files = list(
    file_service.list_directories_and_files(share_name, snapshot=snapshot_id))

공유 스냅샷에서 파일 가져오기

관련 문서: Python을 사용하여 Azure Files 개발

공유 스냅샷에서 파일을 다운로드할 수 있습니다. 이를 통해 파일의 이전 버전을 복원할 수 있습니다.

with open(FILE_PATH, 'wb') as stream:
    file = file_service.get_file_to_stream(
        share_name, directory_name, file_name, stream, snapshot=snapshot_id)

단일 공유 스냅샷 삭제

관련 문서: Python을 사용하여 Azure Files 개발

단일 공유 스냅샷을 삭제할 수 있습니다.

file_service.delete_share(share_name, snapshot=snapshot_id)

파일 삭제

관련 문서: Python을 사용하여 Azure Files 개발

파일을 삭제하려면 delete_file을 호출합니다.

다음 코드 예제에서는 파일을 삭제하는 방법을 보여 줍니다.

file_service.delete_file('myshare', None, 'myfile')

공유 스냅샷이 존재하는 경우 공유 삭제

관련 문서: Python을 사용하여 Azure Files 개발

모든 스냅샷을 먼저 삭제해야만 스냅샷을 포함한 공유를 삭제할 수 있습니다.

다음 코드 예제에서는 공유를 삭제하는 방법을 보여 줍니다.

file_service.delete_share(share_name, delete_snapshots=DeleteSnapshot.Include)