বিপুল সংখ্যক ছোট ফাইল সঙ্কুচিত ও স্থানান্তর করার সময় স্মৃতি সমস্যা (মোট 1 টিবি)


15

আমার কাছে 5 মিলিয়ন ফাইল রয়েছে যা প্রায় 1 টিবি স্টোরেজ স্থান গ্রহণ করে। আমার এই ফাইলগুলি একটি তৃতীয় পক্ষের কাছে স্থানান্তর করা দরকার।

এটি করার সর্বোত্তম উপায় কী? আমি .tar.gz ব্যবহার করে আকার হ্রাস করার চেষ্টা করেছি, তবে আমার কম্পিউটারে 8 জিবি র‌্যাম থাকলেও আমি একটি "সিস্টেমের মেমরির বাইরে" ত্রুটি পেয়েছি।

ফাইলগুলি শামুক-মেল করার সর্বোত্তম সমাধানটি কি?


9
.tar.gzফলাফল সংকুচিত ফাইলটি তৈরি করতে বা অনুলিপি করতে আপনার সমস্যা হচ্ছে ? যেভাবেই হোক না কেন কিছু অদ্ভুত, কারণ ফাইলগুলি বড় হওয়ায় কোনও অপারেশনই বেশি মেমরি গ্রহণ করতে পারে না। যে, উভয় অপারেশন স্ট্রিমিং করা উচিত। ঠিক কোন আদেশগুলি ব্যর্থ হচ্ছে সে সম্পর্কে আরও তথ্য অন্তর্ভুক্ত করুন।
সেলেদা

1
আপনার এবং তৃতীয় পক্ষকে বাঁচাতে কত ব্যান্ডউইথ আছে? একটি নিষ্পাপ আরএসসিএনসি আপনাকে ডাকযোগে বাঁচাতে পারে। তবে আমি জানি না কীভাবে আপনার জন্য "পাঁচ মিলিয়ন" ফাইলগুলি কাজ করবে কারণ rsync ফাইল-তালিকাটি মেমোরিতে তৈরি করার চেষ্টা করবে এবং তালিকা (5e6 ফাইল)> 8 জিবি করতে পারে। এবং অবশ্যই এটি ধীর হবে।
কালভিন লী

2
@oshirowanen আমি মনে করি না যে এটি ফাইলের তালিকার সংখ্যায় একটি মেমোরি গ্রাস করা উচিত কারণ আমি নিশ্চিত tarযে কেবলমাত্র ফাইলগুলিকে ক্রমবর্ধমানভাবে সংরক্ষণাগারভুক্ত করা উচিত, মেমোরিতে কোনও তালিকা তৈরি করা উচিত নয়। তবে আবার, দয়া করে আপনি যে সঠিক আদেশটি ব্যবহার করছেন তা প্রদর্শন করুন। এছাড়াও, সমস্ত ডিরেক্টরি কি একই ডিরেক্টরিতে থাকে বা ডিরেক্টরি কাঠামো খুব গভীর হয়?
সেলেদা

3
হ্যাঁ হ্যাঁ, ভাল জিইউআই প্রোগ্রামগুলি প্রায়শই স্কেল্যাবিলিটি এবং দৃust়তার মতো লক্ষ্যগুলিকে বেশি গুরুত্ব না দিয়ে তৈরি করা হয়। এটি জিইআইআই র‌্যাপার / সীমান্তের দোষ যদি আমার অবাক করে না। কমান্ড লাইনটি ব্যবহার করে ফাইলটি তৈরি করুন এবং আমি মনে করি আপনি দেখতে পাবেন এটি ঠিকঠাক কাজ করে।
সেলেদা

3
100 টি এমবি / ব্রডব্যান্ড সংযোগে স্থানান্তর করতে 1 টিবি ডেটা কমপক্ষে 22 ঘন্টা সময় নেবে। সুতরাং আপনি কতটা সংক্ষেপণ অর্জনের প্রত্যাশার উপর নির্ভর করে শামুক মেল আসলে দ্রুততর বিকল্প হতে পারে।
ড্যান

উত্তর:


27

মন্তব্যে প্রদত্ত অতিরিক্ত তথ্য প্রকাশ করে যে ওপি .tar.gzফাইলটি তৈরি করতে জিইউআই পদ্ধতি ব্যবহার করছে ।

