사고는 고려·조선시대에 역대 실록 등 중요 기록을 보관하던 시설이다. 조선 초기에는 내사고와 충주 외사고에서 실록을 보관하였으며, 이후 성주와 전주 사고가 증설되었다. 임진왜란 당시 전주 사고본만 병화를 면하여 보존될 수 있었고, 이후 이를 저본으로 새롭게 제작한 실록 3부를 원본, 교정본과 함께 춘추관·강화부·묘향산·태백산·오대산에 분산 보관하였다. 이괄의 난으로 춘추관 실록이 소실된 이후 정족산·태백산·적상산·오대산에 실록을 분장하였으나, 근현대 시기를 거치며 상당수 훼손되었다. 현재는 규장각, 국가기록원 등에 보관되어 있다.
사고(史庫)는 사각(史閣)이라고도 한다. 고려시대에는 국초부터 실록(實錄)을 편찬했으나 거란의 침입으로 모두 소실되었다. 이에 고종은 1227년(고종 14)에 『명종실록(明宗實錄)』을 완성하여 한 질은 개경의 사관(史館)에 보관하고 다른 한 질은 해인사(海印寺)에 보관하였다. 고려 조정은 1270년(원종 11) 강화도에서 환도한 뒤에 실록을 일시적으로 불당고(佛堂庫)에 보관하다가 1274년(충렬왕 즉위) 9월, 중서성(中書省)에 사관을 두고 실록을 옮겨 보관하였다.
조선시대는 고려의 사관(史館)과 사고를 그대로 계승하였다. 세종 때 『태종실록』을 편찬하기까지 내사고(內史庫)가 개경에서 한양으로 옮겨지고, 1429년(세종 10)에 태종과 원경왕후(元敬王后)의 상장 의궤(喪葬儀軌)를 충주 사고(忠州史庫)에 보관한 것으로 보아 충주 사고가 외사고(外史庫)의 역할을 한 것으로 보인다. 이처럼 궁중에 설치한 내사고 이외에 외방에 별도의 외사고를 설치하였던 것은 '귀중한 사적은 분장(分藏)한다'라는 원칙에 따른 것이었으며, 고려시대에도 해인사 등지에 외사고를 설치하여 실록을 보관하였던 선례가 있다.
1439년(세종 21) 7월, 춘추관이 올린 외사고 확충 계획에 따라 경상도 성주와 전라도 전주에 사고를 더 지어 실록을 보관하게 하였다. 이로써 내사고인 춘추관 실록각(春秋館實錄閣)과 외사고인 충주 · 전주 · 성주의 사고가 정비되어 4사고(史庫)가 운영되었다. 이렇게 정비되어 내려온 4사고는 임진왜란 때 병화(兵火)로 춘추관 · 충주 · 성주의 사고가 불타 버리고 전주사고본(全州史庫本)만 병화를 면하였다.
전주사고본 실록은 유생인 안의(安義) · 손홍록(孫弘祿) 등의 노력으로 정읍의 내장산으로 옮겨졌다가 다시 해로(海路)로 해주를 거쳐 영변의 묘향산 보현사 별전(普賢寺別殿)으로 옮겨졌다. 임진왜란이 끝나고 나서 보현사의 실록을 다시 영변 객사(寧邊客舍)로 옮겨 두었고, 1603년(선조 36) 5월에는 등서(謄書)의 편의를 위하여 다시 강화도로 옮겼다.
실록의 재인출은 엄청난 비용과 인력이 요구되는 일이었으나 1603년(선조 36) 7월에 인쇄에 들어가 1606년(선조 39) 4월에 인쇄가 모두 끝났다. 본래 남아 있던 전주 사고본 1질(秩)과 재인본 3질 및 교정본 1질 등 모두 5질이었으므로 이들 실록 5질에 대한 소장처가 논의되었다. 결국 새로이 선정된 사고는 내사고인 춘추관을 비롯하여 외사고인 강화 · 묘향산 · 태백산 · 오대산의 5사고가 마련되었다.
내사고인 춘추관 사고는 1624년(인조 2) 이괄(李适)의 난 때 화재로 일부가 불탔고, 1627년(인조 5)의 정묘호란 때는 일부가 강화도로 소개(疎開:한 곳에 집중된 시설물을 분산시키는 것)되었으며, 1636년(인조 14) 병자호란 때 다시 소개되면서 산실(散失)되었다. 외사고는 4사고로 증가되었을 뿐만 아니라 깊은 산속으로 옮겨 병화에 의한 소실을 방지하는 데 진력하였다.
강화 사고는 본래 부내(府內)의 봉선전(奉先殿) 서쪽에 있다가 1606년(선조 39)에 마니산으로 옮겨 신설되었고, 1660년(현종 1)에는 다시 정족산성(鼎足山城)에 사고를 새로 마련하였다. 묘향산 사고는 1627년(인조 5) 정묘호란 때 무주(茂朱)의 적상산(赤裳山)으로 옮기자는 의논이 일어나 1633년(인조 11) 정월에 적상산성 안에 사고를 마련하고 수호 사찰(守護寺刹)을 지었다. 태백산 사고는 각화사(覺華寺)가 근처에 있었고, 오대산 사고는 상원사(上院寺)와 월정사(月精寺)의 중간에 위치해 있어 다른 외사고들과 마찬가지로 수호 사찰을 두고 승려들을 머물게 해서 지키게 하였다.
일제가 우리나라를 강점한 뒤에는 실록을 모두 본래의 사고에서 옮겼다. 정족산 사고본과 태백산 사고본은 종친부(宗親府) 자리에 새로 세워진 조선총독부 학무과 분실(分室)에 옮겨졌다가, 1930년에 경성제국대학으로 옮겨져 규장각 도서에 있다. 적상산 사고본은 구황실 문고(舊皇室文庫)로 편입되어 장서각(藏書閣)에 보관되어 내려왔지만, 산질(散秩:秩이 차지 않은 책)이 많고 6 · 25 전쟁 중에 분실되었다. 현재는 북한에 보관되어 있다. 오대산 사고본은 1913년경 동경제국대학으로 반출되었다가 1923년의 관동대진재(關東大震災) 때 대부분 소실되었다. 타지 않고 남은 오대산 사고본 실록 중 27책이 1932년 경성제국대학으로 이관되어 이후 서울대학교 규장각으로 이어졌다. 2006년 초 동경대학 도서관 귀중서고에 오대산 사고본 실록 일부가 소장되어 있다는 사실이 확인되어 2006년 7월 47책이 반환되었으며, 2018년 1책이 추가로 환수되었다. 현재 총 75책의 오대산 사고본 실록이 국립고궁박물관에 보관되어 있다.
조선 후기 사고는, 주변을 두르고 있는 담장 안쪽에 2층 누각식(樓閣式) 기와집 건물 2동이 들어있는 양식으로 만들어졌다. 두 건물 중 하나는 실록을 보관하는 사각(史閣)이고, 또 하나는 선원보(璿源譜) 등을 보관하는 선원각(璿源閣)이었다. 사고의 수직(守直)은 조선 전기의 경우 충주 사고에 수호관(守護官) 5인, 별색호장(別色戶長) 1인, 기관(記官) 1인, 고직(庫直) 1인이었다. 그러나 후기에는 외사고들이 산중에 설치되어 불사(佛寺)를 사고의 수호에 정역(定役) 시키는 조처가 행해졌다. 그리하여 적상산 사고에는 승군(僧軍)이 20인 내외, 정족산 사고에는 50인, 오대산 사고에는 20인 등이 배속되었으나 시기와 사고에 따라 증감이 있었다. 예조에서 사고를 수호하는 사찰의 주지(住持)를 수호총섭(守護摠攝)으로 임명하여 수호 책임을 맡겼다. 조선 후기 사고의 수호 책임을 맡은 사찰의 면면을 보면, 정족산 사고는 전등사(傳燈寺), 적상산 사고는 안국사(安國寺), 태백산 사고는 각화사, 오대산 사고는 월정사가 수호사찰이었고, 이곳에 위전(位田:관아, 학교, 사원 등을 유지하기 위하여 설정된 토지)을 주어 수호하게 하였다. 그러나 후기의 경우 외사고의 전반적인 관리 책임은 각 사고마다 참봉(參奉) 2인을 임명하여 교대로 관리하게 하였다.
실록 등의 서책을 꺼내어 말리는 포쇄(曝曬)는 3년 1차의 규식이 있었으나 시기에 따라 기간의 장단이 있었다. 그 밖에 실록의 봉안(奉安) · 고출(考出)에도 까다로운 의식 절차가 행해졌으나, 일반적으로 외사고 실록들을 포쇄할 때는 춘추관의 기사관급(記事官級)이 파견되었다. 외사고에 이르면 반드시 흑단령(黑團領)을 입고 사각 앞에서 네 번 절한 다음에 사고문을 열었고, 포쇄가 끝나서 봉인(封印)을 한 뒤에는 사배(四拜)하지 않았다.