নির্দিষ্ট ফাইল / ফোল্ডার বাদ দিয়ে ডায়াল ডিরেক্টরিতে শেল কমান্ড


810

কোনও সাধারণ শেল কমান্ড / স্ক্রিপ্ট রয়েছে যা নির্দিষ্ট ফাইল / ফোল্ডারগুলি সংরক্ষণাগারভুক্ত করা বাদ দিয়ে সমর্থন করে?

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

বেশিরভাগ সমাধান নয়:

tar --exclude=PATTERNকমান্ড দেওয়া প্যাটার্ন এবং বাদ ঐ ফাইল মিলে যায়, কিন্তু আমি নির্দিষ্ট ফাইল & ফোল্ডার উপেক্ষা করা থেকে (সম্পূর্ণ ফাইল পাথ), অন্যথায় বৈধ ফাইল বাদ করা যেতে পারে প্রয়োজন।

আমি ফাইলের একটি তালিকা তৈরি করতে ফাইন্ড কমান্ডটিও ব্যবহার করতে পারি এবং সংরক্ষণাগারটি সংরক্ষণ করতে এবং তালিকাটি টারে পাস করতে চাই না তা বাদ দিতে পারি তবে এটি কেবলমাত্র অল্প পরিমাণ ফাইলের জন্যই কাজ করে। আমার কয়েক হাজার আছে।

আমি ভাবতে শুরু করি একমাত্র সমাধান হ'ল ফাইল / ফোল্ডারগুলির তালিকা বাদ দিয়ে একটি ফাইল তৈরি করা, তারপরে --exclude-from=fileসমস্ত ফাইলকে একটি টিএমপি ডিরেক্টরিতে অনুলিপি করতে আরএসসিএনসি ব্যবহার করুন , এবং তারপরে সেই ডিরেক্টরিটি সংরক্ষণাগারভুক্ত করতে টার ব্যবহার করুন।

কেউ কি আরও ভাল / আরও কার্যকর সমাধানের কথা ভাবতে পারেন?

সম্পাদনা: চার্লস মা এর সমাধান ভাল কাজ করে। বড় গোটচা হ'ল ট্যারি কমান্ডের শুরুতে হওয়া --exclude='./folder' আবশ্যক । সম্পূর্ণ কমান্ড (প্রথম সিডি, সুতরাং ব্যাকআপটি সেই ডিরেক্টরিটির সাথে সম্পর্কিত):

cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .

120
আর একটি জিনিস আমাকে এটি থেকে ধরা দিয়েছে, এটি একটি নোটের মতো হতে পারে: বাম ফোল্ডারগুলির শেষে ট্র্যাশিং স্ল্যাশগুলি এই ফোল্ডারগুলিকে মোটেও বাদ দেয় না tar
রেখায়াত

7
@ রেখিত ধন্যবাদ, আমি 15 মিনিটের জন্য কমান্ডটি
ঘুরে দেখছিলাম

9
দেখে মনে হচ্ছে - প্রতিচ্ছবিটির অবস্থানটি টারের সংস্করণের উপর নির্ভর করে। ট্যার ১.২৩ এর জন্য, - মূল কমান্ডের পরে অন্তর্ভুক্ত হওয়া আবশ্যক।
জোয়েল জি ম্যাথিউ

2
"" "(উদ্ধৃতি চিহ্ন) ভুলবেন না।
মিলাই ডট কম

3
--excludeপ্রথম হতে হবে না তবে এটি উত্স ডিরেক্টরিটির আগে কোথাও আসতে হবে (সাইগউইনের উপর 1.29 টার দিয়ে পরীক্ষিত)।
wortwart

উত্তর:


1038

আপনার কাছে টারের জন্য একাধিক বাদ দেওয়ার বিকল্প থাকতে পারে

$ tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .

ইত্যাদি কাজ করবে। উত্স এবং গন্তব্য আইটেম আগে রাখা নিশ্চিত করুন ।--exclude


78
এই উত্তরটি এটিকে দেখতে এমন দেখাচ্ছে - প্রতিচ্ছবিটি প্রথমে আসে ... tar cvfpz ../stuff.tgz --excolve = 'node_modules' --excolve = '। Git'।
জেমস

13
উদাহরণস্বরূপ, আপনি যদি
আপলোডস

12
আমি নিম্নলিখিত কমান্ডটি নিয়ে এসেছি: tar -zcv --exclude='file1' --exclude='patter*' --exclude='file2' -f /backup/filename.tgz . নোট করুন যে -fপতাকাটি তারের ফাইলের আগে দেখতে হবে: superuser.com/a/559341/415047
আলফ্রেড বেজ

21
বাদ দেওয়া ডিরেক্টরি শেষে একটি "/" এটি ব্যর্থ হওয়ার কারণ ঘটবে। আমি অনুমান করি টার মনে করে একটি শেষ / বাদ দেওয়া ডিরেক্টরি নামের অংশ। BAD: --excolve = mydir / GOOD: --excolve = mydir
জোশিয়ার

