ফোল্ডারটিকে দুটি ফোল্ডারের প্রতীকী লিঙ্ক তৈরি করবেন?


10

/home/$USER/Musicউইন্ডোতে কোনও লাইব্রেরির মতোই উবুন্টুর ডিফল্ট মিউজিক ফোল্ডারটি অভিনয় করতে চাই। মূলত এটি অন্যান্য ফোল্ডারের বিষয়বস্তু সহ ভার্চুয়াল ফোল্ডার হবে।

আমার যুক্তিটি হ'ল রিদম বক্স কেবল নতুন সংগীতের জন্য একটি ফোল্ডার দেখবে। আমার সমস্ত সংগীত দুটি ফোল্ডারে থাকে /home/$USER/Dropbox/Musicএবং /home/$USER/Dropbox/New Music

এটি উবুন্টুর ডিফল্ট ফোল্ডারগুলিতে (ডকুমেন্টস, ছবি ইত্যাদি) অন্যান্য ড্রপবক্স ফোল্ডারগুলির সামগ্রী প্রদর্শন করতেও কার্যকর প্রমাণিত।

আমি অনুসন্ধান করেছিলাম এবং নিজে থেকে উত্তরটি সন্ধান করার চেষ্টা করেছি তবে কোনও লাভ হয়নি। আমি নিশ্চিত যে এটি সম্পাদন করার একটি উপায় আছে; আমি শুধু এটি মিস করছি।

আগাম ধন্যবাদ.


1
এতে 2 টি ফোল্ডার একসাথে আবদ্ধ করার ক্ষমতা রয়েছে: sudo mount --bind olddir newdirতবে এটি সম্ভবত আপনার পরে যা হয় না ...
অ্যান্ড্রু .46

@ অ্যান্ড্রু 66 mount --bindদুটি ভিন্ন মাউন্ট পয়েন্ট থেকে ফোল্ডারের একটি সেট অ্যাক্সেসের অনুমতি দেয়। ওপি একটি মাউন্ট পয়েন্ট থেকে দুটি সেট ফোল্ডার অ্যাক্সেস করতে চায়
এডিডি

@ এডিড: ওফস, আপনি অবশ্যই পুরোপুরি সঠিক ... গোলমালের জন্য দুঃখিত ...
অ্যান্ড্রু 66

আমি কোনও উপায় ভাবতে পারি, তবে এটির জন্য একটি ছোট পটভূমির স্ক্রিপ্ট প্রয়োজন। এটা কি গ্রহণযোগ্য হবে?
জ্যাকব Vlijm

@ জ্যাকবভিলিজম দয়া করে আমাকে বলুন না স্ক্রিপ্টটি ডিরেক্টরিতে কোনও ফাইল পাওয়া যায় কিনা তা পরীক্ষা করে দেখবে এবং তার পরে দুটি গন্তব্যগুলিতে অনুলিপি করবে ..
হিমাইল

উত্তর:


8

স্ক্রিপ্টযুক্ত সমাধান (গুলি)

1. স্বয়ংক্রিয়ভাবে লাইব্রেরি ভিউ আপডেট হয়েছে

নীচের ব্যাকগ্রাউন্ড স্ক্রিপ্টের সাহায্যে আপনি একটি ডিরেক্টরি সেটআপ করতে পারেন, অন্য ফোল্ডারের স্বেচ্ছাসেবী সংখ্যার সম্মিলিত সামগ্রী দেখিয়ে।

ফোল্ডারের সামগ্রী (সিমলিঙ্কগুলির বিদ্যমান) গতিশীলভাবে (সংযুক্ত) উত্সের সাথে সিঙ্ক্রোনাইজ করা হয়েছে।

কিভাবে এটা কাজ করে

