O comando linux sync ordena ao kernel que grave imediatamente no disco tudo o que ainda está só na RAM (o “rascunho”), garantindo a integridade dos dados caso falte energia ou o sistema seja desligado de forma abrupta.
Analogia rápida: imagine que o Linux, para ser mais rápido, anota mudanças em um rascunho (a RAM) antes de “passar a limpo” no caderno (o disco). O sync é a ordem de “passar a limpo agora”.
O que é o comando sync e por que ele é essencial?
O sync pede ao kernel que sincronize os buffers de escrita — isto é, que force a gravação de dados pendentes do cache de disco para o armazenamento físico (HD, SSD, pendrive, etc.).
Isso reduz o risco de corrupção e de dados inconsistentes quando ocorre:
- queda de energia ou travamento;
- remoção de mídia removível sem desmontar;
- scripts que dependem de dados recém-gravados estarem realmente persistidos.
Observação importante: processos normais de shutdown/reboot já fazem a sincronização; no uso diário você não precisa rodar sync o tempo todo. Ele é mais útil em momentos críticos (veja abaixo).
Como usar o comando sync: sintaxe e exemplos práticos
1) Sincronizar tudo que está pendente
sync
Sem saída na tela; apenas aguarde concluir. Útil antes de ações delicadas (troca de bateria, cut-off de energia, etc.).
2) Sincronizar e desligar com segurança
sync && shutdown -h now
# ou
sync && systemctl poweroff
Em sistemas modernos o desligamento já sincroniza, mas a combinação acima dá garantia explícita em ambientes sensíveis.
3) Garantir gravação antes de remover um pendrive
sync && umount /media/pendrive
O umount também força a gravação do que falta, mas chamar sync antes adiciona uma camada de segurança (especialmente após grandes cópias).
4) Após copiar muitos arquivos
rsync -aP ~/Videos/ /media/backup/Videos/ && sync
Garante que o backup esteja realmente persistido no disco externo antes de você desconectar.
5) Sincronizar um sistema de arquivos específico (avançado)
sync -f /media/pendrive
Pede a sincronização focada no sistema de arquivos onde o caminho reside. Útil para mídias removíveis e pontos de montagem dedicados.
Dica: para “confirmar” o tempo gasto, use time sync
ou sync && echo "ok"
.
Quando usar o comando sync: os momentos cruciais
- Antes de desligar à força (corte de energia programado, manutenção elétrica, servidores em rack sem no-break).
- Depois de operações intensas de gravação, como grandes cópias/
rsync
, exportação de bancos de dados,dd
de imagens de disco. - Em scripts de backup, imediatamente antes de marcar o job como concluído ou desmontar o destino.
- Antes de remover mídia USB/SD, principalmente se você acabou de escrever muitos arquivos.
- Após editar arquivos de configuração críticos (bootloader, fstab, serviços) quando você precisa garantir persistência antes de reiniciar.
Use com critério: executar sync o tempo todo pode impactar desempenho. Prefira momentos críticos em que a integridade dos dados é prioridade.
Sync vs. fsync: qual é a diferença?
- sync (usuário / sistema)
É um comando de usuário que solicita ao kernel a gravação dos dados pendentes.- Sem argumentos: age no sistema inteiro.
- Com caminho/
-f
: foca no sistema de arquivos/arquivo associado (dependendo da implementação).
- fsync (chamada de sistema / por arquivo)
É uma chamada de sistema usada por programas para sincronizar um arquivo específico (o descritor aberto). Em termos práticos:- um banco de dados pode chamar fsync após cada commit;
- utilitários como
cp
/rsync
podem usar fsync para garantir persistência do arquivo recém-escrito.
Resumo: sync é o martelo global (ou por sistema de arquivos); fsync é o cinzel por arquivo. Para administradores e usuários, sync resolve os casos operacionais; para desenvolvedores, fsync é a ferramenta fina dentro dos apps.
Notas e boas práticas rápidas
- journaling e fsck: sistemas de arquivos com journaling minimizam danos, mas não substituem a sincronização. Se ocorreu queda de energia, rode o fsck conforme a política da sua distro.
- não precisa “três sync”: o hábito antigo de
sync; sync; sync
não é necessário em sistemas atuais. - em SSDs também vale: o comando continua útil; o kernel usa as barreiras/flushes adequados ao dispositivo.