আমি প্রশ্নটি পেয়েছি কীভাবে এটি নির্ধারণ করতে হবে যে কোনও ফাইল ছাড়াই ডেটা বৈধ টার ফাইল? , তবে আমি ভাবছিলাম: একটি প্রস্তুত কমান্ড লাইন সমাধান আছে?
আমি প্রশ্নটি পেয়েছি কীভাবে এটি নির্ধারণ করতে হবে যে কোনও ফাইল ছাড়াই ডেটা বৈধ টার ফাইল? , তবে আমি ভাবছিলাম: একটি প্রস্তুত কমান্ড লাইন সমাধান আছে?
উত্তর:
কেবলমাত্র তারবালের একটি তালিকা পাওয়ার সাথে সাথে ফাইলটি সঙ্কুচিত না করে আউটপুট ফেলে দেওয়া হবে?
tar -tzf my_tar.tar.gz >/dev/null
মন্তব্য অনুযায়ী সম্পাদিত। ধন্যবাদ জরাজম!
মন্তব্য অনুযায়ী সম্পাদনা করুন। ধন্যবাদ হিমায়িত শিখা! এই পরীক্ষাটি কোনওভাবেই ডেটার অখণ্ডতা বোঝায় না। কারণ এটি একটি টেপ সংরক্ষণাগার ইউটিলিটি হিসাবে ডিজাইন করা হয়েছিল বেশিরভাগ টারের প্রয়োগগুলি একই ফাইলটির একাধিক অনুলিপিগুলিকে অনুমতি দেবে!
-z
বিকল্পটি অপ্রয়োজনীয় করা হয়। এটি এক্সট্র্যাক্ট বা তালিকা মোডে কিছুই করে না।
-z
জিএনইউ টারের ক্ষেত্রে অবশ্যই এটি হয়েছে - আপনি কি জানেন যে এটি অন্য কোথাও (বিএসডি ইত্যাদি) সত্য?
tar.gz
? কোন সমর্থন তথ্য?
আপনি সম্ভবত ফাইলগুলির অখণ্ডতা পরীক্ষা করতে gzip -t বিকল্পটি ব্যবহার করতে পারেন
http://linux.about.com/od/commands/l/blcmdl1_gzip.htm
জিজিপ ফাইলটি পরীক্ষা করা দুর্নীতিগ্রস্থ নয়:
gunzip -t file.tar.gz
ভিতরে থাকা ফাইল ফাইলটি পরীক্ষা করা দুর্নীতিগ্রস্থ নয়:
gunzip -c file.tar.gz | tar -t > /dev/null
ব্যাকআপের অংশ হিসাবে আপনি সম্ভবত কেবল পরবর্তী কমান্ডটি চালাতে পারেন এবং $ এর মান পরীক্ষা করতে পারেন? পরে একটি 0 (সাফল্য) মান জন্য। যদি টার বা জিপ-এর কোনও সমস্যা থাকে, তবে? একটি শূন্য অ মান হবে।
bzip2 -t file.bz2
bz2 ফাইলের জন্য।
tar -t > /dev/null
(নোট: t
বনাম -t
) হওয়ার কথা নয় ?
আপনি যদি ডিস্কে এক্সট্র্যাক্ট না করেই একটি টার ফাইলের প্রকৃত পরীক্ষার এক্সট্রাক্ট করতে চান তবে -O বিকল্পটি ব্যবহার করুন। এটি এক্সট্র্যাক্টটিকে ফাইল সিস্টেমের পরিবর্তে স্ট্যান্ডার্ড আউটপুটে নিয়ে যায়। যদি টার ফাইলটি দূষিত হয় তবে প্রক্রিয়াটি একটি ত্রুটির সাথে বাতিল হয়ে যাবে।
ব্যর্থ টার বল পরীক্ষার উদাহরণ ...
$ echo "this will not pass the test" > hello.tgz
$ tar -xvzf hello.tgz -O > /dev/null
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors
$ rm hello.*
কাজের উদাহরণ ...
$ ls hello*
ls: hello*: No such file or directory
$ echo "hello1" > hello1.txt
$ echo "hello2" > hello2.txt
$ tar -cvzf hello.tgz hello[12].txt
hello1.txt
hello2.txt
$ rm hello[12].txt
$ ls hello*
hello.tgz
$ tar -xvzf hello.tgz -O
hello1.txt
hello1
hello2.txt
hello2
$ ls hello*
hello.tgz
$ tar -xvzf hello.tgz
hello1.txt
hello2.txt
$ ls hello*
hello1.txt hello2.txt hello.tgz
$ rm hello*
> /dev/null
কাজের উদাহরণের জন্যও ব্যবহার করা উচিত ।
আপনি pigz
সংরক্ষণাগার চেকটি দ্রুত করতে * .tag.gz ফাইলের সামগ্রী (সমান্তরাল জিজিপ ) ব্যবহার করে পরীক্ষা করতে পারেন :
pigz -cvdp number_of_threads /[...]path[...]/archive_name.tar.gz | tar -tv > /dev/null
একটি দুর্দান্ত বিকল্পটি হ'ল ব্যবহার করা tar -tvvf <filePath>
যা কোনও লাইন যুক্ত করে যা ফাইলের ধরণের প্রতিবেদন করে।
একটি বৈধ .tar ফাইলের উদাহরণ:
> tar -tvvf filename.tar
drwxr-xr-x 0 diegoreymendez staff 0 Jul 31 12:46 ./testfolder2/
-rw-r--r-- 0 diegoreymendez staff 82 Jul 31 12:46 ./testfolder2/._.DS_Store
-rw-r--r-- 0 diegoreymendez staff 6148 Jul 31 12:46 ./testfolder2/.DS_Store
drwxr-xr-x 0 diegoreymendez staff 0 Jul 31 12:42 ./testfolder2/testfolder/
-rw-r--r-- 0 diegoreymendez staff 82 Jul 31 12:42 ./testfolder2/testfolder/._.DS_Store
-rw-r--r-- 0 diegoreymendez staff 6148 Jul 31 12:42 ./testfolder2/testfolder/.DS_Store
-rw-r--r-- 0 diegoreymendez staff 325377 Jul 5 09:50 ./testfolder2/testfolder/Scala.pages
Archive Format: POSIX ustar format, Compression: none
দূষিত .আরটি ফাইল:
> tar -tvvf corrupted.tar
tar: Unrecognized archive format
Archive Format: (null), Compression: none
tar: Error exit delayed from previous errors.
এগুলি খুব উপ-অনুকূল সমাধান। থেকে GZIP বৈশিষ্ট
আইডি 2 (আইডেন্টিফিকেশন 2)
ফাইলটি জিজিপ ফর্ম্যাটে রয়েছে বলে চিহ্নিত করার জন্য এগুলির স্থির মান ID1 = 31 (0x1f, \ 037), ID2 = 139 (0x8b, \ 213) রয়েছে।
আপনি যে কোনও ভাষা ব্যবহার করছেন তাতে কোড করতে হবে।
> -O বিকল্পটি ব্যবহার করুন। [...] যদি টার ফাইলটি দূষিত হয়, ত্রুটি সহ প্রক্রিয়াটি বাতিল হয়ে যাবে।
কখনও কখনও হ্যাঁ, তবে কখনও কখনও না। আসুন একটি দূষিত ফাইলের উদাহরণ দেখুন:
echo Pete > my_name
tar -cf my_data.tar my_name
# // Simulate a corruption
sed < my_data.tar 's/Pete/Fool/' > my_data_now.tar
# // "my_data_now.tar" is the corrupted file
tar -xvf my_data_now.tar -O
এটা দেখায়:
my_name
Fool
মৃত্যুদণ্ড কার্যকর করলেও
echo $?
টার বলেছিল যে কোনও ত্রুটি নেই:
0
তবে ফাইলটি দূষিত হয়েছিল, এটি এখন "পিট" এর পরিবর্তে "বোকা"।
-v
আপনি যদি কেবলমাত্র আউটপুটটি পাইপ করছেন তবে কেন ব্যবহার করবেন/dev/null
?