我有一个 1.7TB 的主分区,格式化为 ext4,目前通过 samba 从我的树莓派共享。我的目标是将此分区与 Ubuntu 内置的 Deja-Dup 备份实用程序一起使用。但是,在执行第一次备份并指向我的 samba 共享时,Deja-Dup 出错,抱怨共享上没有足够的可用空间。以下是df -h
树莓派上的输出:
/dev/sdb3 1.7T 4.0G 1.6T 1% /media/SG_MEDIA
显然有足够的空间。但是,当我通过侧栏中的 nautilus 的“连接到服务器”连接到共享时,在窗口中单击鼠标右键,然后选择属性,它报告只有 3GB 的可用空间,如下所示:
显然,这并不准确。有人知道是什么原因造成的吗?在我的 smb.conf 文件中,我已明确设置max disk size = 0
,但问题仍然存在。谢谢。
答案1
无论出于什么原因,以下是导致此问题的原因:
我通过 samba 共享我的根目录并尝试浏览它以创建备份,即备份到 smb://192.168.1.2/root/media/SG_MEDIA。这就是报告 3GB 可用空间的原因。
但是,当我直接共享连接的 HD 时,即直接创建 samba 共享到 /media/SG_MEDIA 并备份到 smb://192.168.1.2/SG_MEDIA,它报告了正确的空间。不知道为什么。
答案2
嗯,看起来每个文件都大约 1MB。
这是一个解决方法:
编辑 smb.conf 并添加以下内容:
[全球的]
分配汇总大小 = 4096
重新启动 samba。
答案3
如果在单个 Samba 共享下有不同的挂载点,则可以使用dfree command
共享定义中的设置指向自定义脚本,该脚本将决定如何向客户端公布共享的总空间和可用空间。
不幸的是,文档截至 2023 年 5 月,还不太正确。但有一个我的回答中有详细解释。
在脚本中,您可以用来$PWD
决定要报告哪些数字。
这是我使用的脚本,也显示在上面的链接答案中:
#!/bin/bash
diskA="$PWD/disk1"
diskB="$PWD/disk2"
# get total number of blocks and free blocks
# into arrays sizesA and sizesB
sizesA=( $( df $diskA | tail -1 | awk '{print $2,$4}' ) )
sizesB=( $( df $diskB | tail -1 | awk '{print $2,$4}' ) )
# return sizes of the disk with smaller free space left
if (( ${sizesA[1]} <= ${sizesB[1]} )); then
echo "${sizesA[@]}"
else
echo "${sizesB[@]}"
fi