2017-08-07
우선 몇가지 짚고 넘어갈게 있는데, Windows와 linux는 저장되어 있는 mongoDB의 데이터의 형식이 다르다.

리눅스에서 mongoDB의 저장 폴더로 들어가면,
# cd /var/lib/mongo/ # ll total 81932 drwxr-xr-x 2 mongod mongod 4096 Aug 5 13:10 journal -rw------- 1 mongod mongod 67108864 Aug 5 15:00 test_db.0 -rw------- 1 mongod mongod 16777216 Aug 5 15:00 test_db.ns -rwxr-xr-x 1 mongod mongod 5 Aug 5 03:21 mongod.lock
위처럼 한눈에 현재 저장되어 있는 DB의 이름이 test_db라는 걸 알수 있는 그런 구조로 되어 있다.

하지만, windows에서는..
collection-0-5536687657288777074.wt index-1-5536687657288777074.wt mongod.lock
위와 같이.. 파일명으로는 뭐가 뭔지 잘 알수가 없게 되어 있다.

하지만, 뭐 그렇다고 딱히 dump하는데 문제가 있는건 아니다. dump된 파일을 잘 가져와서 restore하면 된다.

자 그럼 일단, 아래와 같이 Windows에서 콘솔창을 열고 dump를 뜨자
// mongodump --port 포트번호 -d db명 -c collection명 -o dump파일이 저장될 경로 mongodump --port 27017 -d test_db -c test_col -o c:\mongodb\backups
db전체를 backup하려면 -c 옵션을 안주면 되고, -h 옵션으로 외부 host를 입력해서 할수도 있지만, 여기서는 로컬에서 하는 것만 다루겠다.
정상적으로 실행이 됐으면, 아래와 같은 경로에 .bson파일과 .metadata.json 파일이 생성 되었을것이다.
C:\mongodb\backups\test_db\test_col.bson C:\mongodb\backups\test_db\test_col.metadata.json

자 이제 이 두파일을 가지고 linux에서 restore하면 된다.
일단 ftp같은걸 이용해서, 리눅스로 위 두파일을 적절한 위치에 옮기고, 아래와 같은 명령어를 입력하자
// mongorestore --db db명 --collection collection명 dump된.bson파일 mongorestore --db test_db_linux --collection test_col /home/mogodb_backup/test_col.bson

자 그리고 이제 mongoDB에 접속해서 살펴보면, backup이 잘 된걸 볼수 있다.
# mongo MongoDB shell version: 2.6.12 connecting to: test > > use test_db switched to db test_db > > show tables; test_col item_codes system.indexes > > db.test_col.count() 1742