আমি কোনও ফোল্ডারে সমস্ত জিপ ফাইল পরীক্ষা করতে পারি কিনা তা যাচাই করতে হলে তারা কীভাবে দূষিত হয় কিনা তা যাচাই করতে পারেন?


20

অনেক আগেই সিটিএফটিস্ট নামে একটি ইউটিলিটি ছিল যা বেশ সুন্দরভাবে করছিল, কিন্তু এটি অদৃশ্য হয়ে গেছে।

মূলত, আমি একটি অনুরূপ সরঞ্জাম (বিশেষত গ্রাফিকাল) খুঁজছেন যা একটি প্রদত্ত পথ (বিশেষত সাবফোল্ডারদের সহ) অতিক্রম করবে এবং এটি যে সমস্ত জিপ ফাইল খুঁজে পাবে তা পরীক্ষা করবে।

Decent লগিং বিকল্প একটি প্লাস হতে হবে।


4
কোন অপারেটিং সিস্টেম?
Matteo

কোন সাম্প্রতিক প্যাকার সংরক্ষণাগার অখণ্ডতা চেক করতে পারেন।
Overmind

উত্তর:


15

প্রতিটি সাবফোল্ডারে প্রতিটি জিপ ফাইল খুঁজুন

এটি বর্তমান ফোল্ডারের সমস্ত সাবফোল্ডারগুলিতে পাওয়া যাবে ( . ) ফাইলগুলো ( -type f ) এক্সটেনশন সঙ্গে zip (অথবা ZIP অথবা Zip অথবা zIp এবং তাই, ক্ষেত্রে উপেক্ষা করা হয়, -iname ) এবং তাদের সততা পরীক্ষা (বিকল্প -t ) শান্ত হচ্ছে (বিকল্প -qএকসঙ্গে -tq )। বেশিরভাগ অর্থ হচ্ছে: জিপ-ফাইলের সামগ্রী তালিকাভুক্ত করবেন না, তবে শুধুমাত্র পরীক্ষার ফলাফল প্রতিবেদন করুন।

find . -type f -iname '*.zip' -exec unzip -tq {} \;

শুধু বর্তমান ফোল্ডার (কোন সাবফোল্ডার)

আপনি যদি বর্তমান ডিরেক্টরির মধ্যে ফাইলগুলি পরীক্ষা করতে চান তবে কোনও সাবফোল্ডারের মধ্যে এটি ব্যবহার করবেন না

unzip -tq '*.[Zz][Ii][Pp]'

জিপ ফাইল সঙ্গে ডিরেক্টরির মধ্যে। এই ফাইল এক্সটেনশন জন্য চেক ZIP অথবা Zip অথবা zIp এবং তাই, ক্ষেত্রে উপেক্ষা করা হয়।


এবং যদি আপনি উইন্ডোজ হয় এবং আছে না find, সিগুইন ইনস্টল করুন।
Daniel R Hicks

2
... অথবা ব্যবহার করুন for কমান্ড।
Karan

... বা ডাউনলোড করুন gnuwin32.sourceforge.net
Franck Dernoncourt

2
যদি অনেক জিপ ফাইল থাকে, অথবা যদি এটি অনেক ফাইল ধারণ করে, কম verbose আউটপুট পছন্দসই হতে পারে। এর জন্য unzip এর -q বিকল্পটি ব্যবহার করুন: unzip -tq
malamut

1
অথবা উইন্ডোজের জন্য গিট ইনস্টল করুন (যদি আপনি বিকাশকারী হয়ে থাকেন তবে এটি ইতিমধ্যেই থাকতে পারে) যা একটি ব্যাশ এবং অন্যান্য সহায়ক সহায়ক gnu ক্লি সরঞ্জামগুলির সাথে আসে।
wp78de

14

আমি উইন্ডোজ ব্যবহার করি 7zip : এটি একটি গ্রাফিকাল ইউজার ইন্টারফেস সরবরাহ করে, এটি বিনামূল্যে এবং জিপ সহ আর্কাইভ ফাইল ফর্ম্যাটগুলির বিস্তৃত সমর্থন করে।

আপনি উইন্ডোজ এক্সপ্লোরার বিশ্লেষণ করতে চান প্রদত্ত ফোল্ডার নেভিগেট করুন। সন্ধান করা *.zip, সব ফাইল নির্বাচন করুন, ডান ক্লিক করুন, নির্বাচন করুন "টেস্ট আর্কাইভ"

enter image description here

তারপরে অপেক্ষা করুন (এটি নজর দিন যে 7z এর আগে পরীক্ষা শুরু করার আগে explorer.exe এর জন্য 100,000 .zip এর মধ্যে 10 মিনিট সময় লাগবে):

enter image description here


8

এরিকের উত্তরটি ম্যাকের জন্য আমার জন্য কাজ করে নি তবে এটি বর্তমান ফোল্ডার এবং সমস্ত সাবফোল্ডারগুলিতে জিপগুলির জন্য কাজ করে:

