Копировать файл базы cp во время работы приложения — плохая идея: при включённом WAL часть данных лежит в -wal, и снимок получится битым. Правильно — sqlite3 db.sqlite ".backup snapshot.sqlite" или backup API из кода: он консистентен и не мешает записи.
Второй урок: проверять бэкапы восстановлением, а не наличием файла. Раз в месяц открываю снимок и делаю пару запросов. Скучно, зато спокойно.