জিইউআই সফ্টওয়্যারটিতে প্রায়শই সমতুল্য কমান্ড লাইন সমতুল্য সফ্টওয়্যার থেকে অনেক বেশি স্রোত অন্তর্ভুক্ত থাকে বা কিছু "অতিরিক্ত" বৈশিষ্ট্যের জন্য যেমন একটি অগ্রগতি বারের জন্য অতিরিক্ত অপ্রয়োজনীয় কাজ সম্পাদন করে। জিইউআই সফ্টওয়্যার মেমরির সমস্ত ফাইলের নামের একটি তালিকা সংগ্রহ করার চেষ্টা করছে তা আমাকে অবাক করে না। সংরক্ষণাগার তৈরি করার জন্য এটি করা অপ্রয়োজনীয়। উত্সর্গীকৃত সরঞ্জামগুলি tarএবং gzipঅবশ্যই স্ট্রিমিং ইনপুট এবং আউটপুট নিয়ে কাজ করার জন্য ডিজাইন করা হয়েছে যার অর্থ তারা মেমরির চেয়ে অনেক বড় ইনপুট এবং আউটপুট নিয়ে কাজ করতে পারে।

আপনি যদি জিইউআই প্রোগ্রামটি এড়ান, আপনি সম্ভবত পুরোপুরি একটি সাধারণ দৈনন্দিন অনুরোধ ব্যবহার করে এই সংরক্ষণাগারটি তৈরি করতে পারেন tar:

tar czf foo.tar.gz foo

fooডিরেক্টরিটি যেখানে আপনার সমস্ত 5 মিলিয়ন ফাইল রয়েছে।

tarআপনি যদি ফলাফলটিকে একাধিক টুকরোতে ভাগ করতে চান তবে এই প্রশ্নের অন্যান্য উত্তর আপনাকে কয়েকটি অতিরিক্ত বিকল্প কমান্ড দেয় ...


15

"পাঁচ মিলিয়ন" ফাইল, এবং মোট 1 টিবি? আপনার ফাইলগুলি অবশ্যই খুব ছোট হওয়া উচিত। আমি কেবল চেষ্টা করব rsync:

rsync -alPEmivvz /source/dir remote.host.tld:/base/dir

আপনার যদি তা না থাকে - বা আপনার ব্যবহারের ক্ষেত্রে এটি ব্যবহারের অনুমতি দেয় না rsync, আমি 7zআপনার ডেটা দিয়ে কাজ করে কিনা তা অন্তত চেক করব । এটি নাও পারে তবে আমি মনে করি এটি এখনও চেষ্টা করে দেখার মতো:

7z a archive.7z /source/dir

বা যদি আপনি 7zকমপক্ষে একটি .tar.xzসংরক্ষণাগার তৈরির চেষ্টা করে স্বাচ্ছন্দ্য বোধ করেন না :

tar cJv archive.tar.xz /source/dir

(এটি লক্ষ করা উচিত, পুরানো সংস্করণগুলি স্যুইচটি ব্যবহার করার সময় সংরক্ষণাগার tarতৈরি করে না .tar.xz, তবে .tar.lzmaসংরক্ষণাগারগুলি তৈরি করে J। এমনকি পুরানো সংস্করণগুলির পরেও পতাকা পুরোপুরি tarসমর্থন করবেন না J))


যেহেতু আপনি এই ফাইলগুলি তৈরি করতে একটি জিইউআই প্রোগ্রাম ব্যবহার করছেন, আমি ধরে নিচ্ছি যে আপনি কমান্ড লাইন ইন্টারফেসটি ব্যবহার করে কিছুটা অস্বস্তি বোধ করছেন।

কমান্ড লাইন ইন্টারফেস থেকে সংরক্ষণাগার তৈরি, পরিচালনা এবং নিষ্কাশন সুবিধার জন্য, এখানে একটি ছোট্ট ইউটিলিটি বলা হয় atool। এটি প্রায় প্রতিটি সাধারণ ডিস্ট্রো যা আমি দেখেছি তার জন্য উপলব্ধ, এবং হতাশ অস্পষ্ট না হলে আমি প্রতি একক সংরক্ষণাগারকে হোঁচট খেয়ে ফেলেছি works

আপনার ডিস্ট্রোগুলির রেপোতে রয়েছে কিনা তা পরীক্ষা করুন বা আপনার কর্মশালার atoolপরিবেশে থাকাকালীন আপনার প্রশাসককে এটি ইনস্টল করতে বলুন।

atool নিজের কাছে একগুচ্ছ সিমলিংক ইনস্টল করে, তাই প্যাকিং এবং আনপ্যাকিং একটি হাওয়া হয়ে যায়:

apack archive.tar.xz <files and/or directories>

একটি সংরক্ষণাগার তৈরি করে।

aunpack archive.7z

সংরক্ষণাগারটি প্রসারিত করে।

als archive.rar

ফাইলের বিষয়বস্তু তালিকাভুক্ত করে।

