آموزش لینوکس

در این وبلاگ مطالبی در خصوص سیستم عامل لینوکس به اشتراک گذاشته می شود.

آموزش لینوکس

در این وبلاگ مطالبی در خصوص سیستم عامل لینوکس به اشتراک گذاشته می شود.

دستور split

يكشنبه, ۱۳ مرداد ۱۳۹۸، ۰۸:۴۱ ب.ظ

* اگر کاربر بخواهد یک فایل 10 گیگابایتی را توسط یک فلش مموری 2 گیگابایتی، به دستگاه دیگری منتقل نماید، راه حل چیست؟

* چنانچه در بستر شبکه، بر روی اندازه فایل‌ها محدودیت حجم 500 مگابایت قرار داده باشند، برای انتقال یک فایل 5 گیگابایتی چه باید کرد؟

* برای انتقال یک فایل 8 گیگابایتی با استفاده از رسانه انتقالی که فایل سیستم آن FAT32 باشد، از چه روشی می‌توان بهره برد؟ (حداکثر حجم فایل در سیستم فایل FAT32 برابر با 4 گیگابایت می باشد)

* گاهی حجم فایل‌های آرشیو (Log File) بسیار زیاد می‌شود، به اندازه ایی که حتی باز کردن این فایل ها در یک ویرایشگر، می تواند به حافظه دستگاه آسیب رسانده و آن را کند نماید. معمولا کاربر فقط یک قسمت از فایل را برای پردازش یا تجزیه و تحلیل در یک زمان نیاز دارد. در این حالت از چه روشی می‌توان استفاده نمود؟

& راه حل ساده برای موارد بالا و سایر موضوعات مشابه، استفاده از ابزار split می باشد. با استفاده از این ابزار می‌توان یک فایل بزرگ را به چند قسمت کوچک تقسیم کرد. سپس فایل‌های کوچک را به سیستم مقصد منتقل نمود و در نهایت با تجمیع فایل‌های کوچک، فایل بزرگ را به حالت اصلی خود برگرداند.

با بیان چند مثال به بررسی این دستور می پردازیم.

مثال ۱ :

استفاده از دستور split ، در حالت پیش‌فرض : (فایل learnlinux.txt یک فایل متنی با 5364 خط می باشد)

split learnlinux.txt

در حالت پیش‌فرض دستور split فایل اصلی را به فایل‌های 1000 خطی تقسیم می نماید. و همچنین نام فایل‌های خروجی با پیشوند x شروع و در ادامه با کاراکترهای aa که بسمت zz پیش می‌روند، تکمیل می شود. مکان قرار گیری فایل‌های خروجی، دایرکتوری فعلی کاربر می باشد.

خروجی دستور بالا بصورت زیر می باشد. (دستور wc با سوییچ l تعداد خطوط یک فایل را نشان می دهد.)

wc -l x*

  1000 xaa

  1000 xab

  1000 xac

  1000 xad

  1000 xae

    364 xaf

  5364 total

در این مثال فایل learnlinux.txt به 6 فایل کوچکتر تبدیل می شود.

 

مثال 2 :

نمایش جزییات در اجرای دستور split با استفاده از سوییچ verbose :

split learnlinux.txt --verbose

creating file 'xaa'

creating file 'xab'

creating file 'xac'

creating file 'xad'

creating file 'xae'

creating file 'xaf'

 

مثال 3 :

تعیین تعداد خطوط فایل‌های خروجی دستور split :

split -l 1700 learnlinux.txt 

wc -l x*

1700 xaa

1700 xab

1700 xac

 264 xad

5364 total

با اجرای دستور بالا ، فایل learnlinux.txt به فایلهایی با تعداد خط 1700 ، تبدیل می شود.

 

مثال 4 :

تعیین اندازه فایل‌های خروجی دستور split :

split -b 4M learnlinux.txt

du -sh *

12M     learnlinux.txt

4.0M    xaa

4.0M    xab

4.0M    xac

با استفاده از سوییچ b در دستور split می توان اندازه هر فایل خروجی را مشخص نمود. کاراکتر K بر حسب کیلوبایت، کاراکتر M بر حسب مگابایت و کاراکتر G بر حسب گیگابایت می باشد.

 

مثال 5 :

تعیین تعداد فایل‌های خروجی دستور split :

split -n 3 learnlinux.txt

ls

learnlinux.txt  xaa  xab  xac

در دستور بالا با استفاده از سوییچ n و عدد 3 ، فایل learnlinux.txt به 3 فایل تقسیم می گردد.

 

