منبع اصلی نوشتار زیر در این لینک قرار دارد

تکه تکه کردن فایل ها برای دانلود همزمان با curl

خیلی وقتا مثل الآن من ممکنه هر چی ابزار اتوماتیک برای یه کار دارین درست کار نده یا به هر دلیلی ازشون خوشتون نیاد!! مثل aria2c که الآن واسم فایل ها رو تکه تکه نمیکنه
مزیت curl هم اینه که اکثر پروتوکل های معروف تبادل اطلاعات رو پشتیبانی میکنه.
شما میتونید کاری که aria2 انجام میده رو به طور دستی انجام بدین یعنی به سرور اطلاع بدین که من این فایل رو از این بایت تا یه بایت دیگش رو میخوام!
با دستور زیر قسمتی از یک فایل رو دانلود میکنین (البته سرور باید قابلیت تکه تکه دادن فایل رو داشته باشه یا به عبارت دیگه لینک مستقیم باشه)
curl --range 0-199999999 -o file.part1 URL
دستور بالا میگه از بایت ۰ تا بایت ۱۹۹۹۹۹۹۹۹ رو واسم دانلود کن!
تصور کنید میخوایم یه یه فایل ۴۰۰ مگابایتی رو به ۲ تکه تقسیم کنیم و همچنین میخوایم تکه ی اول رو از سرور ۱ و تکه ی دوم رو از سرور دوم دانلود کنیم
مزیت این کار اینه که در صورت پایین بودن سرعت سرویس دهی سرور ها شما از ۲ سرور به طور همزمان برای دانلود یه فایل استفاده کردید!!
curl --range 0-199999999 -o file.part1 URL1 & curl --range 200000000- -o file.part2 URL2
پس از اتمام دانلود با cat میتونید فایل ها رو یکی کنید! (فقط ترتیب شماره زنی فایل ها رو رعایت کنید تا خطایی در الحاق کردن چند فایل اتفاق نافته)
cat file.part? > file
علامت & در دستور برای همزمان اجرا کردن دستور ها استفاده شده. قالب –range به صورت زیر هست:
میشه یه بازه تعیین کرد: مثلا واسه دانلود بازه بسته بایت a تا b
میشه عدد اولی رو ننوشت و بگیم مثلا -۵۰۰ که در این حالت ۵۰۰ بایت آخر رو دانلود میکنه
یا میشه ۵۰۰- استفاده کرد که از بایت ۵۰۰ تا آخر فایل رو میاره



برچسب ها : , ,