স্ক্রিপ্টটি পর্যায়ক্রমে উত্স ফোল্ডারগুলির সামগ্রীর পাশাপাশি "লাইব্রেরি"-দেখার জন্য লক্ষ্যযুক্ত ফোল্ডারটি তালিকাভুক্ত করে।

  • সেখানে উৎস ফোল্ডার কোনো আইটেম, হন না লাইব্রেরিতে বিদ্যমান, একটি সিমবলিক লিঙ্ক লাইব্রেরিতে তৈরি করা হবে।
  • যদি সেখানে লাইব্রেরিতে আইটেম, হয় না উৎস ফোল্ডার (আসলে একটি ভাঙ্গা লিঙ্ক) কোনো বিদ্যমান, আইটেমের মুছে লাইব্রেরি থেকে।

এখানে চিত্র বর্ণনা লিখুন

তালিকার তুলনা করা অত্যন্ত হালকা ওজন (প্রোগ্রামিকভাবে) এবং সংস্থানগুলিতে কম। আমি স্ক্রিপ্টটি আরও দ্রুত লুপ দিয়ে তারপরে নিচের স্ক্রিপ্টটিতে পরীক্ষা করেছি, একক ডিরেক্টরি স্তরে প্রায় 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)
  1. স্ক্রিপ্টটি খালি ফাইলে অনুলিপি করুন, এটি সংরক্ষণ করুন library_view.py
  2. প্রথম আর্গুমেন্ট হিসাবে সংযুক্ত ডিরেক্টরিগুলি দেখার জন্য উত্স ডিরেক্টরিগুলি পরবর্তী আর্গুমেন্ট হিসাবে উদাহরণস্বরূপ: লক্ষ্যযুক্ত ডিরেক্টরিতে স্ক্রিপ্টটি পরীক্ষা করুন :

    python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
    

    এই কমান্ডটি ফোল্ডার source1এবং source2ইন- এর সামগ্রী প্রদর্শন করবে virtual_library

  3. যদি সমস্ত ঠিকঠাক কাজ করে তবে এটি স্টার্টআপ অ্যাপ্লিকেশনগুলিতে যুক্ত করুন: ড্যাশ> স্টার্টআপ অ্যাপ্লিকেশন> যুক্ত করুন। কমান্ড যুক্ত করুন:

    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

জ্যাকব, আমার পক্ষে সব বেরিয়ে যাওয়ার জন্য এবং আমার জন্য একটি স্ক্রিপ্ট লেখার জন্য আপনাকে সত্যিই ধন্যবাদ জানাতে হবে। এখন আমাকে এটি ব্যবহার করতে হবে, আপনি কাজটি করেছেন। :-)। আমি সপ্তাহান্তে এই শট দেব। অনেক ধন্যবাদ.
ড্যান

1
@ ড্যানহটার ধন্যবাদ! আশা করি আপনাদের ভাল লাগবে যদি কিছু থাকে তবে দয়া করে আমাকে জানান।
জ্যাকব ভিলিজম

হাই জ্যাকব, আমি কেবল উবুন্টু জিনোমে 16.10 এ আপগ্রেড করেছি এই স্ক্রিপ্টটি এখনও পুরোপুরি কার্যকরভাবে কাজ করে। বর্তমানে এটি সঙ্গীত, ফটো এবং নথির জন্য ব্যবহার করছে! আবার আপনাকে ধন্যবাদ.
DanTheManDRH

@ ড্যানহট্টার উল্লেখ করার জন্য ধন্যবাদ, এটি শুনে খুব ভাল লাগল!
জ্যাকব Vlijm

3

আপনি এটির unionfs-fuseজন্য ইনস্টল করতে পারেন :

sudo apt-get install unionfs-fuse 

মাউন্ট:

unionfs-fuse /folder1=RW:/folder2=RW /mount/point

এটি ফোল্ডার 1 এবং ফোল্ডার 2 (বা আপনি চাইলে আরও কিছু) থেকে আপনার মাউন্ট পয়েন্টে সমস্ত বিষয়বস্তুকে গোষ্ঠীভুক্ত করবেন

Umounting:

sudo umount /mount/point
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.