우분투의 기본 음악 폴더 /home/$USER/Music
가 Windows의 라이브러리처럼 작동하도록하고 싶습니다 . 기본적으로 다른 폴더의 내용이 들어있는 가상 폴더입니다.
내 근거는 리듬 박스는 새로운 음악에 대한 하나의 폴더 만 볼 것입니다. 내 음악은 모두 두 개의 폴더 /home/$USER/Dropbox/Music
에 /home/$USER/Dropbox/New Music
있습니다.
이것은 우분투의 기본 폴더 (문서, 그림 등)에 다른 Dropbox 폴더의 내용을 보여주는 데 유용합니다.
나는 검색하고 아무 소용없이 스스로 답을 찾으려고 노력했다. 나는 이것을 달성 할 수있는 방법이 있다고 확신한다. 방금 놓 쳤어요.
미리 감사드립니다.
답변
스크립트 솔루션
1. 자동 업데이트 라이브러리 뷰
아래의 백그라운드 스크립트를 사용하면 임의의 수의 다른 폴더의 결합 된 내용을 실제로 표시하는 디렉토리를 설정할 수 있습니다.
폴더의 내용 (기존의 심볼릭 링크)은 (결합 된) 소스와 동적으로 동기화됩니다.
작동 원리
스크립트는 “라이브러리”-view의 대상 폴더뿐만 아니라 소스 폴더의 내용을 주기적으로 나열합니다.
- 라이브러리에 없는 소스 폴더에 항목이 있으면 라이브러리에 심볼릭 링크가 생성됩니다.
- 소스 폴더에 존재 하지 않는 라이브러리에 항목이있는 경우 (실제로는 끊어진 링크) 해당 항목이 라이브러리에서 제거됩니다 .
목록을 비교하는 것은 프로그래밍 방식으로 매우 가볍고 리소스가 적습니다. 아래 디렉토리에서 훨씬 빠른 루프로 스크립트를 테스트했으며 단일 디렉토리 레벨에서 약 500 개의 항목을 추가 (눈에 띄지 않는)로드하지 않고 테스트했습니다.
스크립트와 사용법
#!/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)
- 스크립트를 빈 파일로 복사하여 다른 이름으로 저장하십시오.
library_view.py
-
대상 디렉토리 에서 스크립트를 테스트하여 첫 번째 인수 로 소스 디렉토리의 다음 디렉토리로 결합 된 디렉토리를 봅니다 ( 예 :
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
이 명령은 폴더의 내용이 표시됩니다
source1
와source2
의를virtual_library
. -
모두 제대로 작동하면 대시> 시작 응용 프로그램> 추가와 같은 시작 응용 프로그램에 추가하십시오. 다음 명령을 추가하십시오 :
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
노트
언급했듯이 원하는 경우 두 개 이상의 소스 디렉토리를 추가 할 수 있습니다.
2. 수동 버전
어떤 이유로 백그라운드 스크립트를 사용하지 않으려면 아래 스크립트를 사용하여 바로 가기 키에서 정확히 동일한 명령을 사용하여 라이브러리 폴더를 수동으로 업데이트 (동기화) 할 수 있습니다.
#!/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)
시스템 설정> “키보드”> “바로 가기”> “사용자 정의 바로 가기”를 선택하십시오. “+”를 클릭하고 원하는 키 조합을 입력하십시오 :
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
답변
unionfs-fuse
이를 위해 설치할 수 있습니다 .
sudo apt-get install unionfs-fuse
설치:
unionfs-fuse /folder1=RW:/folder2=RW /mount/point
folder1 및 folder2 (또는 원하는 경우 이상)의 모든 컨텐츠를 마운트 지점으로 그룹화합니다.
장착 :
sudo umount /mount/point