πŸ“¦ 데이터셋 μ••μΆ•κ³Ό 관리 μ‹€μ „ λ…Έν•˜μš°

λ”₯λŸ¬λ‹ λͺ¨λΈμ„ ν•™μŠ΅ν•˜κΈ° μ „, 데이터셋을 μ–΄λ–»κ²Œ μ •λ¦¬ν•˜κ³  μ••μΆ•ν•˜λ©°, μ‹œμŠ€ν…œ μžμ›μ„ 효율적으둜 μ‚¬μš©ν•  κ²ƒμΈκ°€λŠ” ν•™μŠ΅ μ„±λŠ₯λ§ŒνΌμ΄λ‚˜ μ€‘μš”ν•œ λ¬Έμ œμž…λ‹ˆλ‹€. 졜근 수천 개의 이미지 폴더λ₯Ό κ΄€λ¦¬ν•˜κ³  μ••μΆ•ν•˜λŠ” 과정을 κ²ͺ으며, λ”₯λŸ¬λ‹ 곡뢀λ₯Ό μ‹œμž‘ν•˜λŠ” λΆ„λ“€μ—κ²Œ 도움이 λ λ§Œν•œ μ‹€μ „ νŒμ„ 정리해 λ΄…λ‹ˆλ‹€.


πŸ“ 1. 폴더 λ‹¨μœ„λ‘œ κ΅¬μ„±λœ 이미지 데이터셋

λ”₯λŸ¬λ‹μ—μ„œ ν”νžˆ μ“°λŠ” 이미지 λΆ„λ₯˜μš© 데이터셋은 λ‹€μŒκ³Ό 같은 κ΅¬μ‘°μž…λ‹ˆλ‹€:

CopyEditdataset/
β”œβ”€β”€ λΉ„λΉ”λ°₯/
β”‚   β”œβ”€β”€ img1.jpg
β”‚   β”œβ”€β”€ img2.jpg
β”‚   └── ...
β”œβ”€β”€ 짜μž₯λ©΄/
β”‚   └── ...

클래슀(폴더 이름)λ³„λ‘œ 수천 μž₯의 이미지가 λ“€μ–΄κ°€λ©°, λͺ¨λΈ ν•™μŠ΅μ„ μœ„ν•΄μ„  이 폴더 ꡬ쑰가 κ·ΈλŒ€λ‘œ μœ μ§€λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.


🧭 2. μ™œ 압좕이 ν•„μš”ν• κΉŒ?

  • 데이터 이동이 λ§Žμ„ λ•Œ: μ„œλ²„ κ°„ 볡사, λ°±μ—…, 배포 μ‹œ
  • μŠ€ν† λ¦¬μ§€ μ΅œμ ν™”: μ—¬λŸ¬ μ†Œν˜• νŒŒμΌμ„ 묢으면 νŒŒμΌμ‹œμŠ€ν…œ μ˜€λ²„ν—€λ“œκ°€ 쀄어듬
  • 데이터 보쑴: 파일 λˆ„λ½μ„ λ°©μ§€ν•˜κΈ° μœ„ν•΄ ZIPμ΄λ‚˜ TAR둜 일괄 관리

⚠️ 3. ν•˜λ‚˜μ˜ ZIP은 μœ„ν—˜ν•  수 μžˆλ‹€

문제: output_folders.zip 파일 ν•˜λ‚˜μ— λͺ¨λ“  데이터λ₯Ό λ‹΄μ•˜λ”λ‹ˆ, λ„ˆλ¬΄ μ»€μ„œ 파일 μ €μž₯ 쀑 λ””μŠ€ν¬ μš©λŸ‰ 초과 λ°œμƒ.

μ΄λŠ” λ”₯λŸ¬λ‹ μž‘μ—…μ—μ„œ ν”ν•œ μ‹€μˆ˜μž…λ‹ˆλ‹€.

  • 압좕은 버퍼링과 μž„μ‹œ 파일 μ €μž₯을 λ™λ°˜ν•˜κΈ° λ•Œλ¬Έμ—,
  • μ΅œμ’… μ••μΆ• μœ„μΉ˜κ°€ /output/이라도, μ‹œμŠ€ν…œμ˜ /tmp λ˜λŠ” ν˜„μž¬ 디렉토리가 μš©λŸ‰ 뢀쑱이면 μ‹€νŒ¨ν•©λ‹ˆλ‹€.

