Я запускаю сервер Samba на компьютере Debian. Работает нормально; Windows может нормально читать и писать в него, но есть одна проблема.
Папка, которой я делюсь через Samba (/ var / samba), хранится на моем основном диске, который представляет собой старый IDE-диск объемом 40 ГБ. Внутри этой папки есть символические ссылки на другие папки в моей системе, две из которых на самом деле находятся на моем диске SATA емкостью 1 ТБ.
В Windows у меня есть общий ресурс Samba, сопоставленный с буквой диска, и в нем говорится, что осталось только 9 ГБ (именно столько места осталось на корневом диске сервера (диск 40 ГБ)).
Могу ли я сказать Samba, чтобы она сообщала, что осталось другое количество свободного места? Я пытался сделать резервную копию Windows в одной из папок, которые символически связаны с диском емкостью 1 ТБ (да, на этом диске осталось достаточно места), но Windows не позволяет мне, потому что думает, что осталось недостаточно свободного места.
На самом деле я мало что могу сделать, кроме подделывая это.
Скопировано из связанной статьи.
В вашем smb.conf задайте для команды dfree сценарий. Параметр ожидает команду, которая вернет общее количество блоков, за которым следует доступное количество блоков. Документы самбы рекомендуют следующее:
[global]
dfree command = /usr/local/bin/dfree
Скрипт / usr / local / bin / dfree
#!/bin/sh
df $1 | tail -1 | awk '{print $2" "$4}'
мужчина smb.conf раздел 'команда dfree'
Следующее содержимое представляет собой полный снимок, сделанный непосредственно из https://web.archive.org/web/20150410132141/http://www.subvs.co.uk/faking_available_disk_space_samba который является копией того, что существовало по исходному адресу веб-страницы для будущих посетителей Интернета. https://m.xkcd.com/979/ на самом деле.
Я запускал exmerge на сервере обмена, и единственное место, где я смог разместить экспортированные файлы pst, был старый плохо отработанный сервер ubuntu. В нем было необходимое свободное пространство, так что это был всего лишь случай внесения нескольких изменений в smb.conf, и он пошел. Первый запуск прошел нормально, но чуть позже я захотел повторить этот запуск. Exmerge выполнит своего рода синхронизацию, если pst-файлы, соответствующие почтовым ящикам, которые он экспортирует, уже существуют, поэтому, когда он сказал, что ему нуженsed60G, на самом деле этого не было, потому что 59G уже есть.
Конечно, он откажется запускаться, если не будет достаточно места для полного экспорта (если нет «принудительного» переключателя, о котором я не знаю?). Приходит самба и кое-что, что на самом деле не было создано для этой работы, но отлично работает: команда dfree. Это позволит вам обманом заставить подключенные машины поверить в то, что у вас есть любое дисковое пространство, которое вам нужно.
Параметр ожидает команду, которая вернет общее количество блоков, за которым следует доступное количество блоков. Документы самбы рекомендуют следующее:
#!/bin/sh
df $1 | tail -1 | awk '{print $2" "$4}'
а затем в вашем smb.conf:
[global]
dfree command = /usr/local/bin/dfree
Конечно, теперь у вас есть выбор, как подделать доступное дисковое пространство, о котором сообщает samba, вы можете сделать команду просто катать текстовый файл с нужными числами или, что еще проще, просто сделать его похожим на мигающий диск с такое же количество общего и доступного места:
#!/bin/sh
df $1 | tail -1 | awk '{print $2" "$2}'
Путем хитрого изменения команды он сообщает, что свободное пространство равно общему. Вероятно, не лучшая идея оставлять это так, но в крайнем случае это действительно может помочь!