4
> উত্স এবং গন্তব্য আইটেমের আগে - নির্ধারণ করা নিশ্চিত করুন। বা বাদ দেওয়ার জন্য একটি নিখুঁত পাথ ব্যবহার করুন: টার-সিভিপিপিএফ ব্যাকআপ / টার্গেট.আরটিজ --েক্সেক্সলিট = '/ হোম / ইউজার নেম / ব্যাকআপস' / হোম / ইউজারনেম
নাইটকাইট ক্লাউডিনসিডার ডট কম

131

আপনি --excludeটার সাথে ডিরেক্টরিগুলি বাদ দিতে পারেন ।

আপনি যদি /usrব্যবহার করতে না পারেন তবে সবকিছু সংরক্ষণাগার রাখতে চান :

tar -zcvf /all.tgz / --exclude=/usr

আপনার ক্ষেত্রে সম্ভবত কিছু

tar -zcvf archive.tgz arc_dir --exclude=dir/ignore_this_dir

17
স্পষ্ট করার জন্য, আপনি - নিষেধাজ্ঞার জন্য পুরো পথ ব্যবহার করতে পারেন।
জোহান সোডারবার্গ

2
কিছু ক্ষেত্রে, এটি আবশ্যক
25:25

68

টার্ক ব্যবহার করে ব্যাকআপ থেকে ফাইল / ডিরেক্টরিগুলি বাদ দেওয়ার সম্ভাব্য বিকল্পগুলি:

একাধিক নিদর্শন ব্যবহার করে ফাইলগুলি বাদ দিন

tar -czf backup.tar.gz --exclude=PATTERN1 --exclude=PATTERN2 ... /path/to/backup

নিদর্শনগুলির তালিকাভুক্ত একটি বহিরাগত ফাইল ব্যবহার করে ফাইলগুলি বাদ দিন

tar -czf backup.tar.gz -X /path/to/exclude.txt /path/to/backup

এড়িয়ে যাওয়া উচিত যে কোনও ডিরেক্টরিতে ট্যাগ ফাইল রেখে ট্যাগ ব্যবহার করে ফাইলগুলি বাদ দিন

tar -czf backup.tar.gz --exclude-tag-all=exclude.tag /path/to/backup

3
পরামিতিগুলির ক্রমটি মনে হচ্ছে এবং এই ফর্মটি আমার পক্ষে কাজ করে।
সিস্টামস

1
আমিও. উবুন্টু ১.0.০৪-এ ট্যারের জন্য (জিএনইউ টার) ১.২৮, প্যারামিটারগুলির কেবলমাত্র এই নির্দিষ্ট ক্রমটিই কাজ করেছিল।
alvaroreig

43

অনেক উত্তর সহ পুরানো প্রশ্ন, তবে আমি দেখতে পেয়েছি যে আমার পক্ষে কোনওটিই যথেষ্ট পরিষ্কার নয়, তাই আমি আমার চেষ্টাটি যুক্ত করতে চাই।

আপনার যদি নিম্নলিখিত কাঠামো থাকে

/home/ftp/mysite/

নিম্নলিখিত ফাইল / ফোল্ডার সহ

/home/ftp/mysite/file1
/home/ftp/mysite/file2
/home/ftp/mysite/file3
/home/ftp/mysite/folder1
/home/ftp/mysite/folder2
/home/ftp/mysite/folder3

সুতরাং, আপনি একটি ট্যর ফাইল তৈরি করতে চান যা ভিতরে / হোম / এফটিপি / মাইসাইটের ভিতরে সাইটিং (একটি নতুন সার্ভারে স্থানান্তরিত করতে) অন্তর্ভুক্ত করে তবে file3এটি কেবল আবর্জনা, এবং এর মধ্যে থাকা সমস্ত কিছুরও folder3প্রয়োজন হয় না, তাই আমরা সেই দুটিটি এড়িয়ে যাব।

আমরা ফর্ম্যাটটি ব্যবহার করি

tar -czvf <name of tar file> <what to tar> <any excludes>

যেখানে সি = তৈরি করুন, জেড = জিপ এবং ভি = ভার্জোজ (আপনার ফাইলগুলি প্রবেশ করানোর সাথে সাথে দেখতে পাবেন, আপনি বাদ দেওয়া ফাইলের কোনওটি যুক্ত হচ্ছে না তা নিশ্চিত করার জন্য দরকারী)। এবং এফ = ফাইল।

সুতরাং, আমার কমান্ড এটি দেখতে হবে

cd /home/ftp/
tar -czvf mysite.tar.gz mysite --exclude='file3' --exclude='folder3'

নোট করুন যে ফাইলগুলি / ফোল্ডারগুলি বাদ দেওয়া হয়েছে তা তুলনামূলকভাবে আপনার টারের মূলের (আমি এখানে / / এর সাথে সম্পর্কিত পুরো পথ চেষ্টা করেছি) তবে আমি সেই কাজটি করতে পারি না)।

আশা করি এটি কাউকে সহায়তা করবে (এবং আমি পরের বার এটি গুগল করব)


