加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 我如何tarball proc文件系统?

发布时间:2020-12-14 01:21:31 所属栏目:Linux 来源:网络整理
导读:我想拍摄整个proc文件系统的快照,并将其保存在tarball中(或者在最坏的情况下将所有文本文件连接到一个文本文件中). 但是当我跑步时: tar -c /proc 我得到了一个段错误. 最好的方法是什么?我应该在每个文件中设置某种递归遍历吗? 我只有基本的* nix实用程
我想拍摄整个proc文件系统的快照,并将其保存在tarball中(或者在最坏的情况下将所有文本文件连接到一个文本文件中).

但是当我跑步时:

tar -c /proc

我得到了一个段错误.

最好的方法是什么?我应该在每个文件中设置某种递归遍历吗?

我只有基本的* nix实用程序,如bash,cat,ls,echo等.我没有像python或perl或java那样的任何东西.

解决方法

linux / proc文件系统实际上是伪装成文件系统的内核变量.没有什么可以保存,因此无需备份.如果系统让你,你可以rm -rf / proc,它会在下次重启时神奇地重新出现.

/ dev文件系统具有真正的i节点,可以备份它们.除了他们没有内容,只有一个主要和次要的号码,权限和名称.备份特殊设备文件的工具仅记录这些参数,从不尝试打开(2)设备.但是,由于设备的主要和次要数字仅对它们所构建的精确系统有意义,因此几乎没有理由对它们进行备份.

尝试tar / proc伪文件系统导致tar崩溃的原因是因为/ proc具有有趣的文件行为:像只写伪文件这样的东西似乎具有读取权限,但如果程序尝试则返回错误指示打开(2)它进行备份.这肯定会驱使一个天真的焦油来获得持久性.

添加以回应评论

tar对读取/ proc / kmsg有问题并不让我感到惊讶,因为它有一些有趣的属性:

# strace cat /proc/kmsg
execve("/bin/cat",["cat","kmsg"],open("kmsg",O_RDONLY|O_LARGEFILE)      = 3
// ok,no problem opening the file for reading
fstat64(3,{ st_mode=S_IFREG|0400,st_size=0,// looks like a normal file of zero length
// but cat does not pay attention to st_size so it just
// does a blocking read
read(3,"<4>[103128.156051] ata2.00: qc t"...,32768) = 461
write(1,461) = 461
// ...forever...
read(3,"<6>[103158.228444] ata2.00: conf"...,32768) = 48
write(1,48) = 48
+++ killed by SIGINT +++

因为/ proc / kmsg是内核消息的运行列表,所以它永远不会返回0(EOF)它只是一直持续到我感到无聊并按^ C.

有趣的是,我的tar与/ proc / kmsg没有问题:

$tar --version
tar (GNU tar) 1.22
# tar cf /tmp/junk.tar /proc/kmsg
$tar tvf /tmp/junk.tar
-r-------- root/root         0 2010-09-01 14:41 proc/kmsg

如果你看看strace输出,GNU tar 1.22看到st_length == 0并且甚至没有打开文件进行读取,因为那里没有任何东西.

我可以想象你的tar看到长度为0,使用malloc(3)分配了那么多(无)空间,它尽职地将指针传回零长度缓冲区.您的tar从/ proc / kmsg读取,读取的长度非零,并尝试将其存储在零长度缓冲区中并导致分段违规.

那只是一个在/ proc中等待焦油的老鼠洞.还有多少人?不知道.他们会表现得一样吗?可能不是.哪些~1000左右的文件不是/ proc /< pid> psuedo文件会有奇怪的语义吗?不知道.

但也许是最有说服力的问题:你对/ proc / sys / vm / lowmem_reserve_ratio有什么意义,下周会有什么不同,你能从这个差异中学到什么吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读