심볼릭 링크가 사라지면 파일 삭제

심볼릭 링크가 사라지면 파일 삭제

내 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>

이 코드는 심볼릭 링크가 존재하고 실제로 심볼릭 링크인지 테스트합니다. 그렇지 않은 경우 삭제됩니다.

관련 정보