6
এই উত্তরটি অবশ্যই আমাকে সাহায্য করেছিল! আমার কাছে গোচাটি হ'ল আমার আদেশটি দেখতে এমন কিছু দেখাচ্ছে tar -czvf mysite.tar.gz mysite --exclude='./mysite/file3' --exclude='./mysite/folder3'এবং এটি কিছুই বাদ দেয় না।
আনিস রামস্বামী

2
আপনার নমুনাটি আমি যা ইস্যু করেছি তার সাথে খুব মিল! ধন্যবাদ!
কোরবানী

2
সুন্দর এবং পরিষ্কার আপনাকে ধন্যবাদ। আমার জন্য সমস্যাটি ছিল অন্যান্য উত্তরগুলিতে আপেক্ষিক পাথের পরম অন্তর্ভুক্ত। তবে আপনাকে যা করতে হবে তা হ'ল আপনি যে ফোল্ডারটি বাদ দিতে চান তার নাম যুক্ত করা।
হুবার্ট

2
এটি আরও অনেক পরিষ্কার উত্তর। উদাহরণের কারণে আমি প্রথমে পথ গুলো বিভ্রান্ত করার কারণে এটি কাজ করতে সক্ষম হয়েছি। একটি গুচ্ছ ধন্যবাদ!
fagiani

2
এটা কাজ করেছে! বাদ না দিয়ে ট্রেলিং স্ল্যাশ যুক্ত না করার জন্য দয়া করে মনে রাখবেন। উদাহরণস্বরূপ, "ফাইল 3" বা "ফাইল3 / সাবফোল্ডার" কাজ করার সময়, "ফাইল3 /" এবং "ফাইল3 / সাবফোল্ডার /" না!
লুকাফেরেরিও

24

আপেক্ষিক ডিরেক্টরিগুলি বাদ দিতে আপনি স্ট্যান্ডার্ড "পিঁপড়া স্বরলিপি" ব্যবহার করতে পারেন।
এটি আমার পক্ষে কাজ করে এবং .git বা নোড_মডিউল ডিরেক্টরিগুলি বাদ দেয়:

tar -cvf myFile.tar --exclude=**/.git/* --exclude=**/node_modules/*  -T /data/txt/myInputFile.txt 2> /data/txt/myTarLogFile.txt

myInputFile.txt এ রয়েছে:

/ dev2 / java
/ dev2 / javascript


4
আমি বিশ্বাস করি globstarএটির জন্য বাশ শেল বিকল্প পরিবর্তনশীল সক্ষম করতে হবে। সঙ্গে পরীক্ষা করুন shopt -s globstar। আমি মনে করি এটি বেশিরভাগ ইউনিক্স ভিত্তিক ওএসে ডিফল্টভাবে বন্ধ রয়েছে । বাশ ম্যানুয়াল থেকে: " গ্লোবস্টার: যদি সেট করা থাকে তবে **ফাইলের নাম সম্প্রসারণ প্রসঙ্গে ব্যবহৃত প্যাটার্নটি সমস্ত ফাইল এবং শূন্য বা আরও বেশি ডিরেক্টরি এবং উপ-ডিরেক্টরিগুলির সাথে মিলবে the প্যাটার্নটি '/' দ্বারা অনুসরণ করা হয় তবে কেবল ডিরেক্টরি এবং উপ-ডিরেক্টরিগুলি মেলে। "
not2qubit

15

আমি অভিজ্ঞ করেছি যে, সঙ্গে অন্তত Cygwin আলকাতরা সংস্করণ আমি ব্যবহার করছি ( "CYGWIN_NT-5,1 1.7.17 (0,262 / 5/ 3) 2012-10-19 14:39 i686 Cygwin" এর উপর একটি উইন্ডোজ এক্সপি হোম এডিশন এসপি 3 মেশিন), বিকল্পগুলির ক্রমটি গুরুত্বপূর্ণ।

এই নির্মাণটি আমার পক্ষে কাজ করার সময়:

tar cfvz target.tgz --exclude='<dir1>' --exclude='<dir2>' target_dir

যে এক করা হয়নি কাজ:

tar cfvz --exclude='<dir1>' --exclude='<dir2>' target.tgz target_dir

এটি, যখন tar --helpনিম্নলিখিতটি প্রকাশ করে:

tar [OPTION...] [FILE]

সুতরাং, দ্বিতীয় কমান্ডটিও কাজ করা উচিত, তবে দৃশ্যত এটি মনে হয় না ...

সেরা আরজিডিএস,


5
কেবল উপরেরটি যুক্ত করতে চান, যে ডিরেক্টরিটি বাদ দেওয়া উচিত তা গুরুত্বপূর্ণ যে চূড়ান্ত ব্যাকস্ল্যাশ থাকতে হবে না। সুতরাং, --exclude = '/ পথ / থেকে / অগ্রাহ্য / dir' এই হল সঠিক , --exclude = '/ পথ / থেকে / অগ্রাহ্য / Dir /' হয় ভুল
GeertVc

17
এটি কারণ লক্ষ্য সংরক্ষণাগার টার্গেট.tgz এফ সুইচের একটি যুক্তি, যা এটি অনুসরণ করা উচিত
ভ্যালেন্টিনো

14

এই প্যাটার্নটি পিএনজি বা এমপি 3 এর মতো ফাইলের নামের প্রত্যয় এবং .git এবং নোড_মডিউলগুলির মতো ডিরেক্টরি নামগুলি হ্যান্ডল করে

tar --exclude={*.png,*.mp3,*.wav,.git,node_modules} -Jcf ${target_tarball}  ${source_dirname}

ধন্যবাদ - এটাই আমি খুঁজছিলাম :)
আলেকজান্ডার ব্র।

11

যাঁদের সমস্যা রয়েছে তাদের ক্ষেত্রে, কিছু দামের ট্যারি কেবলমাত্র './' ব্যতীত মান বাদ দিয়ে সঠিকভাবে কাজ করবে।

Tar --version

তার (জিএনইউ টার) 1.27.1

কমান্ড সিনট্যাক্স যা কাজ করে:

tar -czvf ../allfiles-butsome.tar.gz * --exclude=acme/foo

এগুলি কার্যকর হবে না:

$ tar -czvf ../allfiles-butsome.tar.gz * --exclude=./acme/foo
$ tar -czvf ../allfiles-butsome.tar.gz * --exclude='./acme/foo'
$ tar --exclude=./acme/foo -czvf ../allfiles-butsome.tar.gz *
$ tar --exclude='./acme/foo' -czvf ../allfiles-butsome.tar.gz *
$ tar -czvf ../allfiles-butsome.tar.gz * --exclude=/full/path/acme/foo
$ tar -czvf ../allfiles-butsome.tar.gz * --exclude='/full/path/acme/foo'
$ tar --exclude=/full/path/acme/foo -czvf ../allfiles-butsome.tar.gz *
$ tar --exclude='/full/path/acme/foo' -czvf ../allfiles-butsome.tar.gz *

10

আমি এটি অন্য কোথাও পেয়েছি সুতরাং আমি কৃতিত্ব নেব না, তবে এটি আমার ম্যাক নির্দিষ্ট সমস্যাগুলির জন্য উপরের যে কোনও সমাধানের চেয়ে ভাল কাজ করেছে (এটি বন্ধ থাকলেও):

tar zc --exclude __MACOSX --exclude .DS_Store -f <archive> <source(s)>

2
এই উত্তরের জন্য ধন্যবাদ, ডারউইন-এর টারের একটি পৃথক বাক্য গঠন রয়েছে এবং এটি আমাকে উত্তর দিয়েছিল যে কেন অন্যান্য উত্তরগুলিতে "--excolve = blah" কাজ করছে না। এটি একটি ম্যাক দুর্দান্ত কাজ করেছে।
মাইকেল 14

1
COPYFILE_DISABLE=1টার ব্যবহার করার সময় ভুলে যাবেন না , অন্যথায় আপনি আপনার
টারবলে

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

8

ম্যাক ওএসএক্সের জন্য আমাকে করতে হয়েছিল

tar -zcv --exclude='folder' -f theOutputTarFile.tar folderToTar

-fপরে নোট করুন--exclude=


6

আমি সম্মত - এক্সক্লুড পতাকাটি সঠিক পন্থা।

$ tar --exclude='./folder_or_file' --exclude='file_pattern' --exclude='fileA'

পার্শ্ব প্রতিক্রিয়ার জন্য সতর্কতার একটি শব্দ যা আমি তাত্ক্ষণিকভাবে সুস্পষ্ট দেখতে পেলাম না: এই উদাহরণে 'ফাইলএ'র বর্জন' ফাইলএ 'জন্য অনুসন্ধান করবে অনর্থক!

উদাহরণ: একই নামের একটি ফাইল (ডেটা টেক্সট) সমেত একটি একক উপ-ডিরেক্টরি সহ একটি ডিরেক্টরি

data.txt
config.txt
--+dirA
  |  data.txt
  |  config.docx
  • ব্যবহার যদি --exclude='data.txt'সংরক্ষণাগার থাকবে না উভয় data.txt ফাইল। কোনও নোড_মডিউল ডিরেক্টরি হিসাবে তৃতীয় পক্ষের লাইব্রেরি সংরক্ষণাগারভুক্ত করা হলে এটি অপ্রত্যাশিত ফলাফলের কারণ হতে পারে।

  • এই সমস্যাটি এড়ানোর জন্য পুরো পথটি অবশ্যই নিশ্চিত করুন --exclude='./dirA/data.txt'


5

সম্ভব এড়ানোর জন্য 'xargs: Argument list too long'ব্যবহার করার কারণে ত্রুটি find ... | xargs ...ফাইল হাজার হাজার, আপনি পাইপ আউটপুট করতে পারেন প্রক্রিয়াকরণের findসরাসরি tarব্যবহার find ... -print0 | tar --null ...

# archive a given directory, but exclude various files & directories 
# specified by their full file paths
find "$(pwd -P)" -type d \( -path '/path/to/dir1' -or -path '/path/to/dir2' \) -prune \
   -or -not \( -path '/path/to/file1' -or -path '/path/to/file2' \) -print0 | 
   gnutar --null --no-recursion -czf archive.tar.gz --files-from -
   #bsdtar --null -n -czf archive.tar.gz -T -

আপনি এর মতো 'বাদ' স্ট্রিংটি উদ্ধৃত করতে পারেন: 'সোমারডির / ফাইলসডির / *' তারপরে শেলটি অ্যাসিরিস্টস এবং অন্যান্য সাদা বর্ণগুলি প্রসারিত করবে না।
Znik

xargs -n 1xargs: Argument list too longত্রুটি এড়ানোর জন্য আরেকটি বিকল্প ;)
টাক্সডুড

5

এই থ্রেডটি পড়ার পরে, আমি আরএইচএল 5 এ সামান্য পরীক্ষা করেছি এবং এবিসি ডিরেক্টরিটি সন্ধানের জন্য আমার ফলাফল এখানে রয়েছে:

এটি ডিরেক্টরিতে ত্রুটি এবং লগ এবং সমস্ত ফাইল ডিরেক্টরিতে বাদ দেবে:

tar cvpzf abc.tgz abc/ --exclude='abc/error' --exclude='abc/logs'

বাদ দেওয়া ডিরেক্টরি পরে ওয়াইল্ডকার্ড যুক্ত করা ফাইলগুলি বাদ দেবে তবে ডিরেক্টরিগুলি সংরক্ষণ করবে:

tar cvpzf abc.tgz abc/ --exclude='abc/error/*' --exclude='abc/logs/*'

উপরের দ্বিতীয় উদাহরণে প্রতি বর্জনকারী ধারাটিতে শেষ স্ল্যাশের পরে তারকাচিহ্নগুলি থাকা উচিত, তবে পোস্টটি সেগুলি গ্রহণ করে নি।
মাইক 21

4

তারার সংযোজন (-r) বিকল্পের সাথে একযোগে ফাইন্ড কমান্ডটি ব্যবহার করুন। এই পদ্ধতিতে আপনি দুটি পাসের সমাধানের পরিবর্তে (একটি ফাইলের তালিকা তৈরি করুন, টার তৈরি করুন) পরিবর্তে একটি পদক্ষেপে বিদ্যমান ট্যারে ফাইল যুক্ত করতে পারেন।

find /dir/dir -prune ... -o etc etc.... -exec tar rvf ~/tarfile.tar {} \;

4

আপনার প্রয়োজনীয়তার উপর নির্ভর করে আপনি "- এক্সক্লুড-ট্যাগ" বিকল্পগুলির মধ্যে একটি ব্যবহার করতে পারেন:

  • --exclude-ট্যাগ = ফাইল
  • --exclude-ট্যাগ সব = ফাইল
  • --exclude-ট্যাগ-অধীনে = ফাইল

নির্দিষ্ট করা ফাইলটিকে হোস্টিং করা ফোল্ডারটি বাদ দেওয়া হবে।


4

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

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

এটি লক্ষ্য করার জন্য অত্যন্ত গুরুত্বপূর্ণ:

  1. অপশন ম্যাটারের অর্ডার: ফাইল অপশন এবং ডিরেক্টরিগুলি ব্যাকআপ নেওয়ার চেয়ে আগের - এক্সক্লুটেডটি একই রকম হয় না। এটি আমার পক্ষে কমপক্ষে অপ্রত্যাশিত, কারণ আমার অভিজ্ঞতার সাথে, জিএনইউ / লিনাক্স কমান্ডগুলিতে, সাধারণত বিকল্পগুলির ক্রম কোনও ব্যাপার না।
  2. বিভিন্ন ট্যারি সংস্করণগুলি এই বিকল্পগুলি বিভিন্ন ক্রমে প্রত্যাশা করে: উদাহরণস্বরূপ, @ অ্যান্ড্রুয়ের উত্তরটি ইঙ্গিত দেয় যে জিএনইউ টার ভি 1.26 এবং 1.28 এ বাদ দেওয়া সর্বশেষে আসে, তবে আমার ক্ষেত্রে জিএনইউ ট্যারি 1.29 সহ, এটি অন্যভাবে।
  3. ট্রেলিং স্ল্যাশ ম্যাটার : কমপক্ষে জিএনইউ টার্ক 1.29 এ, এটি কোনও হওয়া উচিত নয়

আমার ক্ষেত্রে, ডিবিয়ান প্রসারিত জিএনইউ ট্যারে 1.29 এর জন্য, যে কমান্ডটি কাজ করেছিল তা ছিল

tar --exclude="/home/user/.config/chromium" --exclude="/home/user/.cache" -cf file.tar  /dir1/ /home/ /dir3/

উক্তিগুলি কোনও বিষয় নয়, এটি তাদের সাথে বা ছাড়াই কাজ করে।

আমি আশা করি এটি কারও কাজে লাগবে।


আপনার উত্তর করার জন্য আপনাকে ধন্যবাদ। আমি একটি সমাধানের জন্য (যা খুব দীর্ঘ সময়ের মতো অনুভূত হয়েছিল) সন্ধান করছিলাম এবং আপনার উত্তর আমাকে সঠিক দিকে পরিচালিত করেছিল। তবে, আমার ক্ষেত্রে (উবুন্টু 18.04.3, টার 1.29) আমি কেবল এটি ফোল্ডারের নাম এবং পথটি নয়, উদাহরণ দিয়ে যুক্ত করতে কাজ করতে পারি eg উদাহরণস্বরূপ: tar --excolve = ফোল্ডার 1 --excolve = ফোল্ডার 2 -czvf / opt / আর্কাইভ। tgz ফোল্ডার
নিতাই

2

আপনি টার্ম ফাইলগুলি তৈরি করতে সিপিও (1) ব্যবহার করতে পারেন। স্টিপিনে সংরক্ষণাগার দেওয়ার জন্য সিপিও ফাইলগুলি গ্রহণ করে, সুতরাং আপনি যদি সংরক্ষণাগারটি ফাইলগুলি নির্বাচন করার জন্য সন্ধানের আদেশটি ইতিমধ্যে সন্ধান করে থাকেন, তার ফাইলটি তৈরি করতে সিপিওতে পাইপ করুন:

find ... | cpio -o -H ustar | gzip -c > archive.tar.gz

2

gnu tar v 1.26 - --cl برخهটি সংরক্ষণাগার ফাইল এবং ব্যাকআপ ডিরেক্টরি আর্গুমেন্টের পরে আসা দরকার, কোনও অগ্রণী বা ট্রেলিং স্ল্যাশ থাকা উচিত নয় এবং কোনও উদ্ধৃতি (একক বা ডাবল) পছন্দ করে না। ব্যাক আপ করার জন্য প্যারেন্ট ডিরেক্টরি সম্পর্কিত তাই, এটি:

tar cvfz /path_to/mytar.tgz ./dir_to_backup --exclude=some_path/to_exclude


অনেক পরীক্ষার পরে আমি আমার কমান্ডটি কম-বেশি একই জিনিস খুঁজে পেয়েছি tar (GNU tar) 1.28
পিকআউটপুটসিএল

2
tar -cvzf destination_folder source_folder -X /home/folder/excludes.txt

-এক্স এমন একটি ফাইল নির্দেশ করে যা ফাইলের একটি তালিকা ধারণ করে যা অবশ্যই ব্যাকআপ থেকে বাদ দেওয়া উচিত। দৃষ্টান্তের জন্য, আপনি ব্যাকআপে with দিয়ে শেষ হওয়া কোনও ফাইলের নাম অন্তর্ভুক্ত না করার জন্য এই ফাইলটিতে * specify নির্দিষ্ট করতে পারেন।


আমি মনে করি, এটি সর্বোত্তম সমাধান, কারণ এটি এমনকি সেই ক্ষেত্রে কাজ করে যে বাদ পড়ার সংখ্যা বেশি। অপশন tar cXvfJ EXCLUDE-LIST ARCHIVE.tar.xz SOURCE-FOLDER
প্যাকটিতে

0

আপনার সেরা বেটটি হল জার্গেজের মাধ্যমে টার সাথে সন্ধান করা (প্রচুর সংখ্যক যুক্তি পরিচালনা করার জন্য)। উদাহরণ স্বরূপ:

find / -print0 | xargs -0 tar cjf tarfile.tar.bz2

4
এটি টারকে একাধিকবার আহ্বান করতে পারে - এবং বারবার ফাইলগুলিও প্যাক করবে। সঠিক:find / -print0 | tar -T- --null --no-recursive -cjf tarfile.tar.bz2
jørgensen

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

0

সম্ভাব্য অপ্রয়োজনীয় উত্তর কিন্তু যেহেতু আমি এটি দরকারী পেয়েছি তাই এটি এখানে:

ফ্রিবিএসডি রুট করার সময় (যেমন সিএসএস ব্যবহার করে) আমি আমার পুরো রুট ফাইল সিস্টেমটি / এমএনটিতে অনুলিপি করতে চেয়েছিলাম তবে / ইউএসআর এবং (স্পষ্টতই) / এমএনটি ছাড়াই কপি করতে চেয়েছিলাম। এটিই কাজ করেছিল (আমি এখানে / আছি):

tar --exclude ./usr --exclude ./mnt --create --file - . (cd /mnt && tar xvd -)

আমার পুরো বিষয়টি হ'ল এটি প্রয়োজনীয় ছিল ( ./ রেখে ) উল্লেখ করতে হবে যে বাদ দেওয়া ডিরেক্টরিগুলি যেখানে বৃহত্তর ডিরেক্টরিটির অংশটি অনুলিপি করা হচ্ছে।

আমার € 0.02


0

কয়েক স্তরের গভীর 5 গিগাবাইট উপ-ডিরেক্টরিকে বাদ দেওয়ার জন্য আমার ভাগ্য নেই। শেষ পর্যন্ত, আমি সবেমাত্র ইউনিক্স জিপ কমান্ডটি ব্যবহার করেছি। এটি আমার পক্ষে অনেক সহজ কাজ করেছে।

সুতরাং আসল পোস্ট থেকে এই নির্দিষ্ট উদাহরণের জন্য
(টার - এক্সক্লুড = '। / ফোল্ডার' --excolve = '। / আপলোড / ফোল্ডার 2' -zcvf /backup/filename.tgz।)

সমান হবে:

জিপ-আর / ব্যাকআপ / ফাইল ফাইল.জিপ। -x আপলোড / ফোল্ডার / ** \ * আপলোড / ফোল্ডার 2 / ** \ *

(দ্রষ্টব্য: আমি পোস্টটি এখানে মূলত ব্যবহার করেছি যা আমাকে /superuser/312301/unix-zip-directory-but-excused-specific-subdirectories-and-everything-within-t- এ সহায়তা করেছে )


3
সাবধান: zipখালি ডিরেক্টরিগুলি প্যাক করে না, তবে tarকরে!
t0r0X

0

এটা দেখ

tar cvpzf zip_folder.tgz . --exclude=./public --exclude=./tmp --exclude=./log --exclude=fileName

0

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

/ Var / lib / tomcat7 / ওয়েব অ্যাপস থেকে কৌণিক ফোল্ডারটি সংকুচিত করুন, এঙ্গুলার নামের সাথে / tmp ফোল্ডারে সরান

আদেশ:

tar --exclude='.git' -zcvf /tmp/angular.23.12.19.tar.gz /var/lib/tomcat7/webapps/angular/

0

সাফল্যের কেস: ১) ব্যাকআপ নেওয়ার জন্য পুরো পথ দিলে, বাদেও পুরো পথ ব্যবহার করা উচিত।

tar -zcvf /opt/ABC/BKP_27032020/backup_27032020.tar.gz --excolve = '/ opt / ABC / csv / ' --excolve = '/ opt / ABC / log / ' / opt / ABC

২) ব্যাকআপ নেওয়ার জন্য যদি বর্তমান পাথ দেয়, তবে বাদ দিয়েও কেবল বর্তমান পথ ব্যবহার করা উচিত।

tar -zcvf ব্যাকআপ_27032020.tar.gz --excolve = 'এবিসি / সিএসভি / ' --excolve = 'এবিসি / লগ / ' এবিসি

ব্যর্থতা কেস:

  1. যদি কারেন্টপথ ডিরেক্টরিটিকে ব্যাকআপ নিতে এবং পুরো উপায়ে উপেক্ষা করার নির্দেশনা দেয়, তবে কাজ করবে না

    tar -zcvf /opt/ABC/BKP_27032020/backup_27032020.tar.gz --excolve = '/ opt / ABC / csv / ' --excolve = '/ opt / ABC / log / ' ABC

দ্রষ্টব্য: ব্যাকআপ ডিরেক্টরি আগে বা পরে বাদ দেওয়া উল্লেখ করা ভাল।


0

আপনি যদি ভার্সন কন্ট্রোল সিস্টেম (ভিসিএস) ফাইলগুলি বাদ দেওয়ার চেষ্টা করছেন তবে তার সম্পর্কে ইতিমধ্যে দুটি আকর্ষণীয় বিকল্প সমর্থন করে! :)

  1. বিকল্প: --exclude-vcs

এই বিকল্পটি বাদ ফাইল ও ডিরেক্টরিগুলি সংস্করণ কন্ট্রোল সিস্টেম অনুসরণ করে ব্যবহৃত: CVS, RCS, SCCS, SVN, Arch, Bazaar, Mercurial, এবং Darcs

সংস্করণ 1.32 হিসাবে, নিম্নলিখিত ফাইলগুলি বাদ দেওয়া হয়েছে:

  • CVS/, এবং এর অধীনে সমস্ত কিছু
  • RCS/, এবং এর অধীনে সমস্ত কিছু
  • SCCS/, এবং এর অধীনে সমস্ত কিছু
  • .git/, এবং এর অধীনে সমস্ত কিছু
  • .gitignore
  • .gitmodules
  • .gitattributes
  • .cvsignore
  • .svn/, এবং এর অধীনে সমস্ত কিছু
  • .arch-ids/, এবং এর অধীনে সমস্ত কিছু
  • {arch}/, এবং এর অধীনে সমস্ত কিছু
  • =RELEASE-ID
  • =meta-update
  • =update
  • .bzr
  • .bzrignore
  • .bzrtags
  • .hg
  • .hgignore
  • .hgrags
  • _darcs

    1. বিকল্প: --exclude-vcs- উপেক্ষা

যখন ডিরেক্টরি যে কিছু সংস্করণ নিয়ন্ত্রণ ব্যবস্থা (VCS) অধীনে আছে সংরক্ষণাগারভুক্ত, এটা প্রায়ই সুবিধাজনক এই VCS 'থেকে বাদ নিদর্শন পড়তে উপেক্ষা ফাইল (যেমন .cvsignore, .gitignoreইত্যাদি) এই বিকল্পটি যেমন সম্ভাবনা প্রদান।

একটি ডিরেক্টরি সংরক্ষণাগারভুক্ত করার আগে দেখতে হলে নিম্নলিখিত ফাইল কোন রয়েছে: cvsignore, .gitignore, .bzrignore, অথবা .hgignore। যদি তা হয় তবে এই ফাইলগুলি থেকে উপেক্ষা করার ধরণগুলি পড়ুন।

সংশ্লিষ্ট ভিসিএস তাদের আচরণ করবে যেমন নিদর্শনগুলি তেমন ব্যবহার করা হয়, যেমন:

.cvsignore

শেল-স্টাইলের গ্লোববিং নিদর্শনগুলি রয়েছে যা কেবলমাত্র এই ডিরেক্টরিতে থাকে যেখানে এই ফাইলটি থাকে। ফাইলটিতে কোনও মন্তব্যের অনুমতি নেই। খালি লাইন উপেক্ষা করা হয়।

.gitignore

শেল-স্টাইলের গ্লোববিং নিদর্শনগুলি ধারণ করে। ডিরেক্টরি যেখানে .gitfileঅবস্থিত এবং এর সমস্ত উপ- ডিরেক্টরিতে প্রয়োগ হয় ।

একটি দিয়ে শুরু যে কোনও লাইন #একটি মন্তব্য। ব্যাকস্ল্যাশ মন্তব্য চরিত্রটি থেকে মুক্তি পেয়েছে।

.bzrignore

শেল গ্লোব্বিং-প্যাটার্ন এবং নিয়মিত এক্সপ্রেশন থাকে (যদি এর আগে উপস্থাপন করা হয় RE:(16)। প্যাটার্নগুলি ডিরেক্টরি এবং এর সমস্ত উপ-ডিরেক্টরিকে প্রভাবিত করে।

একটি দিয়ে শুরু যে কোনও লাইন #একটি মন্তব্য।

.hgignore

পিক্সিস নিয়মিত এক্সপ্রেশন থাকে (17)। লাইনটি syntax: globশেল গ্লোববিং নিদর্শনগুলিতে স্যুইচ করে। লাইনটি syntax: regexpআবার ফিরে যায়। মন্তব্য একটি দিয়ে শুরু #। প্যাটার্নগুলি ডিরেক্টরি এবং এর সমস্ত উপ-ডিরেক্টরিকে প্রভাবিত করে।

  1. উদাহরণ

tar -czv --exclude-vcs --exclude-vcs-ignores -f path/to/my-tar-file.tar.gz path/to/my/project/


-1

নিম্নলিখিত বাশ স্ক্রিপ্টটি কৌশলটি করা উচিত। এটি এখানে মার্কস সুন্দম্যানের দেওয়া উত্তর ব্যবহার করে ।

#!/bin/bash

echo -n "Please enter the name of the tar file you wish to create with out extension "
read nam

echo -n "Please enter the path to the directories to tar "
read pathin

echo tar -czvf $nam.tar.gz
excludes=`find $pathin -iname "*.CC" -exec echo "--exclude \'{}\'" \;|xargs`
echo $pathin

echo tar -czvf $nam.tar.gz $excludes $pathin

এটি আপনার প্রয়োজনীয় কমান্ডটি মুদ্রণ করবে এবং আপনি কেবল এটি অনুলিপি করে পেস্ট করতে পারেন directly সরাসরি কমান্ড লাইনে এটি সরবরাহ করার জন্য আরও দুর্দান্ত উপায় রয়েছে।

আপনি বাদ দিতে চান এমন অন্য কোনও সাধারণ এক্সটেনশন, ফাইলের নাম বা রেজেক্সের জন্য কেবল * .CC পরিবর্তন করুন এবং এটি এখনও কাজ করা উচিত।

সম্পাদনা

শুধু একটু ব্যাখ্যা যোগ করতে; অনুসন্ধানটি নির্বাচিত রেজেক্সের সাথে ম্যাচের ফাইলগুলির একটি তালিকা তৈরি করে (এই ক্ষেত্রে * .CC)। এই তালিকাটি xargs এর মাধ্যমে ইকো কমান্ডে প্রেরণ করা হবে। এই মুদ্রণ - তালিকা 'তালিকা থেকে একটি এন্ট্রি' অন্তর্ভুক্ত। স্ল্যাশ () 'চিহ্নের জন্য অব্যাহতি অক্ষর।


1
ইন্টারেক্টিভ ইনপুট প্রয়োজন বেশিরভাগ শেল স্ক্রিপ্টগুলির জন্য ডিজাইন পছন্দ নয় choice পরিবর্তে এটি কমান্ড-লাইন প্যারামিটারগুলি পড়ুন এবং আপনি শেলের ট্যাব সমাপ্তি, ইতিহাস সমাপ্তি, ইতিহাস সম্পাদনা ইত্যাদির সুবিধা পাবেন
ট্রিপল

1
অতিরিক্তভাবে, আপনার স্ক্রিপ্টটি এমন পাথের জন্য কাজ করে না যেখানে শ্বেতক্ষেত্র বা শেল মেটাচার্যাক্টর রয়েছে। আপনার বিশেষত শ্বেত স্পেস টোকেনাইজেশন এবং ওয়াইল্ডকার্ড সম্প্রসারণের জন্য শেলটির প্রয়োজন না হলে আপনার মূলত সর্বদা ডাবল কোটে ভেরিয়েবলগুলি রাখা উচিত । বিস্তারিত জানার জন্য, দয়া করে দেখুন stackoverflow.com/questions/10067266/...
tripleee
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.