经验大分享:TDB文件介绍

简介: 经验大分享:TDB文件介绍

samba在运行时,Samba 存储许多信息,从本地密码到希望从中收到信息的一系列客户端。这类数据其中一些是暂时的,在 Samba 重启时可能会被丢弃,但是另一些却是永久的,不会被丢弃。这类数据可能是很大的,也可能是不经常访问只是在内存中保留,或者在重启时保持存在。要满足这些要求,Samba 团队创建了 Trivial Database。它实际上是一个键值存储,这意味着数据通过惟一键的方式存储和检索,且没有像在关系数据库中那样的表联接。键值存储 — 尤其是 TDB — 被设计成将数据存储到磁盘并将其取回的一种快速方式。

查看samba下tdb文件,只列出/var/lib/samba下面的,还有很多其他目录存在samba tdb文件。

【root@node1 samba】# cd /var/lib/samba/

【root@node1 samba】# ll

total 2236

-rw——- 1 root root 421888 Apr 23 15:10 account_policy.tdb

drwxr-xr-x 1 root root 0 Nov 28 00:21 drivers

-rw-r–r– 1 root root 425984 Apr 23 15:10 gencache.tdb

-rw——- 1 root root 696 Apr 23 15:10 group_mapping.tdb

drwxr-xr-x 1 root root 456 Apr 23 15:10 lock

drwxr-xr-x 1 root root 0 Apr 23 15:10 printing

drwx—— 1 root root 86 Apr 23 17:21 private

-rw——- 1 root root 528384 Apr 23 15:10 registry.tdb

-rw——- 1 root root 421888 Apr 23 15:10 share_info.tdb

-rw-r–r– 1 root root 483328 Apr 23 17:43 smbprofile.tdb

drwxr-x— 1 root wbpriv 0 Nov 28 00:21 winbindd_privileged

至于这些tdb文件如何查看数据,以及修改备份,下面介绍samba自带的几个tdb工具。

tdbtool工具介绍

tdbtool工具可以在命令行上接受命令,也可以打开交互式控制台类似shell一样。要在命令行上完成任务,请运行 tdbtool

example.tdb command options,其中 example.tdb 是文件名,command

是命令,针对命令的选项位于最后。要使用 tdb shell,只需单独运行 tdbtool

或在命令行上传递文件的名称。个人建议使用交互式控制台方式。以下是tdbtool参数介绍

tdbtool:

create dbname : create a database

open dbname : open an existing database

transaction_start : start a transaction

transaction_commit : commit a transaction

transaction_cancel : cancel a transaction

erase : erase the database

dump : dump the database as strings

keys : dump the database keys as strings

hexkeys : dump the database keys as hex values

info : print summary info about the database

insert key data : insert a record

move key file : move a record to a destination tdb

storehex key data : store a record (replace), key/value in hex format

store key data : store a record (replace)

show key : show a record by key

delete key : delete a record by key

list : print the database hash table and freelist

free : print the database freelist

freelist_size : print the number of records in the freelist

check : check the integrity of an opened database

repack : repack the database

speed : perform speed tests on the database

! command : execute system command

1 | first : print the first record

n | next : print the next record

q | quit : terminate

\n : repeat ‘next’ command

下面分别介绍:

1、创建数据库

【root@node1 tdbtest】# tdbtool

tdb> create hello

【root@node1 tdbtest】# ll

total 4

-rw——- 1 root root 696 Apr 23 15:53 hello

2、打开数据库

tdb> open hello

3、插入数据

tdb> insert name zhangsan

4、查询数据

tdb> show name

key 4 bytes

name

data 8 bytes

【000】 7A 68 61 6E 67 73 61 6E zhangsan

5、查看所有数据

tdb> dump

key 5 bytes

name1

data 4 bytes

【000】 6C 69 73 69 lisi

key 4 bytes

name

data 8 bytes

【000】 7A 68 61 6E 67 73 61 6E zhangsan

