gpt4 book ai didi

linux - 使用 Linux find 的奇怪结果

转载 作者:太空宇宙 更新时间:2023-11-04 09:36:37 24 4
gpt4 key购买 nike

我正在尝试设置一个备份 shell 脚本,该脚本每周在我的服务器上运行一次,并将每周备份保持十周,并且一切正常,除了一件事......

我有一个包含许多相当大文件的文件夹,因此该文件夹的十周备份占用了相当大的磁盘空间,并且该文件夹中的许多较大文件很少更改,所以我想我应该拆分将该文件夹一分为二备份:一个用于包含在“正常”每周备份(并保留十周)中的较小文件,另一个用于每周更新的较大文件,不保留较旧的每周版本.

我对较大的文件使用了以下命令:

/usr/bin/find /other/projects -size +100M -print0 | /usr/bin/xargs -0 /bin/tar -rvPf /backup/PRJ-files_LARGE.tar

这按预期工作。 tar -v 选项用于调试。但是,在归档较小的文件时,我使用类似的命令:

/usr/bin/find /other/projects -size -100M -print0 | /usr/bin/xargs -0 /bin/tar -rvPf /backup/PRJ-files_$FILE_END.tar

其中 $FILE_END 是周数。上面的行不起作用。前几天我运行了脚本,花了几个小时生成了一个 70 Gb 的文件,尽管预期的输出大小约为 14 Gb(有很多文件)。大文件中似乎有一些文件重复,但我无法完全检查。昨天我从命令行为较小的文件运行了上面的命令,我可以看到包含了我知道大于 100 Mb 的文件。

但是,刚才我从命令行运行了 find/other/projects -size -100M 并生成了预期的文件列表。

因此,如果有人知道我做错了什么,我将非常感谢提示或指示。文件名包括空格和各种字符,例如单引号,如果这与它有关。

我唯一能想到的是我没有正确使用 xargs,诚然我对此不是很熟悉,但我仍然认为问题出在我对 find 的使用上,因为 find 将输入提供给xargs.

最佳答案

首先,我不知道回答你自己的问题是否被认为是不好的形式,但我还是这样做了,因为我意识到我的错误并且我想关闭它并希望能够帮助有问题的人和我遇到的问题一样。

现在,一旦我意识到我做错了什么,坦率地说,我有点尴尬,因为我没有早点看到它,但就是这样:

我从命令行做了一些实验运行,过了一会儿我意识到输出不仅列出了所有文件,而且还列出了目录本身。目录当然也是文件,它们小于 100M,因此它们(最有可能)被包含在内,并且当它们被包含时,其中的所有文件也被包含,无论它们的大小如何。这也可以解释为什么输出文件比预期大五倍。

因此,为了克服这个问题,我向 find 命令添加了 -type f,它只包含常规文件,你瞧,它成功了!

回顾一下,我现在用于较小文件的调整命令是:

/usr/bin/find /other/projects -size -100M -type f -print0 | /usr/bin/xargs -0 /bin/tar -rvPf /backup/PRJ-files_$FILE_END.tar

关于linux - 使用 Linux find 的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25927172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com