1

我想在 bash 脚本中实现 sqlite 数据库的二进制备份并将其设置为 cron 作业。安全备份意味着在复制数据库文件之前写锁。我发现了 bash 交互式食谱(http://ajacevedo.com/resources/sqlite/):

$ sqlite3 databasename.sqlite3
sqlite> begin immediate;
<press CTRL+Z>
$ cp -a databasename.sqlite3 databasename.sqlite3.backup
$ fg
sqlite> rollback;
sqlite> .exit 

我知道 sqlite 中有 .backup ,但它似乎没有执行写锁定(在 .backup 期间是否锁定了 sqlite)。不幸的是,我不是 bash 专家。是否有可能在可以作为 cron 作业(非交互式)执行的 bash 脚本中实现该代码?可能正在使用 pid 或其他某种魔法。

4

2 回答 2

1

甚至使用的读锁也.backup阻止其他人写。

(备份定期释放锁以允许其他程序运行而无需太长时间等待;如果发生任何写入,它会重新同步。)

于 2013-10-23T14:06:29.250 回答
1

可以在 bash 脚本中使用以下命令:

sqlite3 your_db.sqlite ".backup your_backup.sqlite"

Sqlite3 查询可以用 bash 编写,使用sqlite3 db_name.sqlite "command".

.backup也是工作中安全的备份方式。这里提到了好的注释:https ://www.sqlite.org/howtocorrupt.html

于 2016-01-03T15:03:42.957 回答