总共2条KEY/VALUES键值对,既2条数据信息。

6、列出key值

tdb> keys

key 5 bytes: name1

key 4 bytes: name

7、修改values值

tdb> store name zhang

Storing key:

key 4 bytes

name

data 5 bytes

【000】 7A 68 61 6E 67 zhang

将name值由zhangsan 修改为zhang,查看修改结果

tdb> dump

key 5 bytes

name1

data 4 bytes

【000】 77 61 6E 67 77 75 lisi

key 4 bytes

name

data 5 bytes

【000】 7A 68 61 6E 67 zhang

8、删除某个key值

tdb> delete name

tdb> dump

key 5 bytes

name1

data 4 bytes

【000】 6C 69 73 69 lisi

将key值为name的删掉后,查看只剩下name1记录。

9、检查数据完整性

tdb> check

Database integrity is OK and has 2 records.

10、复制数据到另外的数据库(后者数据库必须存在)

tdb> move name2 hello1

key 5 bytes

name2

data 6 bytes

【000】 77 61 6E 67 77 75 wangwu

record moved

查看hello1记录

tdb> open hello1

tdb> dump

key 5 bytes

name2

data 6 bytes

【000】 77 61 6E 67 77 75 wangwu

11、执行系统命令

tdb> ! pwd

/root/tdbtest

tdb> ! date

Mon Apr 23 16:36:18 CST 2018

12、支持事务处理

开启事务

tdb> transaction_start

tdb> insert name3 test

tdb> show name3

key 5 bytes

name3

data 4 bytes

【000】 74 65 73 74 test

取消事务

tdb> transaction_cancel

tdb> show name3

fetch failed

提交事务

tdb> transaction_start

tdb> insert name3 test

tdb> transaction_commit

tdb> show name3

key 5 bytes

name3

data 4 bytes

【000】 74 65 73 74 test

tdbdump 工具介绍

tdbdump是用来查看tdb文件中的所有键值对数据的工具

已hello为例, 查看所有数据

【root@node1 tdbtest】# tdbdump hello

{

key(5) = “name1”

data(4) = “lisi”

}

{

key(5) = “name2”

data(6) = “wangwu”

}

{

key(5) = “name3”

data(4) = “test”

}

每个键值对数据key data 数字为字节数

tdbbackup 工具介绍

tdbbackup工具为tdb数据库文件的备份工具。

– 备份hello数据库

【root@node1 tdbtest】# tdbbackup hello

【root@node1 tdbtest】# ll

total 828

-rw——- 1 root root 8//代码效果参考:http://www.zidongmutanji.com/bxxx/17784.html

31488 Apr 23 16:42 hello

-rw——- 1 root root 8192 Apr 23 16:38 hello1

-rw——- 1 root root 8192 Apr 23 17:25 hello.bak

hello.bak就是备份文件。这里发现两者文件大小不一样,通过md5对比。因为是不同的文件,文件MD5值肯定是不一样的,但是文件内容是完全一样的。

查看文件md5

【root@node1 tdbtest】# md5sum hello

8c55e7dabbeab30e3cd96e96b59fb052 hello

【root@node1 tdbtest】# md5sum hello.bak

c20b4f9b01f5715bbec8f950cf394f51 hello.bak

查看文件内容md5

【root@node1 tdbtest】# tdbdump hello | md5sum

88be32a888d3cd63132e09a0de8d69de –

【root@node1 tdbtest】# tdbdump hello.bak | md5sum

88be32a888d3cd63132e09a0de8d69de –

– 恢复hello数据

模拟删除数据

【root@node1 tdbtest】# ll

total 828

-rw——- 1 root root 831488 Apr 23 16:42 hello

-rw——- 1 root root 8192 Apr 23 16:38 hello1

-rw——- 1 root root 8192 Apr 23 17:25 hello.bak

【root@node1 tdbtest】# >hello

【root@node1 //代码效果参考:http://www.zidongmutanji.com/bxxx/174752.html

