Skryptowane rozwiązania
1. Automatycznie aktualizowany widok biblioteki
Za pomocą skryptu w tle poniżej możesz skonfigurować katalog, wirtualnie pokazujący połączoną zawartość dowolnej liczby innych folderów.
Zawartość folderu (istniejącego dowiązań symbolicznych) jest dynamicznie synchronizowana ze (połączonymi) źródłami.
Jak to działa
Skrypt okresowo wyświetla zawartość folderów źródłowych, a także folder docelowy dla widoku „biblioteki”.
- Jeśli w jednym z folderów źródłowych znajdują się elementy, które nie istnieją w bibliotece, w bibliotece zostanie utworzone dowiązanie symboliczne.
- jeśli w bibliotece znajdują się elementy, które nie istnieją w żadnym folderze źródłowym (w rzeczywistości uszkodzony link), element jest usuwany z biblioteki.
Porównywanie list jest wyjątkowo lekkie (programowo) i mało zasobne. Testowałem skrypt z dużo szybszą pętlą niż w poniższym skrypcie, z liczbą elementów około 500 na jednym poziomie katalogu, bez żadnego dodatkowego (zauważalnego) obciążenia.
Skrypt i jak go używać
#!/usr/bin/env python3
import os
import sys
import time
# --- set loop time below (or leave it as it is)
loop = 5
# ---
# don't change anything below
target = sys.argv[1]
sources = sys.argv[2:]
while True:
currlinks = os.listdir(target)
compare = []
for dr in sources:
for f in os.listdir(dr):
compare.append(f)
if not f in currlinks:
# create link
os.symlink(dr+"/"+f, target+"/"+f)
# clean up possible broken links
for link in currlinks:
if not link in compare:
os.remove(target+"/"+link)
# loop time
time.sleep(loop)
- Skopiuj skrypt do pustego pliku i zapisz go jako
library_view.py
Testuj - uruchom skrypt z docelowym katalogiem, aby zobaczyć połączone katalogi jako pierwszy argument , katalogi źródłowe jako kolejne argumenty, np .:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
Ta komenda pokaże zawartość folderów source1
i source2
in virtual_library
.
Jeśli wszystko działa poprawnie, dodaj go do aplikacji startowych: Dash> Aplikacje startowe> Dodaj. Dodaj polecenie:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
Uwaga
Jak wspomniano, możesz dodać więcej niż dwa katalogi soure, jeśli chcesz.
2. Wersja ręczna
Jeśli z jakiegoś powodu nie chcesz używać skryptu w tle, możesz ręcznie zaktualizować (zsynchronizować) folder biblioteki, używając dokładnie tego samego polecenia pod klawiszem skrótu, używając poniższego skryptu:
#!/usr/bin/env python3
import os
import sys
target = sys.argv[1]
sources = sys.argv[2:]
currlinks = os.listdir(target)
compare = []
for dr in sources:
for f in os.listdir(dr):
compare.append(f)
if not f in currlinks:
# create link
os.symlink(dr+"/"+f, target+"/"+f)
# clean up possible broken links
for link in currlinks:
if not link in compare:
os.remove(target+"/"+link)
Wybierz: Ustawienia systemu> „Klawiatura”> „Skróty”> „Skróty niestandardowe”. Kliknij „+” i dodaj polecenie do wybranej kombinacji klawiszy:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
sudo mount --bind olddir newdir
ale prawdopodobnie nie jest to dokładnie to, czego szukasz ...