我的 RPi 上运行着 tvheadend,虽然它在本地存储录制内容,但当磁盘达到 80% 满时,它会将它们移至 SSHfs 文件存储并符号链接到新位置。
我正在寻找一种方法,在 shell 脚本中,当本地符号链接被删除时删除远程文件(例如,我通过 Kodi 删除记录),可能会将其限制为 .ts 文件。
答案1
做出几个假设:
- 远程文件名与本地文件名/符号链接相同
- 本地文件都在一个目录中
- 远程文件都在一个目录中
然后,您可以列出远程文件并删除任何没有本地文件或符号链接的文件。像这样的东西可以工作
#!/bin/bash
#
rmt=/path/to/sshfs/storage
lcl=/path/to/local/storage
for itempath in "$rmt"/*.ts
do
itemfile="${itempath/*\/}"
if test ! -h "$lcl/$itemfile"
then
echo "Removing remote $itemfile with no local symlink" >&2
rm -f "$itempath"
fi
done
如果您只想删除特定目录中的所有本地悬空符号链接,您可以稍微简化代码:
#!/bin/bash
#
lcl=/path/to/local/storage
for item in "$lcl"/*.ts
do
if test -h "$item" -a ! -e "$item"
then
echo "Removing dangling symlink $item" >&2
rm -f "$item"
fi
done
答案2
如果我正确理解了这个问题,那么就可以:
test -h <symlink> || rm <remote file>
该代码测试是否存在并且实际上是一个符号链接。如果没有,将被删除。