বিদ্যমান tar.gz সংরক্ষণাগারে কোনও ফাইল যুক্ত / আপডেট করবেন?


73

একটি tar.gz সংরক্ষণাগারে কোনও ফাইল যুক্ত / আপডেট করার কোনও উপায় আছে? মূলত, আমার কাছে একটি সংরক্ষণাগার রয়েছে যাতে একটি ফাইল রয়েছে /data/data/com.myapp.backup/./files/settings.txtএবং আমি সংরক্ষণাগারটি থেকে ইতিমধ্যে ফাইলটি টানতে চাই (ইতিমধ্যে সম্পন্ন হয়ে) এবং সম্পাদনা শেষ হয়ে গেলে এটি সংরক্ষণাগারে ফিরে ফিরিয়ে দিতে চাই। আমি কীভাবে এটি সম্পাদন করতে পারি? .পথে চলার কারণে এটি কি সমস্যাযুক্ত ?


2
+1 টি। এটি ওএস এক্সে কাজ করা এত সহজ করে তুলবে। বর্তমানে, আমাকে সমস্ত লুকানো ফাইলের একটি ডিরেক্টরি পরিষ্কার করতে হবে .DS_Storeএবং তারপরে ডিরেক্টরিটি পুনরায় ট্যারে করতে হবে।

উত্তর:


15

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

তবে কাজের জন্য সরঞ্জাম রয়েছে! কমপক্ষে দুটি সিস্টেম রয়েছে যা আপনাকে একটি ফোল্ডারে সংক্ষেপিত টার আর্কাইভের একটি লুপব্যাক মাউন্ট করার অনুমতি দেবে, তারপরে ফাইল সিস্টেমে আপনার পরিবর্তনগুলি করবে। আপনি হয়ে গেলে, ফোল্ডারটি আনমাউন্ট করুন এবং আপনার সঙ্কুচিত সংরক্ষণাগার রোল করার জন্য প্রস্তুত।

এক প্রথম বিকল্প হবে archivemount জন্য প্রকল্প ফিউজ । এখানে একটি টিউটোরিয়াল দেওয়া আছে । আপনার সিস্টেমে সম্ভবত ইতিমধ্যে ফুস রয়েছে এবং এটি যদি আপনার বিতরণ না করে তবে এর জন্য একটি বিকল্প থাকা উচিত।

অন্যান্য বিকল্প tarfs । এটি ব্যবহার করা সহজ , তবে আমি শুনেছি এটিতে bzip2 সংরক্ষণাগারগুলি কলুষিত করার ক্ষেত্রে কিছুটা সমস্যা রয়েছে যাতে আপনি প্রথমে এটি পুরোপুরি ভালভাবে পরীক্ষা করতে পারেন।


1
আমি এভিএফএস ব্যবহার করি যা উবুন্টু এবং ডিবিয়ান প্যাকেজড। আপনি কী জানেন আর্কাইভ মাউন্ট এবং শুল্কগুলি কীভাবে এভিএফএসের সাথে তুলনা করা হয়?
গিলস

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

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

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

43

আপনার সংরক্ষণাগার থেকে আপনার ফাইলটি টানতে আপনি ব্যবহার করতে পারেন tar xzf archive.tar.gz my/path/to/file.txt। নোট করুন যে ফাইলের পথে ডিরেক্টরিগুলিও তৈরি করা হবে। সংরক্ষণাগারে ফাইলগুলি তালিকা করতে tar t(যেমন tar tzf archive.tar.gz) ব্যবহার করুন ।

tarফাইলগুলি "ইন-প্লেস" আপডেট করা সমর্থন করে না। তবে, আপনি সংরক্ষণাগারটির শেষে ফাইলগুলি যুক্ত করতে পারেন, এমনকি যদি তাদের সংরক্ষণাগারে থাকা ফাইলের মতো একই পথ থাকে। সেক্ষেত্রে ফাইলের দুটি অনুলিপি সংরক্ষণাগারে থাকবে এবং পরে যুক্ত করা ফাইলটি পূর্বেরটি ওভাররাইড করবে। এর জন্য ব্যবহার করার কমান্ডটি হ'ল tar r(বা tar uকেবল সংরক্ষণাগারের চেয়ে নতুন যে ফাইলগুলি যুক্ত করা হবে) হ'ল ব্যবহার করার আদেশ। .পথে একটি সমস্যা হওয়ার কথা নয়।