কী ধরণের সংরক্ষণাগার তৈরি করা হয়েছে atoolতা নির্ধারণ করে যে কমান্ড লাইনে আপনার সংরক্ষণাগারটির ফাইল নাম প্রসারিত করে।


4
এখানে ব্যবহার করার সুবিধাটি rsyncহ'ল যদি (কখন) সংযোগটি ভেঙে যায় তবে rsyncএটি যেখানে ছেড়ে গিয়েছিল তা বেছে নিতে পারে।
রোয়াইমা

2
ফাইলগুলি গড়ে 200 কেবি হবে। এত ছোট নয়।
নাট এল্ডারেজ

4
@ নেটএলড্রেজ আমি সাধারণত বড় হিসাবে> 1 জিবি হিসাবে ভাবি। ছোটটি সাধারণত <1MB হয়। খুব সুন্দর।
পাইথননট

8

আপনি 25: 1 সংক্ষেপণের চেয়ে আরও ভাল করতে না পারলে শামুক-মেইলিংয়ের আগে এই সংকোচনের থেকে আপনি কিছু পাওয়ার সম্ভাবনা নেই, যদি না আপনার কাছে এমন কিছু হার্ডওয়্যার টেপ ফর্ম্যাট থাকে যা আপনি তৃতীয় পক্ষের সাথে বিনিময় করতে পারেন।

বৃহত্তম সাধারণ স্টোরেজ হল নীল রশ্মি এবং এটি আপনাকে প্রায় 40 জিবি পাবেন। আপনার ডেটাতে এটি ফিট করার জন্য আপনার 25 থেকে 1 টি সংক্ষেপণের প্রয়োজন হবে। যদি আপনার তৃতীয় পক্ষের কেবল ডিভিডি থাকে তবে আপনার 125: 1 (মোটামুটি) প্রয়োজন।

আপনি যদি এই সংক্ষেপণ সংখ্যার সাথে মেলে না নিতে পারেন তবে কেবলমাত্র একটি সাধারণ ডিস্ক ব্যবহার করুন, তৃতীয় পক্ষের কাছে মেলটি অনুলিপি করুন এবং শামুক করুন। সেক্ষেত্রে 1 টিবি ড্রাইভের চেয়ে ছোট কিছু শিপিং করা দরকার যার সংকোচনের প্রয়োজন।

আপনাকে কেবল এটি ssh -C(স্ট্যান্ডার্ড সংকোচনের) সাথে ব্যবহার করতে বা বেশি পছন্দ করতে তুলনা করতে হবেrsync নেটওয়ার্কের মাধ্যমে ফাইলগুলি অনুলিপি করার জন্য সংক্ষেপণের সাথে, সামনের দিকে সংকোচনের প্রয়োজন হবে না এবং সামনের দিকে ট্যার আপ করতে হবে না। 1 টিবি নেট থেকে সরানো অসম্ভব নয় তবে এটি কিছুটা সময় নিতে চলেছে।


5
+1: "কখনও হাইওয়েতে আঘাত হানার জন্য টেপ ভরা স্টেশন ওয়াগনের ব্যান্ডউইথকে কখনই হ্রাস করবেন না" (অ্যান্ড্রু এস টানেনবাউম)। দেখতে en.wikipedia.org/wiki/Sneakernet
অলিভিয়ের Dulac

অলিভিয়ারডুলাক বোয়িং 7৪7 এবং সিডিআরএম-এর পূর্ণ বাক্সগুলির সাথে একই রকম নির্মাণগুলি দেখেছি এটি কী ধরণের থ্রুপুট দিয়ে আপনি পেতে পারেন তা আশ্চর্য।
অ্যান্থন

আমি পছন্দ করি যে একটি পিডজিন একটি আইএসপি কে দীর্ঘ শট দিয়ে পরাজিত করেছে, উইকিপিডিয়া পৃষ্ঠার উদাহরণগুলি দেখুন ^^
অলিভিয়ার ডুলাক

6

আপনি কি টরেন্ট বিবেচনা করেছেন? পিয়ার-টু-পিয়ার একটি ইন্টারনেট-ওভার ট্রান্সফার জন্য আপনার সেরা বিকল্প হতে পারে:

  • কমপক্ষে অন্যান্য ইন্টারনেট স্থানান্তর হিসাবে তত দ্রুত: আপনার আপলোডের গতি স্থানান্তর গতিটি নির্ধারণ করবে
  • কোনও ডেটা দুর্নীতি নেই
  • প্রথমে কোন ফাইলগুলি স্থানান্তর করতে হবে তা চয়ন করুন
  • কোনও অতিরিক্ত স্থানীয় / ক্লাউড স্টোরেজ স্পেসের প্রয়োজন নেই
  • বিনামূল্যে

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

