/ স্টোরেজ / এমুলেটেড / 0 / কি?


40

সম্প্রতি, আমি বুঝতে পেরেছি যে আমি যদি /sdcard/Downloadএটি থেকে ফাইলগুলি মুছি তবে ফাইলগুলি মুছে ফেলা হবে /storage/emulated/0/Download। এবং আমি যদি এতে ফাইলগুলি যুক্ত করি তবে /sdcard/Downloadসেগুলিতে এটির সদৃশ /storage/emulated/0/Download

তাহলে কী /storage/emulated/0/? আমাদের অ্যান্ড্রয়েড ফাইল সিস্টেমে কী উদ্দেশ্যে এটি রয়েছে?

উত্তর:


40

/storage/emulated/0/Download ফাইলগুলির আসল পথ।

/sdcard/Download এর আসল পথে একটি সিমিলিংক /storage/emulated/0/Download

তবে প্রকৃত ফাইলগুলি ফাইল সিস্টেমে অবস্থিত /data/mediaযা পরে মাউন্ট করা হয় /storage/emulated/0(এবং প্রায়শই অন্যান্য মাউন্টপয়েন্টগুলিও)

একটি সিমিলিংক কম্পিউটিংয়ে প্রতীকী লিঙ্কটি এমন কোনও ফাইলের জন্য একটি শব্দ যা কোনও পরম বা আপেক্ষিক পাথ আকারে অন্য ফাইল বা ডিরেক্টরিতে একটি রেফারেন্স উপস্থিত থাকে এবং এটি পথের নামটি সমাধানকে প্রভাবিত করে। প্রতীক লিঙ্কগুলি ডিসি এবং ডেটা জেনারেলের আরডিওএস থেকে মিনিকম্পিউটার অপারেটিং সিস্টেমে 1978 এর মধ্যে উপস্থিত ছিল।


15
এই উত্তরটি কেন এটি "অনুকরণীয়" বলে কিছুটা ব্যাখ্যা করলে এই উত্তরটি আরও ভাল হবে। আমি বিশ্বাস করি অ্যান্ড্রয়েড একটি ফ্যাট এফএস নকল করার জন্য কিছু হ্যাক করে যা আসলে আরও ভাল কিছু দ্বারা সমর্থিত হয় তবে আমি বিশদটি জানি না এবং নতুন কিছু শেখার প্রত্যাশায় এই প্রশ্নটি ক্লিক করেছি।
আর ..

4
@ আর .. "এমুলেটেড" আইএমএইচও এটি "ইমুলেটেড এসডি কার্ড" (সত্যিকারের নয়) এর প্রতি ইঙ্গিত করে।
ইজজী

10
@ আর .. এটি এসডিকার্ডএস ব্যবহার করে। : এখানে এটি সম্পর্কে একটি চমৎকার নিবন্ধ এর xda-developers.com/... ( সংরক্ষণাগার )
Nonny আমেরিকার হরিণবিশেষ

16

/storage/emulated/0/প্রকৃতপক্ষে নয় বরং /data/media/0/একটি অনুকরণীয় / ভার্চুয়াল ফাইল সিস্টেমের মাধ্যমে উদ্ভাসিত হয়।

এটি আমার পূর্ববর্তী উত্তরের রেফারেন্স সহ এখানে , তবে আরও প্রাসঙ্গিক বিশদ সহ।

অ্যান্ড্রয়েড স্টোরেজ:

উপর অ্যান্ড্রয়েড 5 :

/sdcard >S> /storage/emulated/legacy >S> /mnt/shell/emulated/0
/mnt/shell/emulated >E> /data/media

উপর অ্যান্ড্রয়েড 6+ :

# for (Java) Android apps (running inside zygote virtual machine)
# "/storage to VIEW" bind mount is inside a separate mount namespace for every app
/sdcard >S> /storage/self/primary
/storage/self >B> /mnt/user/USER-ID
/mnt/user/USER-ID/primary >S> /storage/emulated/USER-ID
/storage/emulated >B> /mnt/runtime/VIEW/emulated
/mnt/runtime/VIEW/emulated >E> /data/media

# for services/daemons/processes in root/global namespace (VIEW = default)
/sdcard >S> /storage/self/primary
/storage >B> /mnt/runtime/default
/mnt/runtime/default/self/primary >S> /mnt/user/USER-ID/primary
/mnt/user/USER-ID/primary >S> /storage/emulated/USER-ID
/storage/emulated >B> /mnt/runtime/default/emulated
/mnt/runtime/default/emulated >E> /data/media