একটি ধরা আছে, যদিও: আপনি একটি সংকোচিত সংরক্ষণাগারটিতে যোগ করতে পারবেন না। সুতরাং আপনি করতে হবে:

gunzip archive.tar.gz
tar rf archive.tar data/data/com.myapp.backup/./files/settings.txt
gzip archive.tar

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


এই উত্তরটি কেবল সঠিক ইনফোফার হিসাবে এটি মানক tarপ্রোগ্রামটির সাথে সম্পর্কিত। একটি ফাইল ফর্ম্যাট হিসাবে টার আসলে খুব অ্যাক্সেসযোগ্য। সামগ্রীগুলি নিজে আপডেট করার জন্য আপনি সহজেই একটি স্ক্রিপ্ট লিখতে পারেন, তবে এমন অন্যান্য সরঞ্জাম রয়েছে যা ইতিমধ্যে এটি করে
কালেব

23
আপনি এটি ইউনিক্স উপায়েও করতে পারেন:gzip -dc archive.tar.gz | tar -r data/data/com.myapp.backup/./files/settings.txt | gzip >archive_new.tar.gz
সাইমন রিখটার

2
আইআইআরসি আপনি কেবল দুটি জিপিপযুক্ত ফাইল সংযুক্ত করতে পারেন। ফলাফলটি বৃহত্তর জিজিপ'ইড ফাইল যা উভয় সংকুচিত ফাইলগুলিকে সংযুক্ত করে থাকে contains
FUZxxl

একবার ফাইল আনজিপ করা হয়ে গেলে, - আপডেট পতাকা ব্যবহার করা কি সম্ভব নয়?
Pietro

জিজেপ কনটেনটেশন উল্লেখ করার জন্য @FUZxxl +1
জোহান

9

টার মূলত টেপগুলির জন্য ব্যবহার করা হয়েছিল, সুতরাং "প্রতিস্থাপন" ফাইলগুলি ডিজাইনে আসলেই নেই। তবে, আপনি মূল টার থেকে ফাইলটি মুছে ফেলার জন্য - ডিলিট ব্যবহার করতে পারেন এবং তারপরে আপডেটটি আপডেট করতে এবং ফাইলটি পুনরায় যুক্ত করতে পারেন। এটি কিছুটা সময় নিতে পারে, কারণ অভ্যন্তরীণভাবে আর্কাইভটিকে পুনরায় সাজানোর জন্য টার দরকার।


স্ট্যাকএক্সচেঞ্জে স্বাগতম! আপনার উত্তরে ইতিমধ্যে অন্য উত্তরে ইতিমধ্যে করা একটি পরামর্শ রয়েছে । সদৃশ তৈরি এড়াতে দয়া করে উত্তর দেওয়ার আগে একটি প্রশ্নের অন্য উত্তরগুলি পড়ুন।
জিগ্লিগনাগা

1
আমি আমার উত্তরটি কিছুটা সম্পাদনা করেছি। আমি মনে করি না যে অন্য উত্তরে উল্লেখ করা হয়েছে
মুছে

-5

আমার লিনাক্স x86_64 জিএনইউ / লিনাক্সে সেই অপারেশনটি সম্পাদন করতে আমি নিম্নলিখিত কমান্ডটি সহজভাবে ব্যবহার করি:

tar cvfpz /path/archive.tar -T list.txt

এই কমান্ডটি /pathফাইলের মধ্যে অন্তর্ভুক্ত ফাইলের তালিকা ব্যবহার করে সংকুচিত সংরক্ষণাগার তৈরির কারণ ঘটায় list.txt


6
এটি সেই ফাইলটি /path/archive.tarযুক্ত / আপডেট করার পরিবর্তে একটি বিদ্যমান ফাইলকে ওভাররাইট করে ।
অ্যান্থন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.