linux - নির্দিষ্ট ফাইল/ফোল্ডার ছাড়া tar ডিরেক্টরি কমান্ড শেল




কম্পিউটারে ফোল্ডার লক করার উপায় (16)

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

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

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

আমার একটি ডিরেক্টরি আছে যা একটি সাব ডিরেক্টরি দিয়ে সংরক্ষণ করা দরকার যার বেশ কয়েকটি বড় ফাইল রয়েছে যা আমাকে ব্যাকআপের প্রয়োজন নেই।

বেশ সমাধান নেই:

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

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

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

যে কেউ একটি ভাল / আরো দক্ষ সমাধান মনে করতে পারেন?

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

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

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

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

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

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

যদি আপনি নিম্নলিখিত গঠন আছে

/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

সুতরাং, আপনি এমন একটি tar ফাইল তৈরি করতে চান যার ভিতরে / home / ftp / mysite (সাইটের নতুন সার্ভারে স্থানান্তরিত করার জন্য) সন্নিবেশ রয়েছে, তবে file3 ঠিক জাঙ্ক এবং folder3 এর folder3 প্রয়োজন নেই, তাই আমরা folder3 বাদ দেব দুই।

আমরা বিন্যাস ব্যবহার করুন

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

যেখানে c = create, z = zip, এবং v = verbose (আপনি যে ফাইলগুলি প্রবেশ করেছেন সেগুলি দেখতে পারেন, দরকারীগুলি নিশ্চিত করার জন্য দরকারী যা আপনার বাইরে থাকা কোনও ফাইল যোগ করা হচ্ছে না)। এবং f = ফাইল।

তাই, আমার কমান্ড এই মত চেহারা হবে

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

উল্লেখিত ফাইল / ফোল্ডারগুলিকে নোট করুন আপনার tar এর মূলত তুলনামূলকভাবে (আমি এখানে সম্পর্কিত সম্পূর্ণ পাথ চেষ্টা করেছি / কিন্তু আমি সেটি তৈরি করতে পারছি না)।

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


আপনার সেরা বেট xargs মাধ্যমে (টার মধ্যে বড় আর্গুমেন্ট হ্যান্ডেল) tar, সঙ্গে খুঁজে ব্যবহার করা হয়। উদাহরণ স্বরূপ:

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

আপনি tar ফাইল তৈরি করতে cpio (1) ব্যবহার করতে পারেন। cpio ফাইলগুলি stdin এ সংরক্ষণ করতে নেয়, তাই যদি আপনি ইতোমধ্যে ফাইলটি সংরক্ষণ করার জন্য অনুসন্ধান কমান্ডটিকে খুঁজে বের করে ফেলেছেন তবে এটি টিপ ফাইল তৈরি করতে cpio এ পাইপ করুন:

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

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

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

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


আপনি তাই tar জন্য একাধিক বাদে বিকল্প থাকতে পারে

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

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


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

তাই মূল পোস্ট থেকে এই বিশেষ উদাহরণ জন্য
(tar --exclude = '। / ফোল্ডার' --exclude = '। / upload / ফোল্ডার 2' -zcvf / backupup / filename.tgz।)

সমতুল্য হবে:

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

(দ্রষ্টব্য: এখানে মূলত ব্যবহৃত পোস্টটি আমাকে সাহায্য করেছে https://superuser.com/questions/312301/unix-zip-directory-but-excluded-specific-subdirectories-and-everything-within-t স্পেসিফিকেশান- subdirectories- এবং-আমি সবকিছু-within-t)


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

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

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]

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

সেরা rgds,


আমি সম্মত - exclude পতাকা ডান পদ্ধতির।

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

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

উদাহরণ: একই নামের একটি ফাইল ধারণকারী একটি সাবডিরেক্টরি সহ একটি ডিরেক্টরি (data.txt)

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

  • এই সমস্যাটি এড়ানোর জন্য পুরো পথটি দিতে ভুলবেন না, যেমন - --exclude='./dirA/data.txt'


এই প্যাটার্ন বহির্ভূত ফাইলনাম suffix যেমন PNG বা MP3 মত পাশাপাশি ডিরেক্টরি নাম .git এবং node_modules

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

এটা দেখ

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

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

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

--exclude= পরে -f উল্লেখ্য


যার সাথে এটি সমস্যা রয়েছে, তার জন্য কিছু সংস্করণ কেবল মান বাদে './' ছাড়া সঠিকভাবে কাজ করবে।

Tar --version

tar (GNU tar) 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 *

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

একটি ফ্রিBSD রুট (অর্থাৎ সিএসএস ব্যবহার করে) আমি আমার সম্পূর্ণ রুট ফাইল সিস্টেমটি / mnt তে অনুলিপি করতে চাই কিন্তু / usr এবং (অবশ্যই) / mnt ছাড়া। এই কাজ কি (আমি / এ):

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

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

আমার € 0.02


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

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





tar