* >S>সিমবলিক লিঙ্ক জন্য, >E>emulated এবং >B>জন্য বেঁধে মাউন্ট
* USER-IDক্ষেত্রে বর্তমান ব্যবহারকারীর Multiple Usersবা Work Profile, সাধারণত 0অর্থাত ডিভাইসে মালিকের
* VIEWএক readবা (permission.READ_EXTERNAL_STORAGE সঙ্গে অ্যাপসের জন্য) write(permission.WRITE_EXTERNAL_STORAGE) অথবা default(রুট চলমান প্রসেসের জন্য / গ্লোবাল মাউন্ট নেমস্পেস অর্থাত্ জাইগোটের বাইরের অংশে)
* পূর্ববর্তী অ্যান্ড্রয়েড সংস্করণগুলিতে সামান্য পার্থক্য ছিল তবে প্রয়োগের পরে থেকেই এমুলেশন ধারণাটি একই ছিল।
* অ্যান্ড্রয়েডের মাউন্ট নেমস্পেস বাস্তবায়নের বিষয়ে আরও কিছু বিশদের জন্য এই উত্তরটি দেখুন

সংক্ষিপ্ত, ইন /sdcardএবং /storage/emulated/0যা একটি চর্বি / VFAT / FAT32 ফাইল সিস্টেম প্রতিনিধিত্ব - - বিন্দু প্রতি /data/media/0(অথবা /mnt/expand/[UUID]/media/0ক্ষেত্রে গ্রহণযোগ্য সংগ্রহস্থল মাধ্যমে) FUSEবা sdcardfsএমুলেশন।

অ্যান্ড্রয়েড নির্দিষ্ট না হলেও সাধারণত লিনাক্স সম্পর্কিত, সিমিলিংক এবং বাইন্ড মাউন্ট (দেখুন "একটি বাইন্ড মাউন্ট তৈরি করা") এই প্রশ্নের ক্ষেত্রের বাইরে, কারণ প্রশ্নটি মূলত ইমুলেশন অংশ সম্পর্কে।

এমুলেশন:

অনুকরণ এখানে কেন? এমুলেটেড ফাইল সিস্টেম হ'ল আসল ফাইল সিস্টেমের ( ext4বা f2fs) একটি বিমূর্ত স্তর যা মূলত দুটি উদ্দেশ্যে পরিবেশন করে:

  • পিসিগুলিতে অ্যান্ড্রয়েড ডিভাইসের ইউএসবি সংযোগ ফিরিয়ে আনুন (এমটিপি এর মাধ্যমে প্রয়োগ করা হয়েছে এখন এক দিন)
  • ব্যবহারকারীর ব্যক্তিগত মিডিয়া এবং এসডি কার্ডের অন্যান্য অ্যাপ্লিকেশনগুলির ডেটাতে অ্যাপ্লিকেশন / প্রক্রিয়াগুলির অননুমোদিত অ্যাক্সেসকে সীমাবদ্ধ করুন।

বিশদগুলির জন্য অ্যান্ড্রয়েডের স্টোরেজ জার্নি পড়ুন , সারাংশটি হ'ল:

প্রাথমিক অ্যান্ড্রয়েড ডিভাইসগুলি অভ্যন্তরীণ স্টোরেজে সংক্ষিপ্ত ছিল এবং (শারীরিকভাবে) বাহ্যিক এসডি কার্ডের উপর নির্ভর করেছিল যা বেশিরভাগ পিসির সাথে সামঞ্জস্যতা নিশ্চিত করতে ফাইল সিস্টেমের ফ্যাট পরিবার ব্যবহার করে (পিসি বিশ্বের মাইক্রোসফ্টের আধিপত্য বোঝায়)।
অভ্যন্তরীণ স্টোরেজ আকারে বেড়ে গেলে, একই ফাইল সিস্টেমটি অভ্যন্তরীণ (এখনও "বাহ্যিক" নামে পরিচিত) এসডি কার্ডে স্থানান্তরিত হয়।
তবে এফএটি / ভিএফএটি বাস্তবায়নে দুটি প্রধান সমস্যা ছিল যা গুগল ধীরে ধীরে সমাধান করেছে:

  • এই দিনগুলিতে আমরা যেমন একটি ইউএসবি ড্রাইভ সংযোগ করি ঠিক তেমনই অ্যান্ড্রয়েড ডিভাইসগুলি পিসিগুলির সাথে সরাসরি ( ইউএসবি মাস স্টোরেজ ) সংযুক্ত ছিল। ইউএমএস ব্লক স্তরে ডিভাইসটি উন্মোচিত করে এবং অ্যান্ড্রয়েড ফ্রেমওয়ার্ক (আন-মাউন্টস) থেকে এসডি কার্ডটি সংযোগ বিচ্ছিন্ন করে, ফলে পুরো ডেটা অ্যাপ্লিকেশনগুলিতে অনুপলব্ধ হয়ে যায় এবং সম্ভবত অনেকগুলি কার্যকারিতা ভঙ্গ করে।
  • ফ্যাট (হচ্ছে উইন্ডোজ 'উন্নয়ন দিন প্রিয়) ইউনিক্স অনুমতি (মোড, ইউআইডি, gid এবং অনুরূপভাবে জোরদার করার জন্য ডিজাইন করা হয়নি symlinks , এবং ioctlsমত FS_IOC_FIEMAP)। সুতরাং, এসডি কার্ডের সমস্ত ডেটা সমস্ত অ্যাপ্লিকেশনের জন্য উপলব্ধ ছিল (যেহেতু প্রতিটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনটি ইউএনআইএক্স / লিনাক্স ব্যবহারকারী এবং কোনও ইউআইডি রয়েছে) কোনও বিধিনিষেধ ছাড়াই গুরুতর গোপনীয়তা এবং সুরক্ষা উদ্বেগ উত্থাপন করে।

এই দুটি বিষয়ই অনুকরণের মাধ্যমে সম্বোধন করা হয়েছিল:

  • প্রকৃত এসডি কার্ড /dataস্টোরেজটি পার্টিশনে স্থানান্তরিত হয়েছিল (বা কিছু ডিভাইসে পূর্বে স্বতন্ত্র / এসডিকার্ড পার্টিশন) যা ext4ফাইল সিস্টেম (ধীরে ধীরে প্রতিস্থাপন করা হয় f2fs) ধারণ করে , ইউনিক্স অনুমতিগুলি সম্পূর্ণরূপে প্রয়োগ করে।
  • ইউএমএস ব্যবহার করে তৈরি করা এই নকশাটি অসম্ভব, কারণ /dataআরও দুটি কারণে পুরো পার্টিশনটি পিসির কাছে প্রকাশ করা যায়নি: (1)এতে অনেকগুলি সেটিংস এবং অ্যাপ্লিকেশনগুলির ডেটা রয়েছে যা অন্যান্য অ্যাপ্লিকেশন এবং সেইসাথে মানব ব্যবহারকারীদের থেকে সুরক্ষিত থাকতে পারে। (2)লিনাক্স ফাইল সিস্টেমগুলি উইন্ডোজ দ্বারা সমর্থিত নয়।
    সুতরাং ইউএমএস মিডিয়া স্থানান্তর প্রোটোকল দ্বারা প্রতিস্থাপিত হয়েছিল যা পিটিপি-র একটি ক্লায়েন্ট-সার্ভার টাইপ এক্সটেনশন - এটি ইতিমধ্যে প্রতিষ্ঠিত একটি প্রোটোকল। এমটিপি ব্লক ডিভাইস প্রকাশ করে না তবে সফ্টওয়্যার স্ট্যাকের মাধ্যমে কাজ করে। এমটিপি হোস্ট অ্যান্ড্রয়েডে কোনও অ্যাপ্লিকেশন ( android.process.media) সম্পূর্ণ অ্যান্ড্রয়েড ফ্রেমওয়ার্কে স্যান্ডবক্সযুক্ত হিসাবে চালিত হয় , কোনও বাড়ানো কাজ করতে সক্ষম নয়।

এখন অ্যাপসগুলি (এবং এমটিপি, যা এটিও একটি অ্যাপ্লিকেশন) /data/mediaএকই সময়ে উভয় উদ্দেশ্য অর্জনের জন্য নীচে অনুমতি চেক প্রয়োগ করা এবং উপরের পৃষ্ঠের এফএটি ফাইল সিস্টেমের মতো দেখতে উভয় উদ্দেশ্য অর্জনের পরিবর্তে এমুলেটেড স্টোরেজের সাথে যোগাযোগ করে।

গুগল FUSE এর কমতিগুলি কাটিয়ে উঠতে এখন sdcardfs এর মাধ্যমে অনুকরণ বাস্তবায়ন করছে ; একটি বড় হ'ল ইনপুট / আউটপুট ওভারহেড অর্থাত্ পঠন / লেখার গতি উন্নত করা।

বাহ্যিক স্টোরেজ অনুমতি:
ধারণা সরকারী এবং বাহ্যিক সঞ্চয় প্রাইভেট ফাইল : একটি উদাহরণ ব্যবহার প্রদর্শিত করা যাবে
Termux অ্যাপ্লিকেশন ইনস্টল করুন।
ডিরেক্টরি তৈরি করুন /sdcard/Android/data/com.termux/test_dirএবং /sdcard/test_dir
ফাইল তৈরি করুন /sdcard/Android/data/com.termux/test_fileএবং /sdcard/Android/data/com.termux/test_file
নিম্নলিখিত আদেশগুলি কার্যকর করুন:

without_storage_perm * আপনার হোয়াটসঅ্যাপ ইনস্টল করা উচিত বা অন্য কোনও অ্যাপের ব্যক্তিগত ফোল্ডারটি নির্বাচন করা উচিত।

এখন জোর করে Termux অ্যাপ্লিকেশন বন্ধ করুন এবং স্টোরেজ অনুমতি প্রদান করুন । কমান্ডগুলি আবার কার্যকর করুন:

with_storage_perm

একই ফাইল এবং ডিরেক্টরিগুলির অনুমতিগুলির পার্থক্যটি দেখুন। দেশীয় লিনাক্স ফাইল সিস্টেমে অনুকরণ ব্যতীত এটি সহজেই সম্ভব হবে না বলে মনে হয় যখন একসাথে শত শত অ্যাপ (ব্যবহারকারী) ডিল করার জন্য রয়েছে। এটি সেই ফাইলসিস্টেম এমুলেশন যা একই ফাইলকে একই সময়ে তিনটি পৃথক অনুমতি সহ প্রকৃত ফাইল সিস্টেমে মূল অনুমতিগুলির চেয়ে পৃথক করে উন্মুক্ত করতে দেয়:

# touch /data/media/0/test_file

# stat -c '%a %u %g %n' /data/media/0/test_file
644 1023 1023 /data/media/0/test_file

# stat -c '%a %u %g %n' /mnt/runtime/*/emulated/0/test_file
660 0 1015 /mnt/runtime/default/emulated/0/test_file
640 0 9997 /mnt/runtime/read/emulated/0/test_file
660 0 9997 /mnt/runtime/write/emulated/0/test_file

এছাড়াও দেখুন "u # _Eebodybody" ইউআইডি কী?

সম্পর্কিত:


2
+1 টি। আমি মনে করি এমটিপি সম্পর্কে আমি অংশটি ভুল বুঝি। এমটিপিকে কাজ করতে লক্ষ্য ডিভাইসে কোনও ফ্যাট ফাইল সিস্টেমের প্রয়োজন? যদি তা না হয়, তবে গুগল কি ফুস প্রয়োগের জন্য এক্সট 4 ফাইল সিস্টেম ব্যবহার করতে পারে না কারণ এটি কোনও অ্যাপ্লিকেশনকে ভাগ করা স্টোরেজে কেবল তাদের ডেটা অ্যাক্সেস করার জন্য প্রয়োজনীয় অনুমতি চেক প্রয়োগ করতে পারে?
Firelord

1
@ ফায়ারলর্ড এমুলেশন নিয়ে আলোচনা করার সময় এমটিপি প্রয়োগের দিকে মনোনিবেশ করেন না। গুগল ইতিমধ্যে কিছু অ্যান্ড্রয়েড চাহিদা মেটাতে এমটিপি প্রোটোকল পরিবর্তন করেছে এবং সম্ভবত তারা কিছু স্থানীয় লিনাক্স ফাইল সিস্টেমের মাধ্যমে এটি প্রয়োগ করতে পারে। তবে মূল বিষয়টি হ'ল আমাদের এমন একটি দরকার FAT-like permission-less filesystemযা অ্যান্ড্রয়েডের প্রথম দিনগুলিতে পশ্চাদপটে সামঞ্জস্যতা নিশ্চিত করতে ব্যবহৃত হত এবং এটি অ্যান্ড্রয়েডের বহিরাগত স্টোরেজ ধারণার নকশা পূরণ করে। আমি আমার বক্তব্যটি বিস্তারিতভাবে জানাতে একটি সম্পাদনা করেছি।
ইরফান লতিফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.