Tech Blog
git lfs 사용하여 대용량 데이터 업로드하기 본문
프로젝트를 수행하면서 github에 100MB의 용량이 넘어가는 csv 파일을 올려야 하는 일이 있었는데, 파일이 커서 업로드할 때 거부당했습니다. 그래서 찾아보니 50MB부터 경고, 100MB부터는 오류가 발생한다고 합니다. 100MB이상의 대용량 데이터를 올려야 한다면, Git LFS를 사용해서 업로드할 수 있습니다.
Git LFS
git-lfs는 Git Large File Storage의 약자로, Git에서 대용량 파일을 관리하기 위한 확장 도구입니다. git-lfs를 사용하면 Git으로 관리하기 어려운 대용량 파일(이미지, 비디오, 바이너리 파일 등)을 추적하고 관리할 수 있습니다. 이를 위해 대용량 파일을 Git 저장소에서 분리하여 별도의 저장소에 저장하고, Git 저장소에는 해당 파일의 포인터만 남겨둡니다. 즉, 다른 서버에 위치하여 그곳에서 받아오고 있지만 포인터가 설정되어있으므로, push, pull을 그대로 사용할 수 있는 것입니다.
Git LFS 사용해보기
git lfs를 사용하려면 git lfs 패키지를 설치하고, Git 저장소에서 대용량 파일을 추적하고자 하는 파일 확장자를 지정해야 합니다. 대용량 파일을 추가, 업로드, 다운로드, 삭제하는 등의 작업도 git lfs 명령어를 사용하여 처리합니다. 함께 실습해보도록 하겠습니다.
Git LFS 설치
window: Git Large File Storage 다운로드 바로가기
Linux(Debian): apt-get install git-lfs
Linux(Red Hat): yum install git-lfs
macOS(brew): brew install git-lfs
먼저, git lfs를 설치합니다. 윈도우는 위의 링크에서 다운받을 수 있고, 다른 운영체제는 명령어를 입력하여 다운받습니다.
레포지토리에 gif lfs 설치
git lfs install
본인이 사용하는 repository에서 위의 명령어를 입력합니다. 해당 repo에서 git lfs를 사용하겠다고 선언해주는 작업입니다.
파일 추적 해제 (Git Track)
git rm -r --cached "대용량 파일 경로"
git lfs를 사용하기 위해, 업로드하고자 하는 파일을 일반 git에서 traking하고 있는 파일에서 제외시켜야 합니다. --cached 옵션은 추적은 해제하지만, 로컬에서는 살려두기 위해 사용합니다. lfs에 올려야하기 때문입니다.
파일 추적 설정 (Git LFS Track)
git lfs track "대용량 파일 경로"
이제 lfs로 추적을 설정합니다. 파일 이름을 직접 넣어주어도 되고,
git lfs track "*.csv"
여러개의 같은 확장자 파일이라면 위와 같이 적어주어도 무방합니다.
.gitattributes
그럼 이제 .gitattributes 파일이 생깁니다. git lfs로 관리되는 파일 정보가 저장되어있는 파일이므로, 변경사항을 추가할 때 꼭 넣어주도록 합니다.
업로드
git add . # 변경된 모든 파일 추가 하거나
git add .gitattributes # 또는 .gitattributes 파일만 추가
git commit -m "(메시지)"
git push origin[remote 이름] master[브랜치 이름]
이제 평소에 업로드 하던대로 add, commit, push를 수행해주면 됩니다.
그럼 이렇게 대용량 파일이 포함된 폴더가 정상적으로 업로드 된 것을 확인할 수 있습니다.
💡 reference
'etc. > 경험' 카테고리의 다른 글
Oracle Cloud 인스턴스에서 Docker MySQL 사용 (0) | 2023.03.22 |
---|---|
github action 컴파일 (JOSS 논문) (0) | 2023.03.21 |
Python에서 AWS dynamoDB 사용하기 (0) | 2023.03.19 |