【发布时间】:2015-07-06 12:47:19
【问题描述】:
我刚刚有一个运行 ZFS 的 NAS,我想在将文件传输到其中时保留创建时间。 linux/ext4(数据现在所在的位置)和 zfs 都存储创建时间或出生时间。在 zfs 的情况下,它甚至由 stat 命令报告。但我无法弄清楚如何设置文件的创建时间,以便它反映原始文件系统中的创建时间。与 ext4->ext4 传输不同,我可以为 debugfs 提供一个脚本来设置文件创建时间。
ZFS 有没有类似 debugfs 的工具?
附言。为了更好地解释:
我有一个连接到 Ubuntu 14.04 笔记本电脑的 USB 驱动器。它拥有一个文件系统,我关心各个文件的创建日期(出生日期)。我经常使用基于 debugfs 的脚本查阅这些创建时间戳,该脚本将其报告为 crtime。
我想将数据移动到运行 ZFS 的 NAS 盒中,但我知道的方法(scp -p -r、rsync -a 和 tar,以及我尝试过的其他方法)保留了修改时间,但不是创建时间。
-
如果我要迁移到另一个 ext4 文件系统,我会使用出色的工具
debugfs来解决问题。具体来说,我可以在源 fs(文件系统)上列出 (filename, crtime) 对,然后在目标 fs 上使用debugfs -w来读取具有以下形式的行的脚本set_inode_field filename crtime <value>
我已经对此进行了测试,并且效果很好。
但是我的目标 fs 不是 ext4 而是 ZFS,虽然
debugfs在目标机器上运行,但它在那里完全没用。它甚至不识别fs。另一个可以让您通过直接编辑 inode 来更改时间戳的调试工具是 fsdb;它也在目标机器上运行,但我似乎无法让它识别 ZFS 文件系统。卖给我 NAS 盒子的人告诉我,debugfs 和 fsdb 不适用于 ZFS 文件系统,但他们还没有找到等效的。所以,经过多次谷歌搜索和尝试,我终于决定今天在这里发布一个问题,希望有人能给出答案。
我很惊讶这会变得多么困难。从档案的角度来看,如何复制数据集以使所有时间戳都相同的问题似乎很自然。
【问题讨论】:
-
不明白为什么这不属于服务器故障。
-
嗨,杰,谢谢。您是否建议我将问题移至服务器故障?如果是这样,我是否应该在此处等待赏金期用完并删除问题并将其发布到 serverfault 上?我不是专业的系统管理员,我只是管理家里的 5 个 linux 机器,所以发布问题对我来说是一个新领域。
-
如果您现在可以删除它,我建议您这样做。 (我希望你会吸引反对票而不是接近投票,因为人们不能在有赏金时投票关闭。)然后尝试在那里发帖;您的问题似乎表述得很好,主题应该与他们的兴趣相关。
-
谢谢。所以你说反对票是因为这个问题是题外话。我不会从许多其他问题中猜到。在其他 SE 网站上,我属于对问题投反对票的人会发表评论以解释原因,除非该问题完全是垃圾。感谢您的帮助。
-
如果解决方案涉及脚本,那么它的价值,stackoverflow 仍然是发布它的合适地方。 +1
标签: filesystems timestamp freebsd inode zfs