find . -name '*.zip' -exec unzip -tq {} \;

প্রতিটি ফাইলের জন্য এই আউটপুট:

No errors detected in compressed data of ./2013-10-16.zip.

2

দ্রুত পাওয়ারশেল কমান্ড - 7 জিপ এর কমান্ড লাইন ব্যবহার করে "টি" সুইচ

$7z = "T:\folder\to\7z.exe"
Dir "C:\folder\to\check" -r -include @("*.zip","*.7z") | % { & $7z t $_ -r}

আউটপুট

7-Zip 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18

Processing archive: D:\testfile.zip

Testing     my test file.txt
Testing     second file.doc

Everything is Ok

Folders: 0
Files: 2
Size:       10353
Compressed: 5721

1

আপনি যা জিজ্ঞাসা করেছেন তা বেশিরভাগ ক্ষেত্রেই নাও হতে পারে তবে জিপ 2 ফিক্স নামে একটি সরঞ্জাম রয়েছে।

আমি এটি ব্যবহার করে নি কিন্তু আপনি এখান থেকে এটি ডাউনলোড করতে পারেন:

http://leelusoft.blogspot.com/2011/06/zip2fix-10.html


0

এখানে এক বা একাধিক ফোল্ডারে অবস্থিত জিপ ফাইলগুলি পরীক্ষা করার জন্য পাইথনের একটি স্ক্রিপ্ট নীচে। আমি উইন্ডোজ 7 এসপি 1 এক্স 64 আলটিমেট এ এটি পরীক্ষা করেছি কিন্তু আমি এটি কোনো OS তে কাজ করার আশা করি।

আউটপুট উদাহরণ:

Total time spent was 577.64 seconds, checking 100 files, totaling 77.06 GB, 
among which 0 were corrupted.

লিপি:

'''
Test if the zip files are not corrected
'''

from __future__ import print_function
from __future__ import division

import sys
import zipfile
import glob
import os
import time

def test_zipfile(filepath):
    '''
    Test whether a zipfile is valid
    Some lines were taken from http://stackoverflow.com/questions/4875747/python-script-to-check-if-a-zip-file-is-corrupt
    '''
    start_time = time.time()
    filesize = os.path.getsize(filepath)
    print('Starting testing file: {0} ({1:.2f} MB)'.format(filepath,filesize/10**6), end='')
    the_zip_file = zipfile.ZipFile(filepath)
    ret = the_zip_file.testzip()
    time_spent = time.time() - start_time
    print('\tTest ended. Time spent: {0:.2f} s'.format(time_spent))
    if ret is not None:
        print("First bad file in zip {0}: {1}".format(filepath,ret))
        is_valid = False
    else:
        #print "Zip file is good."
        is_valid = True

    return is_valid, time_spent, filesize


def main():
    '''
    This is the main function
    '''

    # Parameters
    zipfiles_root_folder = '.'
    log_filepath_corrupted = 'result_corrupted.log'
    log_file_corrupted = open(log_filepath_corrupted, 'w')
    log_filepath_valid = 'result_valid.log'
    log_file_valid = open(log_filepath_valid, 'w')
    zipfile_filepaths = sorted(glob.iglob(os.path.join(zipfiles_root_folder, '*', '*.zip'))) # Modify this to whatever folders you need

    # Testing zipfiles
    start_time = time.time()
    total_filesize = 0
    number_of_corrupted_zipfile = 0
    for zipfile_filepath in zipfile_filepaths: # generator, search immediate subdirectories 
        is_valid, test_zipfile_time_spent, filesize = test_zipfile(zipfile_filepath)
        total_filesize += filesize
        if is_valid:
            log_file_valid.write('{0}\n'.format(zipfile_filepath))
        else:
            log_file_corrupted.write('{0}\n'.format(zipfile_filepath))
            number_of_corrupted_zipfile += 1

    # Cleaning  
    log_file_corrupted.close()
    log_file_valid.close()

    time_spent = time.time() - start_time
    print('Total time spent was {0:.2f} seconds, checking {1} files, totaling {2:.2f} GB, among which {3} were corrupted.'.format(time_spent, len(zipfile_filepaths),total_filesize/10**9,number_of_corrupted_zipfile))


if __name__ == "__main__":
    main()
    #cProfile.run('main()') # if you want to do some profiling

এটি একটি লগ ফাইলেও রয়েছে যা সমস্ত বৈধ জিপ ফাইলগুলি সহ সমস্ত দূষিত জিপ ফাইল ধারণকারী একটি লগ ফাইল ধারণ করে।

7 জিপের বিরুদ্ধে গতি বেঞ্চমার্ক: 577.64 সেকেন্ড পাইথন বনাম 609 সেকেন্ড 7 জিপ

enter image description here

enter image description here

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.