app engine 데이터 백업 및 복원 1. remote_api 등록 - url: /remote_api script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py login: admin 2. 전체 백업 및 복원 bulkloader.py dump app_id= url=http://.appspot.com/remote_api filename= 앱엔진은 모든 kind 를 받을 수 있지만 개발 서버는 한번에 하나의 kind 만 다운받을 수 있다. [ERROR ] Unable to download kind stats for all-kinds download. [ERROR ] Kind stats are generated periodically by the appserver [ERROR ] Kind stats are not available on dev_appserver. 이렇게 받은 파일은 sqlite3 포맷으로 저장된다. 이 데이터를 복원하려면 restore 명령을 사용하면 된다. 3. 커스텀 로더 CSV 에서부터 로딩할 경우 CSV row 를 모델로 변환해야 한다. 모델 하나당 한번씩 해야 한다. class AlbumLoader(bulkloader.Loader): def init(self): bulkloader.Loader.init(self, Album, [(title, lambda x: x.decode(utf-8)), (artist, lambda x: x.decode(utf-8)), (publication_date, lambda x: datetime.datetime.strptime(x, %m/%d/%Y).date()), (length_in_minutes, int) ]) 전용 로더 클래스를 만들고, 각 필드를 모두 명시해야 한다. appcfg.py upload_data config_file=album_loader.py filename=album_data.csv kind=Album 4. 커스텀 익스포터 역시 전용 익스포터 클래스를 만들고, 각 모델마다 한번씩 호출을 해야 한다. class AlbumExporter(bulkloader.Exporter): def init(self): bulkloader.Exporter.init(self, Album, [(title, str, None), (artist, str, None), (publication_date, str, None), (length_in_minutes, str, None) ]) appcfg.py download_data config_file=album_loader.py filename=album_data_archive.csv kind=Album