计算文件夹大小,不包括文件硬链接



我正在使用带有 rsync 的 bash 脚本来创建每日和每周备份。简而言之,它是如何工作的:

  • 该脚本为天和周设置变量。
  • 当前日期文件夹被清空:rm -rf /path/to/$currentday/*
  • 前一天的内容复制到当天(硬链接):cp -ral /path/to/$previousday/* /path/to/$currentday/
  • 然后,脚本会同步所做的更改: rsync -tru --progress /path/to/SOURCE/* /path/to/$currentday/

这是通过 WAN 从一个存储设备拉到另一个存储设备。由于公司正在成长,我们需要监控每次脚本运行时通过 WAN 实际发送的数据量。

有没有办法让我计算$currentday文件夹并排除没有更改(仍然硬链接)的文件?

或者也许在脚本中添加一行来记录正在发送的文件?

我一直在互联网上搜索,但不幸的是没有找到任何有用的东西,我尝试的所有内容都显示了文件夹的总大小,即 2TB。

有人愿意与我分享吗?

我观察到du可以只计算一次硬链接的大小。测试以下步骤:

mkdir 1 2
cd 1
dd if=/dev/zero of=f1 bs=1024 count=1024
dd if=/dev/zero of=f2 bs=1024 count=2048
cd ../2
ln ../1/f1
cp ../1/f2 .
cd ..
du -shc 1 2
du -shc 2 1

您将看到第二个文件夹没有考虑以前使用的硬链接的大小。也许这种方法会有所帮助。

最新更新