Linux / Comando sync: sincronizar gravações e entender seus limites
O comando sync solicita ao kernel que sincronize gravações pendentes de arquivos e sistemas de arquivos com o armazenamento. Ele pode ajudar após uma cópia, mas não desmonta o volume nem autoriza retirar um dispositivo ainda em uso. Para remover um disco externo, termine as gravações e conclua a desmontagem normal.
O que sync faz e qual é seu alcance
O kernel pode manter dados gravados em memória para reduzir acessos ao armazenamento. O sync pede a sincronização desses dados; ele não copia arquivos para outro destino nem cria um backup. Salve primeiro o trabalho no aplicativo: dados que ainda estejam apenas no buffer do programa não são necessariamente gravações já entregues ao kernel.
Sem argumentos, o comando tem alcance sobre o sistema inteiro. No GNU sync, informar um arquivo limita a operação a esse arquivo por padrão; com -f, o alcance passa ao sistema de arquivos que contém o caminho informado. Escolha o alcance adequado para evitar confundir “um arquivo”, “um volume” e “todo o sistema”.
Sintaxe e implementação instalada
sync [opções] [arquivo...]
Os colchetes e as reticências descrevem a sintaxe e não devem ser digitados literalmente. Os exemplos de arquivo e as opções abaixo seguem o GNU Coreutils. Consulte sync --help, sync --version e man sync no ambiente em que trabalhará; outras implementações podem aceitar opções diferentes.
Sincronizar o sistema, um arquivo ou um volume
Para solicitar a sincronização geral:
sync
Sem nome de arquivo, a operação inclui as gravações pendentes do sistema e pode levar tempo conforme a carga de escrita. No Linux, a chamada de sistema aguarda a conclusão das operações de entrada e saída, como explica o manual de sync e syncfs. Isso não impede que processos produzam novas gravações depois da chamada, nem substitui a desmontagem.
Para sincronizar um arquivo existente no diretório atual:
sync report.txt
report.txt deve existir e apontar para o arquivo pretendido. O comando não cria esse arquivo, não copia seu conteúdo e não escolhe automaticamente um arquivo de mesmo nome em outro diretório. Se o caminho contiver espaços, coloque-o entre aspas.
Para sincronizar o sistema de arquivos que contém um arquivo:
sync -f /mnt/data/report.txt
Esse exemplo supõe que /mnt/data/report.txt existe e pertence ao volume desejado. Confirme a montagem antes: se o volume esperado não estiver montado, um arquivo existente no mesmo caminho pode pertencer ao sistema de arquivos que está por baixo do ponto de montagem. Não substitua o caminho por /dev/sdb1 por suposição; -f usa o sistema de arquivos que contém o arquivo informado, não necessariamente o dispositivo representado por um nó em /dev.
Na verificação em Bash 5.3.9 do Git para Windows, com GNU Coreutils 8.32, sync report.txt e sync -d report.txt foram executados apenas sobre um arquivo novo de teste e retornaram 1 com “Permission denied”. O conteúdo permaneceu igual; a falta de um arquivo também produziu erro. A chamada sem argumentos, -f e a remoção de dispositivos não foram executadas; esses resultados não validam a persistência em Linux nativo.
Sem saída na tela: como conferir o resultado
Em caso de sucesso, sync normalmente não imprime uma confirmação. Confira também as mensagens de erro e o status do comando, sem concluir que uma tela sem saída significa gravação concluída. No exemplo abaixo, echo $? deve vir imediatamente após sync, antes de outro comando substituir o status:
sync
echo $?
Se a chamada tiver terminado com sucesso, o status exibido será:
0
Esse zero é uma saída ilustrativa de sucesso, não o resultado medido no teste de arquivo em Windows descrito acima. Naquele teste, a consulta imediata do status mostrou 1. Além disso, o status final de um bloco que termina com echo pode refletir o sucesso de echo; para avaliar sync, leia o valor preservado logo após a chamada pertinente.
Um status zero não comprova que existe um backup completo nem que todo o conjunto de hardware, controladora e armazenamento está livre de falhas. A chamada Linux sync(), usada no caso geral, não fornece um relatório de erros como uma verificação de integridade. Por isso, não use apenas o zero como teste de saúde do disco.
Opções principais e formatos
| Opção ou formato | Alcance no GNU sync |
|---|---|
| Sem argumentos | Solicita a sincronização das gravações pendentes do sistema inteiro. |
arquivo |
Sincroniza o arquivo especificado, incluindo seus dados e metadados, pela operação fsync. |
-d arquivo |
Usa fdatasync para dados e metadados necessários à leitura posterior desses dados; não significa ignorar todos os metadados. |
-f arquivo |
Usa syncfs para o sistema de arquivos que contém o caminho. Não fica restrito ao conteúdo daquele arquivo. |
As diferenças entre dados e metadados são explicadas no manual de fsync e fdatasync. Sincronizar apenas um arquivo não garante, por si só, persistir também sua entrada no diretório pai. Para escolher opções e alcance, consulte o manual específico de sync no GNU Coreutils e o manual do comando GNU sync.
Preparar a remoção de armazenamento externo
- Termine o trabalho que está gravando dados. Salve e feche arquivos ou pare o serviço responsável. Sync não fecha programas e não impede novas gravações.
- Confira o volume correto e os erros. Se usar um caminho de arquivo ou -f, confirme a montagem e o alcance. Aguarde a chamada terminar e investigue recusas, erros de entrada e saída ou falhas de sincronização antes de prosseguir.
- Desmonte normalmente. Use o procedimento de umount para liberar o sistema de arquivos e confirme que ele terminou com sucesso. Se o alvo estiver ocupado, libere o uso; uma desmontagem adiada não é confirmação de que todos os acessos terminaram.
- Confirme que o dispositivo inteiro foi liberado. Um disco pode conter vários volumes ou outros usos, como swap. Siga a remoção segura do ambiente utilizado e só desconecte depois da liberação efetiva de todos os usos necessários.
Pergunta frequente
Basta executar sync antes de retirar um pendrive?
Não. Sync solicita sincronização de gravações, mas não desmonta o volume nem impede novos acessos. Termine o trabalho, conclua a desmontagem normal e a remoção segura do ambiente e confirme que o dispositivo não está mais em uso antes de desconectá-lo.




