내 RPi에서 실행 중인 tvheadend가 있고 녹화 내용을 로컬에 저장하는 동안 디스크가 80% 가득 차면 해당 내용을 SSHfs 파일 저장소로 이동하고 심볼릭 링크를 새 위치로 이동합니다.
쉘 스크립트에서 로컬 심볼릭 링크가 삭제될 때(예: 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>
이 코드는 심볼릭 링크가 존재하고 실제로 심볼릭 링크인지 테스트합니다. 그렇지 않은 경우 삭제됩니다.