.Gz ফাইল এক্সটেনশন ছাড়াই কীভাবে একটি জিজিপ ফাইল তৈরি করবেন?


14

আমি একটি জিজেপড ফাইল তৈরি করতে চাই যা মূল ফাইলের নাম ধরে রাখে। উদাহরণস্বরূপ gziping "উদাহরণ.txt" এর "উদাহরণ.txt.gz" এর পরিবর্তে "উদাহরণ.txt" নামে একটি জিপিড ফাইল আউটপুট করা উচিত। এক কমান্ড (পরবর্তীটি না করে mv) মার্জিতভাবে এটি করা সম্ভব ?


4
আমি কিছুটা কৌতূহলী। কেন আপনি এটি চান? এটি একটি খারাপ ধারণা মত শোনাচ্ছে।
বার্নহার্ড

3
হ্যাঁ। আপনি বাশ স্ক্রিপ্টে 2 টি সম্পূর্ণ লাইন রেখেছেন এবং এটিকে "আমার-মার্জিত-কমান্ড" বলেছেন। ;)
স্বর্ণলোকস

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

এটি যদি আপনার পক্ষে সত্যিই এতটা সমস্যা হয় তবে আপনি বাশ ফাংশনটি সংজ্ঞায়িত করতে পারেন যা z * gzip এক্সিকিউটেবলের সাথে পাস করে এবং দ্বিতীয় লাইনটি আপনার জন্য এমভি করে।
ব্র্যাচলে

4
@ আপনার ওয়েব অ্যাপ্লিকেশন সমস্যা: যে কোনও শালীন ওয়েবসার্ভার আপনার জন্য
কমপ্রেসিং

উত্তর:


12

এটা কাজ করে না:

# echo Hello World > example.txt
# gzip < example.txt > example.txt # WRONG!
# file example.txt
example.txt: gzip compressed data, from Unix, last modified: Thu Mar 21 19:45:29 2013
# gunzip < example.txt
<empty file>

এটি একটি রেসের শর্ত:

# echo Hello World > example.txt
# dd if=example.txt | gzip | dd of=example.txt # still WRONG!
# gunzip < example.txt 
Hello World # may also be empty

সমস্যাটি হ'ল অন্যান্য প্রক্রিয়াটি পড়ার সুযোগ পাওয়ার আগেই > example.txt(বা dd of=example.txtসেই বিষয়ে) ফাইলটিকে হত্যা করে। সুতরাং কোনও সুস্পষ্ট সমাধান নেই, এ কারণেই আপনার আটকে থাকা উচিত mv

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

এমনকি এটি না।

যদি gzipকোনও কারণে ব্যর্থ হয়, বা কোনও সমস্যা দেখা দেয় যেমন গিজিপিংয়ের সময় আপনি স্থানের বাইরে চলে যান (কারণ অন্যান্য প্রক্রিয়াগুলি লিখছে, বা জিজিপ ফলাফল ইনপুটটির চেয়ে বড় - যা এলোমেলো ডেটার জন্য ঘটে - ইত্যাদি) তবে আপনি কেবল নিজের ফাইলটি হারিয়েছেন । অভিনন্দন!

একটি পৃথক ফাইল এবং mvসাফল্যের উপর তৈরি করুন । এটি হ'ল সহজ, বোঝা সহজ এবং সবচেয়ে নির্ভরযোগ্য পদ্ধতি যা আপনি কখনও পাবেন।


1
সম্পূর্ণতার জন্য কীভাবে যুক্ত করা যায়:gzip example.txt && mv example.txt.gz example.txt
1913

2
কোন depquid ওপি পড়া - যে অসুন্দর
স্বর্ণিলোক

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

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

10

আমার একই সমস্যা ছিল, সিআইয়ের অংশ হিসাবে এডাব্লুএস এস 3-তে মোতায়েন করা।

.gzপ্রত্যয় ছাড়াই পুনরুক্তি দিয়ে একটি ডিরেক্টরি (জায়গায়) গিজিপ করার জন্য আমি এটি করেছি :

find . -type f -exec gzip "{}" \; -exec mv "{}.gz" "{}" \;

আমার জন্য যথেষ্ট পরিষ্কার বলে মনে হচ্ছে। তবে হ্যাঁ মনে হচ্ছে আপনার mvকোথাও কোথাও প্রবেশ করা দরকার।

