/var/log/lastlog 是一个巨大的稀疏文件(1.1TB)有什么原因吗?

hum*_*ace 11 logs sparse-files

我读过一些问题,询问如何rsync有效地稀疏文件提及文件/var/log/lastlog/var/log/faillog. 事实上,我自己也发现这些文件是一个“问题”,因为它们通过 rsync 备份会使它们变得“稀疏”。

因此,我想知道的是,将这些文件作为稀疏的大文件(在我的情况下为 1.1TB)的需求/背景动机是什么?

与此相关的还有后续行动:由于我假设它们是日志文件,因此我并不在乎我过多地截断了这些文件,我是否因截断这些文件而损坏了任何内容?

mos*_*svy 13

因此,我想知道的是,将这些文件作为稀疏的大文件(在我的情况下为 1.1TB)的需求/背景动机是什么?

这就是它应该的样子。

/var/log/lastlog不是类似于 的日志文件/var/log/syslog,它的名称应该读作“上次登录列表”而不是“上次日志文件”。

它由pam_lastlog(8)模块维护,它基本上是一个这样的数组:

struct lastlog {
    time_t  ll_time;    // 4
    char    ll_line[UT_LINESIZE];   // 32
    char    ll_host[UT_HOSTSIZE];   // 256
} entry[UINT_MAX];
Run Code Online (Sandbox Code Playgroud)

典型 x86-64 机器上的字段大小在注释中;一个条目应该是 4 + 32 + 256 = 292 个字节。

每次使用pam_lastlog(8)pam 模块的程序登录用户时,它都会寻找uid * sizeof(struct lastlog)并覆盖与该用户对应的条目。

我是否因截断这些文件而损坏了任何东西?

你确实破坏了lastlog(1)命令的输出,反正没人使用;-)

  • @Edmund 这是一个[已加载的问题](https://en.wikipedia.org/wiki/Loaded_question)。让我们有一个不同的看法:如果有人确定他们的软件永远不必在损坏/原始的情况下工作,为什么有人不使用稀疏文件,而是重新发明轮子(或使用一些重量级通用数据库)不支持稀疏文件的操作系统? (3认同)
  • Couriousity 让我在这里,这个概念使用稀疏文件然后使用 arraykey /offset 映射到正确的小和平信息(导致稀疏文件)是我只遇到过`/var/log/lastlog`和`/var/log/faillog`,让我觉得有必要在这里提问。这是一种常见的技术,即普通 unix/linux 设置中的其他软件也可以这样做吗? (2认同)