// Created on savesnippets.com ยท https://savesnippets.com/GZhqk6dqk4cm2E package main import ( "fmt" "os" "path/filepath" ) func atomicWrite(path string, data []byte, perm os.FileMode) error { dir := filepath.Dir(path) tmp, err := os.CreateTemp(dir, "."+filepath.Base(path)+".*.tmp") if err != nil { return err } tmpName := tmp.Name() defer func() { // Best-effort cleanup if rename never happened if _, err := os.Stat(tmpName); err == nil { os.Remove(tmpName) } }() if _, err := tmp.Write(data); err != nil { tmp.Close(); return err } if err := tmp.Sync(); err != nil { tmp.Close(); return err } if err := tmp.Close(); err != nil { return err } if err := os.Chmod(tmpName, perm); err != nil { return err } return os.Rename(tmpName, path) } func main() { err := atomicWrite("/var/lib/myapp/state.json", []byte(`{"ok": true}`), 0644) fmt.Println(err) }