すべての音楽は1TB USBドライブに保存されており、ラップ$HOME/Music/
トップの1つに接続すると、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 アルバムへのシンボリックリンクは作成されません。おそらく、親ディレクトリが存在するからです。
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
1つの欠点は、慎重なルールを使用して解決できるという必要性ですNOPASSWD
。
一方ジェイソンのブログ投稿、最新のカーネルのmountコマンドは、代わりにoverlay
ファイルシステムとして使用されるように変更され、overlayfs
添付されていますworkdir
。カーネル文書それでは、次のようにコード化してください。
マウント時に、マウントオプション「lowerdir」と「upperdir」で指定された2つのディレクトリは、マージされたディレクトリに結合されます。
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