Linux Samba 文件软连接问题解决

背景

我个人收集了310GB的 计算机后端相关PDF电子书,手上的iPad存储是256GB, 实际可用的是240G。
我想把部分电子书 同步到iPad上。

iPad上的PDF expert自带有samba同步功能, 真心点赞!!!

思路: 为了减少副本占用存储空间, 打算采用文件软连接 + samba来实现。

那怎么把310GB的文件 局部软连接 瘦身为240GB 呢?

环境

1
2
3
4
5
6
7
root@debian:~# smbd --version
Version 4.13.13-Debian
root@debian:~#

root@debian:~# nmbd --version
Version 4.13.13-Debian
root@debian:~#

创建 软链接link

脚本

  1. 先将所有文件创建为软连接
  2. 精简部分软连接
  3. 测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
chunli@debian:~$ cat link_pdf.sh
DIR="ipad_book"
FROM="/mnt/chunli/book/"

rm -rf $DIR
mkdir $DIR


find $FROM -type f -print0 | sed "s@${FROM}/@@g" | xargs -0 -i dirname {} | tr '\n' '\0' | xargs -0 -i mkdir -p ${DIR}/{}
find $FROM -type f -print0 | sed "s@${FROM}/@@g" | xargs -0 -i ln -fs ${FROM}/{} ${DIR}/{}



echo "原始大小"
du -sLh $DIR

rm -rf ${DIR}/XXXXXXX
rm -rf ${DIR}/00_阅读软件
rm -rf ${DIR}/07_医学
rm -rf ${DIR}/08_金融

echo "精简之后"
du -sLh $DIR
chunli@debian:~$
`

效果

设置Samab

这里有一个坑, 官网只说要配置3项,但没说干扰项。

allow insecure wide links = yes
wide links = yes
unix extensions = no
这三项必须在[global]的第一项,否则其他项会有干扰。

include = /etc/samba/smb.conf.%U
这是我自己设定的, 每个用户的配置文件独立

1
2
3
4
5
6
7
8
9
root@debian:~# vim smb.conf
# 紧邻 global 下面追加. 不能有其他项,以免干扰。
[global]
allow insecure wide links = yes
wide links = yes
unix extensions = no

# 设定每个用户使用自己独立的配置文件
include = /etc/samba/smb.conf.%U

用户的配置文件

1
2
3
4
5
6
7
8
9
10
11
root@debian:~# cat /etc/samba/smb.conf.chunli
[02_Book]
path = /mnt/chunli/book/
writeable = yes
create mask = 0664
directory mask = 0775

[05_iPad]
path = /home/chunli/ipad_book/
writeable = yes
root@debian:~#

重启服务

1
2
root@debian:~# systemctl  restart nmbd
root@debian:~# systemctl restart smbd

Windows 打开文件

完结

iPad 使用 PDF expert 同步就不说了, 比较简单。