Linux / 명령어 / sync - 버퍼에 남은 쓰기 데이터 저장 요청
sync는 메모리에 남은 파일·파일 시스템의 쓰기 데이터를 저장 장치에 반영하도록 커널에 요청합니다. 파일 복사 직후 저장 장치를 분리하기 전 쓰기 완료를 기다릴 때 사용할 수 있습니다.
sync 명령어란?
Linux는 성능을 위해 쓰기를 버퍼에 보관할 수 있습니다. sync는 이를 영구 저장소로 동기화하는 시스템 호출을 이용합니다. 인수 없이 실행하면 전체 시스템의 대기 중인 쓰기를 대상으로 하고, GNU 구현에서 파일을 지정하면 해당 파일의 쓰기를 동기화할 수 있습니다.
기본 문법
sync [옵션] [파일 ...]
설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man sync으로 현재 시스템의 설명을 확인하세요.
사용 예제
대기 중인 쓰기 동기화
현재 시스템의 쓰기 데이터를 저장 장치로 반영하도록 요청합니다.
sync
특정 파일 동기화
GNU 구현에서 한 파일의 내용을 동기화합니다.
sync report.txt
파일이 속한 파일 시스템 동기화
파일 경로가 속한 파일 시스템의 대기 쓰기를 대상으로 합니다.
sync -f /mnt/data/report.txt
출력이 없을 때의 의미
sync는 커널이 보류 중인 파일시스템 쓰기를 저장 장치로 보내도록 요청합니다. 성공하면 대개 화면에 아무것도 출력하지 않습니다.
sync echo $?
예시 출력:
0
0은 직전 sync 명령이 성공한 셸 종료 상태입니다. 이것만으로 장치 하드웨어의 모든 캐시가 영구 저장됐거나 백업이 완전하다고 보장하지는 않습니다. 외장 디스크를 분리할 때는 쓰기 완료를 기다린 뒤 umount로 안전하게 마운트를 해제하세요.
주요 옵션과 형식
| 옵션·형식 | 설명 |
|---|---|
인수 없음 |
시스템 전체의 대기 중인 쓰기를 동기화합니다. |
파일 |
GNU 구현에서 지정한 파일을 동기화합니다. |
-d |
파일의 데이터와 일관성에 필요한 메타데이터를 동기화합니다. |
-f |
지정한 파일이 속한 파일 시스템을 동기화합니다. |
사용할 때 주의할 점
sync가 성공해도 외부 저장 장치를 곧바로 뽑기보다 umount로 파일 시스템을 정상 분리하세요. 하드웨어 캐시와 장치 오류까지 포함한 절대적 데이터 보증으로 해석해서는 안 됩니다. sync -f에는 블록 장치 노드 대신 해당 파일 시스템 안의 파일 경로를 지정하는 것이 의도에 맞습니다.
자주 묻는 질문
USB 드라이브를 빼기 전에 sync만 하면 되나요?
아니요. sync는 쓰기 동기화를 요청하지만 마운트를 해제하지는 않습니다. 작업을 마친 뒤 정상적으로 umount하세요.
공식 문서
옵션의 정확한 동작과 구현별 차이는 sync 관련 공식 문서에서 확인할 수 있습니다.