আপনি এই পদ্ধতিটি সংকোচনের সাথে একত্রিত করতে পারেন, তবে আপনি স্থানান্তরের অংশগুলিকে অগ্রাধিকার দেওয়ার ক্ষমতা হারাবেন।


টরেন্ট সফ্টওয়্যারটিতে জিইআইআই সফ্টওয়্যারটি সংকুচিত করতে একই সমস্যা থাকতে পারে। মেমরি ইত্যাদিতে ফাইলের নাম সংরক্ষণ করা এছাড়াও টরেন্ট ফাইলগুলিকে ফাইলগুলির মেটা ডেটা সংরক্ষণ করতে হয়। 5 মিলিয়ন ফাইলের নাম টরেন্ট ফাইলটিতে প্যাক করা উচিত।
আয়শ কে

@ আইশক সত্য, টরেন্ট যুক্ত / তৈরি করার সময় বা চেকসামগুলি পরীক্ষা করার সময় এটি কার্য সম্পাদনকে প্রভাবিত করবে। তবুও, আমি বিশ্বাস করি এটি প্রচুর পরিমাণে ডেটা স্থানান্তর করার সবচেয়ে স্থিতিশীল সমাধান।
ল্যাক্স

টরেন্ট ফ্রিকের মতে, শেয়ার করা বৃহত্তম টরেন্টটি ~ 800gb g বেশিরভাগ ফাইল সহ একক টরেন্ট ফাইলটিতে প্রায় 33 কে ফাইল থাকে। তবে ৫ মিলিয়ন ফাইল ... আমি নিশ্চিত নই
আয়শ কে

3

7z আমার পছন্দ হবে। এটি সংরক্ষণাগারগুলিকে স্বয়ংক্রিয়ভাবে বিভক্ত করতে দেয় এবং বহু-থ্রেডযুক্ত সংকোচনকে সমর্থন করে। না, xzনা, সাহায্য বার্তা যা বলে তা সত্ত্বেও। সাথে চেষ্টা করুন:

7za a -v100m -m0=lzma2 -mx=9 -ms=on -mmt=$THREADS archive.7z directory/

আউটপুটটি 100MB ব্লকে বিভক্ত হয় (এর সাথে এটি পরিবর্তন করুন) -v স্যুইচ পরিবর্তন করুন)।

একমাত্র আসল ক্ষতি হ'ল 7z ইউনিক্স মেটাডেটা ধরে রাখে না (যেমন অনুমতি এবং মালিক)। যদি আপনার এটির প্রয়োজন tarহয় তবে 7zaতার পরিবর্তে পাইপ আউটপুট ( man 7zaকিছু উদাহরণের জন্য দেখুন )।


1
The only real downsideতবে কি খারাপ!
njzk2

@ njzk2 আসলে এটি দৃশ্যের উপর নির্ভর করে। উদাহরণস্বরূপ, আপনি যদি ব্যাকআপ ইমেজ বা ডাটাবেস ডাম্পগুলি প্রেরণ করছেন তবে সম্ভবত অনুমতিগুলির বিষয়ে আপনার খুব বেশি যত্ন নেই।
স্টেফানো সানফিলিপো

বিভক্তকরণের জন্য 7z ব্যবহার করার বিন্দুটি আমি পুরোপুরি দেখতে পাচ্ছি না, যখন আপনি splitএকটি .tar.gz ফাইল ব্যবহার করতে পারেন এবং মেটাডেটা রাখতে পারেন keep
njzk2

@ njzk2 এটা এছাড়াও splits। প্রাথমিকভাবে, এটিতে LZMA2 এর সাথে মাল্টি-থ্রেডেড সংক্ষেপ রয়েছে। আমি এর সমর্থন সম্পর্কে সচেতন নন এমন কোনও ইউনিক্স ইউটিলিটি। 7 জনের একটি অ-কঠিন সংকোচনের মোডও রয়েছে, যা কেবলমাত্র একটি নির্দিষ্ট ফাইলের কাছে tarপৌঁছানোর জন্য আর্টটি অ্যাক্সেস করতে হলে এটি একটি দুর্দান্ত ধাপ forward
স্টেফানো সানফিলিপো

আপনি এখানে যান: Askubuntu.com
দ্য

3

আমি ডানদিকে ফোল্ডারটি ক্লিক করেছি এবং "সংরক্ষণাগার তৈরি করুন" ক্লিক করেছি এবং .tar.gz বিকল্পটি নির্বাচন করেছি। ডিরেক্টরি কাঠামো গভীর, 500,000 ডিরেক্টরিরও বেশি

