مقدمه
cURL که مخفف Client URL است، یک ابزار خط فرمان و کتابخانه قدرتمند برای انتقال داده بین سیستمها محسوب میشود. این ابزار از پروتکلهای متنوعی مانند HTTP، HTTPS، FTP و SFTP پشتیبانی میکند و معمولاً بهصورت پیشفرض روی اکثر سیستمعاملهای شبهیونیکس نصب است. به همین دلیل، cURL یکی از بهترین گزینهها برای دانلود فایل در محیطهای سروری و اسکریپتی بهشمار میرود.
در این آموزش از دیدگاه یاد میگیرید چگونه با استفاده از دستور curl فایلها را دانلود کنید، آنها را ذخیره نمایید، ریدایرکتها را دنبال کنید و دانلودهای امن و قابل اطمینان انجام دهید. این مهارت بهویژه هنگام کار با APIها، CI/CD و پروژههای Node.js کاربرد فراوانی دارد.
نکته امنیتی: همیشه فایلها را از منابع معتبر دانلود کنید و پیش از اجرای هر اسکریپتی، محتوای آن را بررسی نمایید.
مرحله اول: دریافت فایل از سرور
در سادهترین حالت، دستور curl محتوای فایل را دریافت کرده و در خروجی ترمینال نمایش میدهد:
curl https://example.com/robots.txtاین دستور محتویات فایل را مستقیماً روی صفحه نمایش میدهد.
ذخیره فایل دانلود شده
برای ذخیره فایل با همان نام اصلی روی سیستم، از گزینه -O استفاده کنید:
curl -O https://example.com/robots.txtدر این حالت، فایل دانلود شده و نوار پیشرفت نمایش داده میشود.
برای ذخیره فایل با نام دلخواه، از گزینه -o استفاده میکنیم:
curl -o myfile.txt https://example.com/robots.txtمرحله دوم: دنبال کردن ریدایرکتها
بهصورت پیشفرض، cURL ریدایرکتها را دنبال نمیکند. برای حل این موضوع از گزینه -L استفاده میشود:
curl -L https://example.com/file.txtاین گزینه باعث میشود در صورت تغییر آدرس فایل، دانلود بهدرستی انجام شود.
مرحله سوم: دانلود فایلهای محافظتشده
احراز هویت ساده (نام کاربری و رمز عبور)
curl -u username:password -O https://example.com/secure.zipاحراز هویت توکنی
curl -H "Authorization: Bearer TOKEN" -O https://api.example.com/data.jsonتوصیه میشود اطلاعات حساس را داخل اسکریپتها ذخیره نکنید و از متغیرهای محیطی استفاده نمایید.
مرحله چهارم: مدیریت وقفه و خطاها
ادامه دانلود نیمهکاره
curl -C - -O https://example.com/large.isoتعیین محدودیت زمان
curl --max-time 30 -O https://example.com/file.txtتلاش مجدد در صورت خطا
curl --retry 3 -O https://example.com/file.txtمرحله پنجم: خودکارسازی دانلودها
میتوانید cURL را داخل اسکریپتهای شل برای دانلود خودکار استفاده کنید:
#!/bin/bash
URL="https://example.com/file.zip"
DEST="/home/user/file.zip"
curl -L -o "$DEST" "$URL"این اسکریپت را میتوان در cron یا فرآیندهای CI/CD اجرا کرد.
رفع مشکلات رایج
-
بررسی هدرها:
curl -I https://example.com/file.zip-
فعالسازی خروجی جزئیات:
curl -v -O https://example.com/file.zip-
مشکل SSL:
curl -k -O https://example.com/file.zipمقایسه cURL و wget
wget برای دانلودهای ساده و حجیم مناسبتر است، در حالی که cURL برای کار با APIها، ارسال هدرهای سفارشی و اسکریپتنویسی پیشرفته گزینه بهتری محسوب میشود.
جمعبندی
cURL ابزاری قدرتمند، سبک و انعطافپذیر برای دانلود فایل و ارتباط با سرویسهای تحت شبکه است. از دانلود ساده فایل گرفته تا تعامل پیچیده با APIها، cURL یکی از ابزارهای اصلی مدیران سرور و توسعهدهندگان حرفهای بهشمار میرود.
برای آشنایی کاملتر میتوانید مستندات رسمی را با دستور زیر مشاهده کنید
man curl
آموزش دانلود فایل با cURL در لینوکس
بهروزرسانی: 27 می 2025
cURL (مخفف Client URL) یک ابزار خط فرمان و کتابخانه قدرتمند برای انتقال داده بین سیستمهاست. این ابزار از پروتکلهای متعددی مانند HTTP، HTTPS، FTP و … پشتیبانی میکند و معمولاً بهصورت پیشفرض روی اکثر سیستمعاملهای شبهیونیکس نصب است. بهدلیل در دسترس بودن و انعطافپذیری بالا، cURL یکی از بهترین گزینهها برای دانلود فایلها در محیطهای سروری محسوب میشود.
در این آموزش یاد میگیرید چگونه با استفاده از دستور curl یک فایل را از اینترنت دانلود کنید، محتوای آن را ببینید، با نام دلخواه ذخیره کنید، ریدایرکتها را دنبال کنید و دانلودهای امنتر و پایدارتر داشته باشید. این دانش بهویژه هنگام کار با REST APIها، اسکریپتها و پروژههای Node.js بسیار کاربردی است.
⚠️ هشدار امنیتی: دانلود فایل از اینترنت همیشه میتواند خطرناک باشد. فقط از منابع معتبر فایل دریافت کنید و قبل از اجرای هر اسکریپت، حتماً محتوای آن را بررسی کنید.
مرحله ۱ — دریافت فایل از سرور (Fetch)
اگر دستور curl را بدون هیچ گزینهای اجرا کنید، فایل را دریافت کرده و محتوای آن را مستقیماً در خروجی ترمینال نمایش میدهد.
مثال: دریافت فایل robots.txt از وبسایت DigitalOcean:
curl https://www.digitalocean.com/robots.txtخروجی:
User-agent: *
Disallow:
sitemap: https://www.digitalocean.com/sitemap.xml
sitemap: https://www.digitalocean.com/community/main_sitemap.xml.gz
sitemap: https://www.digitalocean.com/community/questions_sitemap.xml.gz
sitemap: https://www.digitalocean.com/community/users_sitemap.xml.gzذخیره فایل روی سیستم (Saving Remote Files)
برای ذخیره فایل دانلودشده با همان نام اصلی روی سیستم، از گزینه -O یا --remote-name استفاده کنید:
curl -O https://www.digitalocean.com/robots.txtدر این حالت، بهجای نمایش محتوا، یک نوار پیشرفت نمایش داده میشود و فایل ذخیره میگردد.
برای مشاهده فایل:
cat robots.txtمرحله ۲ — ذخیره فایل با نام دلخواه
اگر نمیخواهید فایل با نام اصلی ذخیره شود یا از overwrite شدن فایلهای قبلی جلوگیری کنید، از گزینه -o استفاده کنید:
curl -o do-bots.txt https://www.digitalocean.com/robots.txtسپس بررسی فایل:
cat do-bots.txtمرحله ۳ — دنبال کردن ریدایرکتها (Redirect)
بهصورت پیشفرض، cURL ریدایرکتها را دنبال نمیکند. برای مثال اگر آدرس از HTTP به HTTPS منتقل شود، باید از گزینه -L استفاده کنید.
بررسی هدرها:
curl -I www.digitalocean.com/robots.txtبرای دنبال کردن ریدایرکت:
curl -L www.digitalocean.com/robots.txtذخیره فایل همراه با ریدایرکت:
curl -L -o do-bots.txt www.digitalocean.com/robots.txtمرحله ۴ — دانلود فایل با احراز هویت
احراز هویت ساده (نام کاربری و رمز عبور)
curl -u username:password -O https://example.com/securefile.zipاحراز هویت توکنی (Bearer Token)
curl -H "Authorization: Bearer YOUR_TOKEN" -O https://api.example.com/protected/data.jsonتوصیه امنیتی: اطلاعات حساس را در اسکریپتها هاردکد نکنید. از متغیرهای محیطی استفاده کنید.
مرحله ۵ — مدیریت قطع ارتباط، زمان انتظار و ادامه دانلود
ادامه دانلود نیمهکاره
curl -C - -O https://example.com/largefile.isoتعیین حداکثر زمان دانلود
curl --max-time 30 -O https://example.com/file.txtتلاش مجدد در صورت خطا
curl --retry 3 -O https://example.com/file.txtمرحله ۶ — خودکارسازی دانلود با اسکریپت Shell
نمونه اسکریپت ساده:
#!/bin/bash
URL="https://example.com/file.zip"
DEST="/home/user/downloads/file.zip"
curl -L -o "$DEST" "$URL"سپس:
chmod +x script.shو میتوانید آن را با cron زمانبندی کنید.
مرحله ۷ — رفع مشکلات رایج دانلود
بررسی هدرها
curl -I https://example.com/file.zipتنظیم User-Agent
curl -A "Mozilla/5.0" -O https://example.com/file.zipبررسی خطاهای SSL
curl -v -O https://example.com/file.zipاستفاده از HTTP بهجای HTTPS (در صورت امکان)
curl -O http://example.com/file.zipمرحله ۸ — استفاده از wget بهعنوان جایگزین
دانلود ساده
wget https://example.com/file.zipقابلیتهای مهم wget
-
تلاش مجدد خودکار:
wget -t 3 https://example.com/file.zipدانلود در پسزمینه:
wget -b https://example.com/file.zipمحدود کردن سرعت:
wget --limit-rate=200k https://example.com/file.zipمیرور کردن وبسایت:
wget --mirror --convert-links --adjust-extension --page-requisites --no-parent https://example.comچه زمانی curl و چه زمانی wget؟
-
curl: تعامل با APIها، درخواستهای پیچیده HTTP، اسکریپتنویسی حرفهای
-
wget: دانلودهای ساده، دانلود بازگشتی، میرور سایتها
سوالات متداول (FAQ)
تفاوت -O و -o در curl چیست؟
-
-Oفایل را با نام اصلی ذخیره میکند. -
-oامکان تعیین نام دلخواه را میدهد.
ادامه دانلود قطعشده چگونه است؟
curl -C - -O https://example.com/largefile.isoآیا cURL روی ویندوز وجود دارد؟
بله، از ویندوز 10 به بعد بهصورت پیشفرض وجود دارد و همچنین از طریق Git Bash، Cygwin یا Chocolatey قابل نصب است.
دانلود چند فایل همزمان
curl -O https://example.com/file1.zip -O https://example.com/file2.zipیا:
curl -O https://example.com/file{1..5}.zipجمعبندی
cURL ابزاری سریع، سبک و بسیار قدرتمند برای دانلود فایل و ارتباط شبکهای است. از دانلود ساده فایلها گرفته تا تعامل پیچیده با APIها، مدیریت ریدایرکت، احراز هویت و اسکریپتنویسی، همه را در اختیار شما قرار میدهد.
برای مطالعه بیشتر، راهنمای کامل را ببینید:
man curl