tdbtest】# ll

total 16

-rw——- 1 root root 0 Apr 23 17:33 hello

-rw——- 1 root root 8192 Apr 23 16:38 hello1

-rw——- 1 root root 8192 Apr 23 17:25 hello.bak

【root@node1 tdbtest】# tdbbackup -v hello

restoring hello

【root@node1 tdbtest】# ll

total 24

-rw——- 1 root root 8192 Apr 23 17:33 hello

-rw——- 1 root root 8192 Apr 23 16:38 hello1

-rw——- 1 root root 8192 Apr 23 17:25 hello.bak

看到文件大小一致了,现在对比md5值

【root@node1 tdbtest】# md5sum hello

c20b4f9b01f5715bbec8f950cf394f51 hello

【root@node1 tdbtest】# md5sum hello.bak

c20b4f9b01f5715bbec8f950cf394f51 hello.bak

【root@node1 tdbtest】# tdbdump hello |md5sum

88be32a888d3cd63132e09a0de8d69de –

【root@node1 tdbtest】# tdbdump hello.bak |md5sum

88be32a888d3cd63132//代码效果参考:http://www.zidongmutanji.com/bxxx/533118.html

e09a0de8d69de –

看到MD5值与之前备份之前一致了。查看数据

【root@node1 tdbtest】# tdbdump hello

{

key(5) = “name1”

data(4) = “lisi”

}

{

key(5) = “name2”

data(6) = “wangwu”

}

{

key(5) = “name3”

data(4) = “test”

}

相关文章
|
Linux
Linux网关路由配置
Linux网关路由配置
354 0
|
8月前
|
机器学习/深度学习 人工智能 搜索推荐
BioEmu:微软黑科技炸场!生成式AI重构蛋白质模拟:千倍效率碾压传统计算,新药研发周期砍半
BioEmu 是微软推出的生成式深度学习系统,可在单个 GPU 上每小时生成数千种蛋白质结构样本,支持模拟动态变化、预测热力学性质,并显著降低计算成本。
379 2
BioEmu:微软黑科技炸场!生成式AI重构蛋白质模拟:千倍效率碾压传统计算,新药研发周期砍半
|
Kubernetes Linux 调度
Kubernetes详解(十三)——Pod详解
Kubernetes详解(十三)——Pod详解
207 3
|
Ubuntu Linux 内存技术
Linux下使用alsamixer配置系统默认的声卡设备(默认音频输出设备、输入设备、系统音量)
Linux下使用alsamixer配置系统默认的声卡设备(默认音频输出设备、输入设备、系统音量)
5403 0
Linux下使用alsamixer配置系统默认的声卡设备(默认音频输出设备、输入设备、系统音量)
|
应用服务中间件 开发工具 nginx
Mac M1/M2/M3 芯片环境配置以及常用软件安装-前端
Mac M1/M2/M3 芯片环境配置以及常用软件安装-前端 最近换了台新 Mac,所有的配置和软件就重新安装下,顺便写个文章。
1143 1
|
前端开发 图形学 开发者
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
799 3
|
存储 NoSQL Shell
经验大分享:TDB文件介绍
经验大分享:TDB文件介绍
348 0
ly~
|
12月前
|
数据可视化 BI API
除了 OpenGL,还有哪些常用的图形库可以在 C 语言中使用?
除了OpenGL,C语言中还有多个常用的图形库:SDL,适合初学者,用于2D游戏和多媒体应用;Allegro,高性能,支持2D/3D图形,广泛应用于游戏开发;Cairo,矢量图形库,支持高质量图形输出,适用于数据可视化;SFML,提供简单接口,用于2D/3D游戏及多媒体应用;GTK+,开源窗口工具包,用于创建图形用户界面。这些库各有特色,适用于不同的开发需求。
ly~
2561 4
Flowable流程的挂起与激活详解
Flowable流程的挂起与激活详解
718 1