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 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / nice - 새 명령의 CPU 우선순위 조정

Linux / 명령어 / nice - 새 명령의 CPU 우선순위 조정

Linux nice 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / traceroute - 목적지까지 라우터 경로 추적

Linux / 명령어 / traceroute - 목적지까지 라우터 경로 추적

Linux traceroute 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / zip - 여러 파일을 ZIP 아카이브로 묶기

Linux / 명령어 / zip - 여러 파일을 ZIP 아카이브로 묶기

Linux zip 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 명령어 / last - 로그인 기록과 시스템 부팅 이력 확인

Linux / 명령어 / last - 로그인 기록과 시스템 부팅 이력 확인

Linux last 명령어로 사용자 로그인·로그아웃, 재부팅과 실패한 로그인 이력을 확인하는 방법을 설명합니다. wtmp·btmp, 기간 필터, 상태 해석과 보안 조사 시 한계를 함께 정리합니다.

Linux / 명령어 / history - 명령어 실행 기록 확인

Linux / 명령어 / history - 명령어 실행 기록 확인

Bash history 명령어로 이전 명령을 조회·검색·재실행·삭제하는 방법을 설명합니다. ~/.bash_history, HISTCONTROL, HISTTIMEFORMAT, histappend와 여러 터미널 기록 동기화 방법도 함께 정리합니다.

Linux / 명령어 / mkfs - 새 파일 시스템 생성 전 확인 사항과 사용법

Linux / 명령어 / mkfs - 새 파일 시스템 생성 전 확인 사항과 사용법

Linux mkfs 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / pwd - 현재 작업 디렉터리 경로 확인

Linux / 명령어 / pwd - 현재 작업 디렉터리 경로 확인

Linux pwd 명령어로 현재 작업 디렉터리를 확인하는 방법을 설명합니다. 논리적 경로와 물리적 경로, 셸 내장 명령과 PWD 변수의 차이도 함께 알아봅니다.

Linux 강좌 / 파일과 명령 찾기 - find, locate, which, whereis

Linux 강좌 / 파일과 명령 찾기 - find, locate, which, whereis

find와 locate로 파일을 찾고 which, whereis, type으로 명령의 위치와 해석 방식을 확인합니다. 실시간 검색과 색인 검색의 차이도 짚습니다.

Linux / 명령어 / time - 명령 실행 시간 측정

Linux / 명령어 / time - 명령 실행 시간 측정

Linux time 명령어로 명령과 파이프라인의 실행 시간 및 자원 사용량을 측정하는 방법을 설명합니다. Bash 예약어와 GNU /usr/bin/time의 차이, 출력 저장과 정확한 비교 방법을 정리합니다.

Linux / 명령어 / screen - 터미널 세션 유지와 관리

Linux / 명령어 / screen - 터미널 세션 유지와 관리

Linux screen 명령어로 원격 터미널 세션을 분리하고 다시 연결하는 방법을 설명합니다. 세션·창 관리, 로그 기록, 문제 해결과 nohup·tmux·systemd의 차이를 정리합니다.