হ্যাঁ, সৌভাগ্য যে প্যাকেজ আপ করতে। এবং জিইউআই সরঞ্জাম একই ভলিউমে এটি করার চেষ্টা করবে, যার অর্থ ক) আপনার আরও 1Tb ফ্রি স্পেস প্রয়োজন এবং খ) একটি ফাইল পড়ার এবং সংরক্ষণাগারে এটি সংযোজন করার মাথাটি ড্রাইভের জন্য খুব স্বাস্থ্যকর হবে না।

আমি দুটি সম্ভাবনা দেখতে পাচ্ছি:

1) আপনার কম্পিউটার থেকে তৃতীয় পক্ষের কাছে আরএসসিএনসি করুন। এক বা অন্যের জন্য একটি গ্লোবাল আইপি ঠিকানা প্রয়োজন হবে যা প্রায়শই পরিবর্তন হয় না। বিশাল rsync সুবিধা যদি কোনো কারণে বিঘ্নিত পেতে, এটা নিতে পারবেন যেখানে এটি শেষ করেছিলেন। 1Tb টারবাল অনুলিপি করা হয় সফল হয় বা ব্যর্থ হয়

2) একটি 1 টিবি বহিরাগত ড্রাইভ কিনুন, এতে জিনিসগুলি অনুলিপি করুন এবং ড্রাইভ বিতরণ করুন। উচ্চ বিলম্ব, তবে এটি যখন আসবে তখন সত্যই ভাল ব্যান্ডউইথ। প্রাথমিক ব্যাকআপের জন্য এটিতে বিভিন্ন অনলাইন ব্যাকআপ পরিষেবাদি।



1

আমি আপনাকে এমন কিছু ব্যবহার করার পরামর্শ দিচ্ছি:

tar -c -L 104857600 -f file1.tar -f file2.tar -f file3.tar -f file4.tar -f file5.tar -f file6.tar -f file7.tar -f file8.tar -f file9.tar -f file10.tar 
gzip file*.tar

যা 10 টি ফাইল তৈরি করবে যা সর্বাধিক 100 গিগাবাইট বড় হবে। তবে এটি আপনার "OOM" ইস্যুটির জবাব দেবে না যেহেতু টারটি এটি পড়তে / লেখার প্রবাহিত করার কথা বলে তাই বিড়ম্বনাটি অবিচ্ছিন্নভাবে জিজিপ হয়।


0

কীভাবে:

find /path | tar -T - -czf - | ssh remotehost "cd /target/dir/; tar xzf -"
  • find ডিরেক্টরিগুলি ট্রি টি অনুসন্ধান করে
  • tar -T - স্টিডিন থেকে তালিকাটি পড়ে
  • -czf -একটি সংরক্ষণাগার তৈরি করে এবং zস্টাডাউটকে লেখেন, স্ট্রিমটি জিপ করে
  • ssh remotehost রিমোটহস্ট ব্যবহার করে লগইন করুন ssh
  • cd /target/dir/ লক্ষ্য ডিরেক্টরিতে পরিবর্তন করুন
  • tar xzf - স্টিডিন থেকে আগত স্ট্রিমটি বের করুন

দুর্দান্ত ছোট স্নিপেট। যদিও আমি মনে করি যে এখানে তার প্রয়োজনটি বেশিরভাগই সংকোচনের বৈশিষ্ট্য, যেহেতু উদ্দেশ্য "বন্ধুর কাছে স্থানান্তর করা"
মভেরুন

পুরোপুরি সংরক্ষণাগারটি তৈরি না করা যখন সংযোগটি বাধাগ্রস্থ হয়, তখন নেটওয়ার্ক বিচ্ছিন্নতার কারণে (এখনও ২৪ ঘন্টা আপনাকে সংযোগ বিচ্ছিন্ন করে এমন আইএসপি রয়েছে) বা অন্যান্য কারণে সংযোগ বিঘ্নিত হয় যা পুরোপুরি অসম্ভব নয় hurt
জোনাস শোফার

0

ফেক্সসেন্ডের সাহায্যে আপনি যে কোনও নম্বর এবং আকারের ফাইলগুলি ফ্লাই-এ-তে যে কোনও প্রাপকের কাছে প্রেরণ করতে পারেন, দেখুন:

http://fex.rus.uni-stuttgart.de:8080/usecases/downunder.html

অবশ্যই আপনার একটি এফ * এক্স সার্ভার দরকার তবে এটি বিনামূল্যে:

http://fex.rus.uni-stuttgart.de:8080/

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