مثال 6 :

تغییر پیشوند نام فایل های خروجی دستور split :

split learnlinux.txt  Split_File_

ls

learnlinux.txt  Split_File_aa  Split_File_ab  Split_File_ac

با روش بالا، الگوی پیشوند نام فایل‌های خروجی تغییر می یابد.

 

مثال 7 :

تغییر پسوند کاراکتری به عددی، در نام فایل های خروجی دستور split :

split -d learnlinux.txt

ls

learnlinux.txt  x00  x01  x02  x03  x04  x05

همانطور که در خروجی مشخص می‌باشد، پسوند aa به 00 تغییر یافته است.

 

مثال 8 :

تغییر تعداد کاراکترهای پسوند، در نام فایل های خروجی دستور split :

split -n 4 learnlinux.txt -a 5

ls

learnlinux.txt  xaaaaa  xaaaab  xaaaac  xaaaad

در مثال بالا، استفاده از سوییچ a و عدد 5 سبب می‌شود که قسمت پسوند نام فایل از 5 کاراکتر تشکیل گردد.

 

مثال 9 :

ترکیب سوییچ های دستور split :

split -a 1 -n 4 -d learnlinux.txt Example_

ls

Example_0  Example_1  Example_2  Example_3  learnlinux.txt

در دستور بالا، سوییچ a و عدد ۱ تعداد کاراکتر های پسوند فایل‌های خروجی را تعیین می کنند. سوییچ n و عدد 4 ، تعداد فایل‌های خروجی را مشخص می نمایند. سوییچ d سبب تغییر پسوند به حالت عددی می شود. و در نهایت الگوی قرار داده شده در انتهای دستور، پیشوند نام فایل‌های خروجی را تعیین می کند.

 

مثال 10 :

تبدیل فایل‌های خروجی دستور split به یک فایل واحد :

بعد از اینکه توسط دستور split یک فایل به قطعات کوچکتر تبدیل گردید و فرایند مربوطه انجام پذیرفت، در نهایت برای تبدیل قطعات یک فایل به فایل واحد، از روش زیر استفاده می شود.

cat  xa* >learnlinux_final.txt

 

نکته : برای اطمینان از درستی فرایند تقسیم یک فایل حجیم به فایل‌های کوچکتر و در نهایت تبدیل فایل‌های کوچکتر به یک فایل واحد بصورتی که محتوای فایل تغییر نکرده باشد، می‌توان از دستور md5sum استفاده نمود.

دستور md5sum :

این دستور بر اساس محتوای هر فایل، یک کد 128 بیتی تولید می نماید. هرگز دو فایل متفاوت، کد یکسان ندارند.

برای صحت یکسان بودن محتوای یک فایل بعد از فرایند تقسیم و یکپارچگی، می‌توان کدهای تولید شده را قبل و بعد از انتقال فایل مقایسه نمود.

 

مثال 11 :

بررسی صحت یکسان بودن محتوای یک فایل بعد از فرایند تقسیم و یکپارچگی :

در ابتدا با استفاده از دستور زیر، کد منحصر به محتوای فایل learnlinux.txt  را می سازیم.

md5sum learnlinux.txt

605acd0f2b467dc7fec01906c663b532  learnlinux.txt

با دستور زیر فایل learnlinux.txt به 200 قسمت کوچکتر با پیشوند نام فایل file_ تبدیل می شود.

split -n 200 learnlinux.txt file_

ls

file_aa  file_am  file_ay  file_bk  file_bw  file_ci  file_cu  file_dg  file_ds  file_ee  file_eq  file_fc  file_fo  file_ga  file_gm  file_gy  file_hk   ……..…

توسط دستور scp فایل‌های تقسیم شده به سیستم مقصد کپی می شوند.

scp -P 2020 file_* 192.168.20.40:/home/masih

در سیستم مقصد فایل‌های کوچک با دستور زیر به یک فایل واحد به نام learnlinux_new.txt تبدیل می شوند.

cat file_*>learnlinux_new.txt

با استفاده از دستور زیر، کد منحصر به محتوای فایل learnlinux_new.txt را می سازیم.

md5sum learnlinux_new.txt

605acd0f2b467dc7fec01906c663b532  learnlinux_new.txt

با مقایسه بین دو کد ایجاد شده می‌توان یکسان بودن فایل‌های مبدأ و مقصد را تعیین نمود.

۹۸/۰۵/۱۳
عیسی اسداله پور

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی