আমি কীভাবে গোপন ফাইল ছাড়াই টার্মিনালের মাধ্যমে একটি সম্পূর্ণ ডিরেক্টরিটির একটি জিপ সংরক্ষণাগার তৈরি করতে পারি?


219

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

আমি জানি যে আমি এই জাতীয় ডিরেক্টরিতে একটি জিপ সংরক্ষণাগার তৈরি করতে পারি:

zip -r zipfile.zip directory

আমি এটাও জানি যে আমি -x বিকল্পের সাহায্যে ফাইলগুলি বাদ দিতে পারি, তাই আমি ভেবেছিলাম এটি কার্যকর হতে পারে:

zip -r zipfile.zip directory -x .*

এটি কাজ করে না। সমস্ত লুকানো ডিরেক্টরিগুলি এখনও জিপ-ফাইলে ছিল।

উত্তর:


107

এটি অপ্রকাশিত ডিরেক্টরিগুলিতে লুকানো ফাইলগুলিও বাদ দেয়:

find /full_path -path '*/.*' -prune -o -type f -print | zip ~/file.zip -@

2
আপনার উত্তরের জন্য ধন্যবাদ. ( find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@) কমান্ডটি প্রত্যাশার চেয়ে দীর্ঘ, তবে এটি ঠিক কাজ করে। উপ-ডিরেক্টরিগুলিও অন্তর্ভুক্ত রয়েছে, সুতরাং +1 এবং একটি স্বীকৃত উত্তর :-)
মার্টিন থোমা

103

সবার আগে আপনি যদি জিপটি ইনস্টল না করে থাকেন তবে প্রথমে নীচে এটি ইনস্টল করুন:

sudo apt-get install zip

তারপরে কেবল একটি জিপ ফাইল তৈরি করার জন্য:

zip -r compressed_filename.zip foldername

আপনি যদি লুকানো ফাইলগুলি বাদ দিতে চান:

find /folder_path -path '*/.*' -prune -o -type f -print | zip ~/compressed_filename.zip -@

একটি জিপ সংরক্ষণাগার থেকে ফাইলগুলি বাদ দেওয়া ( http://osxdaily.com/2013/04/30/how-to-exclud-files-from-a-zip-archive/ থেকে নেওয়া )

একটি জিপ সংরক্ষণাগার তৈরি করার সময় ফাইল বাদ দেওয়ার মূল বিষয়গুলি -xপতাকাটির চারদিকে কেন্দ্রীভূত হয় , যা নির্দিষ্ট নাম বা প্যাটার্নের সাথে মেলে এমন সংরক্ষণাগার থেকে ফাইলগুলি বাদ দিতে ব্যবহৃত হয়। এটি একেবারে প্রাথমিক, এটি দেখতে এরকম দেখাবে:

zip archive.zip files -x "ExcludeMe"

এর অর্থ আপনি একটি একক ফাইল বাদ দিতে পারেন, বলুন এর নাম দেওয়া হয়েছে "নোটহানস.জপিজি"

zip archive.zip images/ -x "Nothanks.jpg"

আসুন কয়েকটি কার্যকর উদাহরণ কভার করুন যেখানে এটি দরকারী।

জিপ সংরক্ষণাগার থেকে ডিডিএসএসস্টোর ফাইলগুলি বাদ দিন

এটি সাধারণত অদৃশ্য ম্যাক মেটাডেটা .DS_Store ফাইলগুলিকে জিপ সংরক্ষণাগারে অন্তর্ভুক্ত করা থেকে বিরত রাখে, যা ডিফল্টরূপে বান্ডিল হয়:

zip -r archivename.zip archivedirectory -x "*.DS_Store"

তবে ডিরেক্টরিতে যদি উপ-ডিরেক্টরি অন্তর্ভুক্ত থাকে তবে আপনি সাব-ডিরেক্টরি থেকে ds_store ফাইলগুলি বাদ দিতে সেই আদেশের আরও একটি প্রকরণ ব্যবহার করতে চান:

zip -r archive.zip directory -x "*/\.DS_Store"

দ্রষ্টব্য: সমস্ত শেলগুলি সঠিকভাবে কাজ করার জন্য এই কমান্ডের জন্য উদ্ধৃতিগুলির প্রয়োজন নেই, তবে ব্যাশ শেলের (ওএস এক্সের জন্য ডিফল্ট) ওয়াইল্ডকার্ড এবং নিদর্শনগুলি বাদ দিয়ে আপনাকে উদ্ধৃতিগুলি ব্যবহার করতে হবে।

একটি জিপ সংরক্ষণাগার থেকে নির্দিষ্ট ফাইল প্রকার বাদ দিন

ওয়াইল্ডকার্ডগুলির সাহায্যে আপনি এক্সটেনশনে ফোকাস করে নির্দিষ্ট ধরণের সমস্ত ফাইলও বাদ দিতে পারেন। উদাহরণস্বরূপ, এই কমান্ডটি একটি সম্পূর্ণ ডিরেক্টরি জিপ করবে, কোনও .jpgফাইল বিয়োগ করবে :

zip -r archive.zip directory -x "*.jpg"

এটি কোনও ফাইলের নামের সাথে মিলে যাওয়া কোনও নির্দিষ্ট ফাইল এক্সটেনশন বা প্যাটার্নের জন্য পরিবর্তিত হতে পারে।

একটি জিপ সংরক্ষণাগার থেকে .git বা .svn ডিরেক্টরি বাদ দিন

একটি ডিরেক্টরি জিপ করুন, বিয়োগ .gitএবং এর সামগ্রীগুলি:

zip -r zipdir.zip directorytozip -x "*.git*"

.svnডিরেক্টরিটি অন্তর্ভুক্ত না করে একটি ফোল্ডার জিপ করুন :

zip -r zipped.zip directory -x "*.svn*"

একটি জিপ সংরক্ষণাগার থেকে সমস্ত লুকানো ফাইল বাদ দিন

যেহেতু নিদর্শন এবং ওয়াইল্ডকার্ড ব্যবহার করা যেতে পারে তবে আপনি যেকোনো বা সব অদৃশ্য এমন ফাইল এবং ফোল্ডারগুলি একটি নির্দিষ্ট সময়ের সঙ্গে পূর্বে সমাধান হচ্ছে দ্বারা তা তৈরি করা হয় অগ্রাহ্য করতে পারে, এটা মত একটি ডিরেক্টরি কিনা .svnবা মত একজন ব্যক্তি ফাইল .bash_profileবা .htaccess

zip -r archivename.zip directorytozip -x "*.*"

বা সমস্ত উপ-ডিরেক্টরি থেকে সমস্ত অদৃশ্য ফাইলগুলি বাদ দিতে:

zip -r archive.zip directory -x "*/\.*"

5
সহযোগী উবুন্টু ব্যবহারকারীকে সহায়তার জন্য আপনার প্রচেষ্টার জন্য আপনাকে ধন্যবাদ। দয়া করে মনে রাখবেন যে কোনও নতুন উত্তরে গ্রহণযোগ্য উত্তরটি পুনরায় উল্লেখ করা কেবল বিশৃঙ্খলার সাথে যুক্ত হয়েছে এবং অপসারণের জন্য পতাকাঙ্কিত হওয়ার উচ্চ সম্ভাবনা রয়েছে।
hmayag

54

এ যোগ "করুন .*(অন্যথায়, আপনার শেলটি .*বর্তমান ডিরেক্টরিতে ডট ফাইলগুলিতে প্রসারিত হয়), এবং সাব-ডিরেক্টরিতে লুকানো ফাইলগুলিও বাদ দিন:

zip -r zipfile.zip . -x ".*" -x "*/.*"

এর ফলে ফাইলগুলি .আপনার জিপ ফাইলে যুক্ত না হওয়া থেকে শুরু হবে।

rinzwind@discworld:~/tmp$ ls -la
drwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 tmp
drwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 .tmp
rinzwind@discworld:~/tmp$ zip -r zipfile.zip . -x .*
adding: .tmp/ (stored 0%)
adding: tmp/ (stored 0%)
rinzwind@discworld:~/tmp$ zip -r zipfile.zip . -x ".*" -x "*/.*"
updating: tmp/ (stored 0%)

1
আপনার শেষ বক্তব্যটি সঠিক বলে আমি মনে করি না। .*শেল দ্বারা প্রসারিত হবে।
হামার

1
আমি মনে করি এটি সম্ভবত সঠিক হতে পারে তবে আমি এটিকে সরিয়ে দিয়েছি (এটি সম্পর্কে নিশ্চিত নয়) :)
রিনজউইন্ড