βœ… 4. ν•΄κ²° μ „λž΅ – ν΄λ”λ³„λ‘œ λ‚˜λˆ  μ••μΆ•ν•˜κΈ°

pythonCopyEditimport zipfile, os

for folder in folder_names:  # e.g., ["λΉ„λΉ”λ°₯", "짜μž₯λ©΄", ...]
    if os.path.isdir(folder):
        zip_path = f"/output/{folder}.zip"
        with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zf:
            for root, _, files in os.walk(folder):
                for file in files:
                    zf.write(os.path.join(root, file), arcname=os.path.relpath(os.path.join(root, file), start="."))

μž₯점

  • 각 클래슀(폴더)λ³„λ‘œ ZIP이 λ‚˜λ‰˜μ–΄ κ΄€λ¦¬ν•˜κΈ° 쉬움
  • μ••μΆ• 쀑에도 ν•˜λ‚˜μ˜ 큰 μž„μ‹œ 곡간이 ν•„μš”ν•˜μ§€ μ•ŠμŒ
  • ν›„μ²˜λ¦¬(Python, AWS, GCP μ—…λ‘œλ“œ) μžλ™ν™”κ°€ 쉬움

πŸ§ͺ 5. λ”₯λŸ¬λ‹ 싀무에 μ μš©ν•  팁

상황싀전 팁
μ••μΆ• 쀑 λ””μŠ€ν¬ λΆ€μ‘±TMPDIR=/output python3 script.py둜 μž„μ‹œ 디렉토리도 /output에 κ°•μ œ
데이터셋이 λ„ˆλ¬΄ 클 λ•Œν΄λž˜μŠ€λ³„λ‘œ zip β†’ λ‚˜μ€‘μ— ν•™μŠ΅ν•  λ•Œ ν•˜λ‚˜μ”© ν’€κΈ°
파일 쀑볡 κ²½κ³ zipfileμ—μ„œ Duplicate name κ²½κ³  β†’ 쀑볡 write λ°©μ§€ μ½”λ“œ ν•„μš”
ν•™μŠ΅ 이전 정리 루틴find . -type f -mmin -10으둜 졜근 λ³€κ²½ 파일 확인

πŸ’‘ κ²°λ‘ 

λͺ¨λΈ ν•™μŠ΅ μ΄μ „μ˜ 데이터 μ •λ¦¬λŠ” λ‹¨μˆœ 반볡 μž‘μ—…μ΄ μ•„λ‹™λ‹ˆλ‹€.
파일 ꡬ쑰, μ‹œμŠ€ν…œ μžμ›, μ••μΆ• μ „λž΅μ„ 잘 μ„€κ³„ν•˜λŠ” 것이 ν›ˆλ ¨ μ„±λŠ₯κ³Ό 속도에 μ§κ²°λ©λ‹ˆλ‹€.

λ”₯λŸ¬λ‹μ„ κ³΅λΆ€ν•˜κ³  μžˆλŠ” 뢄듀이라면, 데이터셋을 λ‹€λ£¨λŠ” 슀크립트 μž‘μ„±λΆ€ν„° 직접 ν•΄λ³΄λŠ” 것을 μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€.
λͺ¨λΈ 이전에, 파일이 λ˜‘λ°”λ‘œ λ“€μ–΄κ°”λŠ”μ§€ 확인할 쀄 μ•„λŠ” μ‚¬λžŒμ΄ μ§„μ§œ μ‹€λ¬΄ν˜• μΈμž¬μž…λ‹ˆλ‹€.


κΆκΈˆν•œ 점이 μžˆλ‹€λ©΄ λŒ“κΈ€μ΄λ‚˜ λ©”μΌλ‘œ 문의 μ£Όμ„Έμš”.
μ‹€μ „μ—μ„œμ˜ κ²½ν—˜μ΄ λ”₯λŸ¬λ‹ 곡뢀λ₯Ό 더 λ‹¨λ‹¨ν•˜κ²Œ λ§Œλ“€μ–΄μ€„ κ²ƒμž…λ‹ˆλ‹€!


μ½”λ©˜νŠΈ

λ‹΅κΈ€ 남기기

이메일 μ£Όμ†ŒλŠ” κ³΅κ°œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•„μˆ˜ ν•„λ“œλŠ” *둜 ν‘œμ‹œλ©λ‹ˆλ‹€