모든 음악은 1TB USB 드라이브에 저장되어 있으며 $HOME/Music/
이를 랩톱 중 하나에 연결하면 udev 규칙을 통해 심볼릭 링크됩니다.
내가 겪고 있는 문제는 이것이 디렉토리가 있는 곳에서 잘 작동한다는 것입니다.아니요랩톱에 존재하지만 랩톱에 동일한 이름을 가진 기존 디렉터리(Artist/Album/*.flac)가 있는 필요한 트리를 생성하지 않습니다.
현재 실행중인 스크립트는 다음과 같습니다.
#!/usr/bin/env bash
# repopulate music links when drive plugged in
shopt -s nullglob
export DISPLAY=:0
export XAUTHORITY=/home/jason/.Xauthority
music=(/media/Apollo/Music/*)
find /home/jason/Music -type l -exec rm {} \;
for dirs in "${music[@]}"; do
ln -s "$dirs" /home/jason/Music/ 2>/dev/null
done
status1=$?
mpc update &>/dev/null
status2=$?
if [[ "$status1" -eq 0 && "$status2" -eq 0 ]]; then
printf "%s\n" "Music directory updated" | dzen2 -p 3
fi
디렉토리가 노트북과 USB 드라이브 모두에 존재하지만 내용이 약간 다르고 파일 심볼릭 링크가 올바른지 어떻게 확인할 수 있습니까? 예를 들어:
USB 드라이브:
음악 -- Matthew Shipp -- 목가적인 평온 -- 트랙 1 -- 트랙 2 등... -- 포메이션 -- 트랙 1 -- 트랙 2 등... --균형--트랙 1 -- 트랙 2 등...
랩탑:
음악 -- Matthew Shipp -- 목가적인 평온 -- 트랙 1 -- 트랙 2 등...
이 경우 Strata 또는 Equilibrium 앨범에 대한 심볼릭 링크가 생성되지 않습니다. 아마도 상위 디렉터리(Matthew Shipp)가 존재하기 때문일 것입니다.
rsync
내 노트북에는 공간이 제한되어 있고 심볼릭 링크를 따라갈 수 있으므로 실제 데이터를 복사하는 데 사용하고 싶지 않습니다 mpd
. 파일을 복사할 필요가 없습니다.
내 노트북의 기존 디렉토리에 심볼릭 링크를 전파하도록 스크립트를 조정할 수 있습니까?
답변1
귀하의 주요 목표는 로컬 및 외부 음악 폴더를 통합하여 보는 것이기 때문에 공동 설치가 필요하다고 생각합니다.통과하다overlayfs
특히 파일이 기록되지 않은 경우 사용할 수 있습니다.
이전 커널 버전(<3.18)에서 기본 명령은 다음과 같습니다.
mount -t overlayfs -o lowerdir=/read/only/directory,upperdir=/writeable/directory overlayfs /mount/point
예를 들어:
$ ls Documents
374620-63301.pdf My Kindle Content scan0005.jpg
BPMN2_0_Poster_EN.pdf scan0003.jpg StrongDC++
$ ls devel
cse ossec ubuntu-14.04-desktop-amd64-ssh.iso
nexus scripts zsh-syntax-highlighting
$ sudo mount -t overlayfs -o lowerdir=$PWD/Documents,upperdir=$PWD/devel overlayfs ~/Documents
$ ls Documents
374620-63301.pdf scan0003.jpg
BPMN2_0_Poster_EN.pdf scan0005.jpg
cse scripts
My Kindle Content StrongDC++
nexus ubuntu-14.04-desktop-amd64-ssh.iso
ossec zsh-syntax-highlighting
sudo
한 가지 단점은 신중한 규칙을 사용하여 해결될 수 있다는 필요성입니다 NOPASSWD
.
반면제이슨의 블로그 게시물, 최신 커널의 mount 명령은 overlay
대신 파일 시스템 으로 사용되도록 변경되고 overlayfs
첨부된 workdir
.커널 문서이제 다음과 같이 코드화하세요.
마운트할 때 마운트 옵션 "lowerdir" 및 "upperdir"로 지정된 두 디렉터리는 병합된 디렉터리로 결합됩니다.
mount -t overlay overlay -olowerdir=/lower,upperdir=/upper,\ workdir=/work /merged
"workdir"은 upperdir과 동일한 파일 시스템의 빈 디렉터리여야 합니다.
답변2
당신은 또한 사용할 수 있습니다누우 스토우, 심볼릭 링크 팜 관리자.
다음 레이아웃을 가정합니다.
.
├── drive
│ ├── a
│ │ ├── b
│ │ │ └── bar
│ │ └── c
│ │ └── baz
│ └── b
└── music
└── a
└── b
└── foo
구현하다:$ stow --target music --dir drive .
결과:
.
├── drive
│ ├── a
│ │ ├── b
│ │ │ └── bar
│ │ └── c
│ │ └── baz
│ └── b
└── music
├── a
│ ├── b
│ │ ├── bar -> ../../../drive/a/b/bar
│ │ └── foo
│ └── c -> ../../drive/a/c
└── b -> ../drive/b
답변3
또 다른 옵션은 Xorg를 사용하는 것입니다 lndir
.
lndir source target
알아채다소스는 다음과 같아야 합니다.목표에 비해. music
다음과 같은 디렉토리 에 있는 경우 drive
다음을 의미합니다.
lndir ../drive music
왜냐하면 당신이 위치해 있다면 drive
.../drive
music