এই কাজ করে না। .Svn ডিরেক্টরিগুলি যুক্ত করা হয়েছিল
মার্টিন থোমা

1
@ মোজেস বাদ দেওয়া প্যাটার্নটি পুরো ফাইলের সাথে মেলে, কেবল ফাইলের নামের সাথে নয়, সুতরাং আপনাকে */.*পাশাপাশি বাদ দিতে হবে .*( */ডিরেক্টরিগুলির কোনও খালি খালি অনুক্রমের সাথে মেলে)।
গিলস

এটি কিছুই পরিবর্তন না করে চলে! সেরা উত্তর.
হোয়াইট কেট

8

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

find /full_path -path '*.*/.*' -prune -o -type f -print | zip ~/file.zip -@

8

ভিক্ষা করা সমস্ত ফোল্ডার বাদ দেওয়ার উদাহরণ। :

tar cvpzf folder.tgz folder/ --exclude '.*'

আরও ভাল সংকোচন কিন্তু ধীর:

tar cvpjf folder.tar.bz2 folder/ --exclude '.*'

5

সঠিক পদ্ধতিটি হ'ল:

zip -r zipfile.zip directory -x directory/.*

@ ডাউনভোটার: কী সমস্যা হয়েছে, মনে হচ্ছে এটি আমার পক্ষে কাজ করছে।
জবিন

রিনজউইন্ডের মূল উত্তরটির সাথে একই সমস্যা (এখন সংশোধন করা হয়েছে): আপনি সাব-ডিরেক্টরি বাদ দিচ্ছেন না। এবং রিনজুইন্ড উল্লিখিত হিসাবে, আপনার ওয়াইল্ডকার্ডগুলি উদ্ধৃত করা উচিত, অন্যথায় শেলটি তাদের প্রসারিত করবে।
গিলস

4

কিছু ফাইল এক্সটেনশন বাদ দিয়ে ডায়ারগুলিকে জিপ করার সময়:

$ cd /path/to/dir
$ zip -r dir.zip . -x "*.log" -x "*.cache"

3

ডিরেক্টরিতে লুকানো ফোল্ডার এবং ফাইল ছাড়া:

zip -r zipfile.zip directory/*

ডিরেক্টরি: |── .git │   ├── src │   └── Work.file ├── .test │   └── .file └── test.file

$ zip -r zipfile.zip directory/*
adding: directory/src/ (stored 0%)
adding: directory/src/Work.file (stored 0%)
adding: directory/test.file (stored 0%)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.