আপনি যদি ব্যবহার করেন তবে gruntআপনি দেখতে পারেন grunt-contrib-compressgruntবিশেষত এস 3-তে মোতায়েনের জন্য কয়েকটি সরঞ্জাম আপনার জন্য জিজিপ পরিচালনা করবে।


1
স্থানটি যুক্ত করা উচিত find . -type ...নয় find.দয়া করে :)
হুডিনজার

2

-S আপনি চান এক্সটেনশন

gzip -S "`_date +%Y_%M' dog.txt 

dog.txt_2015_11 এর ফলাফল হবে

আপনি যখন এটি আনজিপ করবেন তখন আপনাকে অবশ্যই এক্সটেনশনটি নির্দিষ্ট করতে হবে।

gzip -d _2015_11 dog.txt_2015_11

ইউনিক্সে আপনার কাছে কী ধরণের ফাইল রয়েছে তা নির্ধারণ করতে ফাইল কমান্ডটি ব্যবহার করুন, এক্সটেনশনগুলি প্রায়শই বিভ্রান্ত করছে, বা প্রায়শ অনুপস্থিত।


1

আমি মনে করি না কোনও এক্সটেনশন ছাড়াই একটি জিজিপ ফাইল তৈরি করা সঠিকভাবে করা উপযুক্ত জিনিস।

IMGo .gz ফাইলটি পড়ার জন্য আপনার ওয়েব সার্ভারটি কনফিগার করা উচিত। আপনার সম্ভবত ইতিমধ্যে এর মতো একটি বিধি রয়েছে:

Path asets/:
  If header Accept-Encoding contains "gzip" and not contains "gzip;q=0":
    Add header Content-Encoding: gzip

".Gz" সংযুক্ত করার জন্য আপনাকে অনুরোধ করা ফাইল নামটি পুনরায় লেখার জন্য একটি নিয়ম যুক্ত করতে হবে (প্রকৃতপক্ষে, আপনার ফাইলটি উপস্থিত রয়েছে কিনা তা পরীক্ষা করা উচিত, ঠিক যেমন আপনার যাচাই করা উচিত যে ক্লায়েন্টটি স্বীকৃত-এনকোডিং শিরোনামে জিজপ তালিকা করেছে)


1

আপনি এর জন্য s3_website চেষ্টা করতে পারেন ।

এটি স্কেল এবং রুবি উভয় ক্ষেত্রেই লেখা আছে এবং এটির একটি জেভিএম দরকার তা আমি পছন্দ করি না। এছাড়াও এটি অনুমানটি আমি পছন্দ করি না (বিশেষত সত্য যে এটি বালতি থেকে অতিরিক্ত ফাইল মুছে ফেলে) তবে আপনি যদি ঠিক থাকেন তবে এটি কাজ করা উচিত।

আমি নিজেই এমন একটি সরঞ্জাম লেখার পরিকল্পনা করছি যার এই সীমাবদ্ধতা নেই, থাকুন।


0

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

যদি আপনি কোনও প্রত্যয় ব্যবহার করতে না চান, তবে জিএনইউ আপনার পক্ষে ভাল নয়, যেমনটি gzip -S ""ফিরে আসবে gzip: invalid suffix ''

তবে আপনি সর্বদা gzip -S " "(ফাঁকা জায়গা) এর মতো কিছু পাঠাতে পারেন এবং এটি এটির মতো দেখানো হবে:

$ file testfile\  
testfile: gzip compressed data, was "testfile", from Unix, last modified: Tue Jun  3 XX:XX:XX 2014

এরপরে, আপনি যদি এটি সঙ্কুচিত করতে চান তবে আপনাকে এমন কিছু করতে হবে gunzip -c testfile\ (প্রত্যয়টি নির্দিষ্ট করে না দিয়ে), এমনকি -fপতাকা সহও।

আমি আন্তরিকভাবে মনে করি যে একটি mvকমান্ড যুক্ত &&করা আপনার কোডে এত ঝামেলা সৃষ্টি করবে না। যাইহোক, এবং যেমন @ ফ্রসচুটজ বলেছেন, এটি করা সত্যিই ভাল ধারণা নয়।


স্ট্রেটিক ওয়েবসাইটের হোস্টিংয়ের মতো সংকুচিত ফাইলগুলি পরিবেশন করার জন্য যদি আপনি এস 3 ব্যবহার করতে চান তবে এটি এমন কিছু প্রয়োজন। আপনি এটি বিবেচনা করতে পারেন: github.com/laurilehmijoki/s3_website
ক্রিশ্চিয়ান ম্যাগেরুয়ান-স্টানসিউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.