خب فرض کنید میخواهید یک فایل حجیم(مثلا ۲.۶ گیگابایت مثل من) را منتقل کنید. مثلا در بستر اینترنت یا اینکه میخواهید از طریق چند حافظه ذخیرهسازی مختلف فایل را جابجا کنید. برای من با اینترنت ADSL حداکثر سرعت آپلود ۵۰ کیلوبایت بر ثانیه هست و علاوه برآن اگر اینترنت ناگهان قطع و وصل شود مجبورم از اول شروع کنم!
راه حلی که برای این موضوع پیدا کردم قطعه قطعه کردن فایل حجیم با split و آپلود قطعات فایل به یک سرور واسط هست. و از سرور واسط به سرور اصلی آپلود میکنم. با اینکار میتوانم از چند دستگاه و با چند ارتباط اینترنت قطعات را آپلود کنم و به نوعی از پهنایباند همه کانکشنهای اینترنت همزمان استفاده کنم تا فایل حجیمی که دارم سریعتر به دست سرور اصلی برسد.
قدم اول: تکه تکه کردن فایل حجیم با split
بعد از چند سال کار کردن در فضای گنو+لینوکس و دستکم آشنایی با فلسفه یونیکس، تعجب نمیکنم که برنامهای کوچک برای تکه تکه کردن یک فایل وجود داشته باشد. طرز استفاده بسیار ساده و آسان میباشد:
split -b chunkSize -d bigFile __prefix
مثلا من برای فایل حجیمی که دارم تصمیم گرفتم قطعات ۳۰۰ مگابایتی داشته باشم. طبیعتا چون اندازه فایلم(۲.۶ گیگابایت) مضربی از ۳۰۰ مگابایت نیست قطعه آخر کمتر از ۳۰۰ مگابایت خواهد بود. پیشوند قطعات را نیز __ انتخاب میکنم که دو خط زیر هست. نهایتا دستوری که وارد باید کنم این است:
split -b 300M -d myFile.mp4 __
حال اگر با ls فهرست فایلها را ببینم متوجه تعدادی قطعه با اندازه ۳۰۰ مگابایت میشوم:
[23:57:36]:~$ ls __* -lh
-rw-rw-r-- 1 farooqkz farooqkz 300M Nov 16 19:25 __00
-rw-rw-r-- 1 farooqkz farooqkz 300M Nov 16 19:25 __01
-rw-rw-r-- 1 farooqkz farooqkz 300M Nov 16 19:25 __02
-rw-rw-r-- 1 farooqkz farooqkz 300M Nov 16 19:25 __03
-rw-rw-r-- 1 farooqkz farooqkz 300M Nov 16 19:25 __04
-rw-rw-r-- 1 farooqkz farooqkz 300M Nov 16 19:25 __05
-rw-rw-r-- 1 farooqkz farooqkz 300M Nov 16 19:25 __06
-rw-rw-r-- 1 farooqkz farooqkz 300M Nov 16 19:26 __07
-rw-rw-r-- 1 farooqkz farooqkz 251M Nov 16 19:26 __08
همانطور که گفتم قطعه آخر کمتر از ۳۰۰ مگابایت است.
قدم دوم: چسباندن قطعات به هم با استفاده از cat
خب حالا فرض میکنیم قطعات به هر طریقی به کامپیوتر مقصد رسیدهاند. برای استفاده مجدد از قطعات باید آنها را با استفاده از cat به هم بچسبانیم:
cat __00 __01 __02 __03 __04 __05 __06 __07 __08 > myFile.mp4
خب تموم شد. به همین سادگی 🙂