Client URL یا همان cURL یک کتابخانه و ابزار خط فرمان برای انتقال داده بین سیستمها است. این ابزار از پروتکلهای متنوعی پشتیبانی میکند و معمولا بهصورت پیشفرض روی بسیاری از سیستمعاملهای شبه یونیکس نصب است. همین موضوع باعث شده cURL یکی از گزینههای بسیار مناسب برای دانلود فایل در VPS لینوکس و سیستمهای سروری باشد.
در آموزش cURL در لینوکس شما یاد میگیرید چگونه از دستور cURL برای دریافت فایل متنی از یک وبسرور استفاده کنید. در این فرآیند میتوانید محتوای فایل را مشاهده کنید، آن را روی سیستم خود ذخیره نمایید و در صورت وجود Redirect، تنظیم کنید که cURL بهصورت خودکار آن را دنبال کند. این قابلیتها در سناریوهایی مانند کار با REST APIها یا توسعه و راهاندازی برنامههای Node.js اهمیت زیادی دارند.
در آموزش cURL command باید توجه داشت که دانلود فایل از اینترنت میتواند خطرناک باشد، بنابراین همیشه باید فایلها را از منابع معتبر دریافت کنید. در محیطهای سروری و هنگام استفاده از cURL در سرور معمولا فایلها برای پردازش یا تنظیمات سیستمی دانلود میشوند و نه برای اجرا مستقیم، که این موضوع اهمیت امنیت را دوچندان میکند.

مرحله ۱. دریافت فایلهای ریموت (Fetching remote files)
در استفاده از cURL در سرور مجازی لینوکس، یکی از سادهترین حالتهای استفاده از cURL زمانی است که هیچ آرگومان اضافی به دستور داده نشود. در این حالت، دستور cURL در لینوکس یک فایل را از آدرس مشخص دریافت کرده و محتوای آن را مستقیما در خروجی ترمینال نمایش میدهد.
برای مثال، در استفاده از cURL در سرور مجازی میتوان یک فایل متنی را از یک سرور دانلود کرد:
cURL https://example.com/robots.txt
در این حالت، محتوای فایل مستقیما در ترمینال نمایش داده میشود:
User-agent: * Disallow: sitemap: https://example.com/sitemap.xml
به این صورت، cURL فقط داده را دریافت کرده و آن را بدون ذخیرهسازی نمایش میدهد. این روش برای بررسی سریع محتوا یا تست APIها در آموزش cURL command بسیار کاربردی است.
مرحله ۲. ذخیره فایل از سرور با cURL (Saving Remote Files)
گاهی فقط مشاهده محتوا کافی نیست و نیاز دارید فایل را روی سرور یا سیستم خود ذخیره کنید. در این حالت از قابلیت دانلود فایل با cURL در لینوکس استفاده میشود.
برای ذخیره فایل با همان نام اصلی از گزینه -O استفاده میشود:
cURL -O https://example.com/robots.txt
در این حالت، فایل دانلود شده و با همان نام در سیستم ذخیره میشود.
cURL هنگام دانلود، یک نوار پیشرفت نمایش میدهد و پس از اتمام، فایل در همان مسیر ذخیره خواهد شد.
برای بررسی فایل ذخیرهشده میتوان از دستور زیر استفاده کرد:
cat robots.txt
محتوای فایل دقیقا مشابه نسخه ریموت خواهد بود. این روش یکی از پایهایترین کاربردهای دستور cURL در لینوکس برای مدیریت فایلها در سرور است.
ذخیره فایل با نام دلخواه
در بسیاری از مواقع ممکن است بخواهید فایل را با نام متفاوت ذخیره کنید تا از بازنویسی فایلهای موجود جلوگیری شود. در این حالت از گزینه -o استفاده میشود که یکی از مهمترین بخشهای دانلود فایل از سرور با cURL است:
cURL -o custom-name.txt https://example.com/robots.txt
در این حالت فایل با نام custom-name.txt ذخیره میشود.
پس از دانلود، میتوان با دستور cat محتوای آن را بررسی کرد:
cat custom-name.txt
مرحله ۳. دنبال کردن ریدایرکتها (Following Redirects)
در استفاده از cURL در لینوکس باید توجه داشت که cURL بهصورت پیشفرض ریدایرکتها را دنبال نمیکند. یعنی اگر یک آدرس به آدرس دیگری منتقل شده باشد، ممکن است خروجی دریافت نکنید.
برای بررسی هدرهای پاسخ از گزینه -I استفاده میشود:
cURL -I example.com/robots.txt
در خروجی، وضعیت Redirect نمایش داده میشود و مشخص میشود که درخواست به آدرس دیگری منتقل شده است.
برای اینکه cURL بهصورت خودکار ریدایرکتها را دنبال کند، از گزینه -L استفاده میشود:
cURL -L example.com/robots.txt
این قابلیت در استفاده از cURL در سرور بسیار مهم است، مخصوصا زمانی که با APIها یا آدرسهای متغیر سروکار دارید.
همچنین میتوان ترکیب دانلود و دنبال کردن ریدایرکت را هم انجام داد:
cURL -L -o file.txt example.com/robots.txt
مرحله ۴. دانلود فایل با احراز هویت (Authentication)
در برخی سناریوها، فایلها یا APIها نیاز به احراز هویت دارند. در این حالت آموزش cURL command شامل ارسال اطلاعات ورود میشود.
برای احراز هویت ساده (username/password):
cURL -u username:password -O https://example.com/file.zip
برای API Token:
cURL -H "Authorization: Bearer YOUR_TOKEN" -O https://api.example.com/data.json
در دانلود فایل با cURL در لینوکس توصیه میشود اطلاعات حساس را بهصورت مستقیم داخل دستور قرار ندهید و از متغیرهای محیطی استفاده کنید.
مرحله ۵. مدیریت Timeout، Retry و Resume
در محیطهای سروری، یکی از مهمترین کاربردهای استفاده از cURL مدیریت خطاهای شبکه است.
ادامه دانلود فایل قطعشده:
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
این قابلیتها در کار با cURL در سرور لینوکس برای اسکریپتنویسی بسیار مهم هستند.
مرحله ۶. اتوماسیون دانلود در VPS
یکی از کاربردهای پیشرفته cURL در لینوکس استفاده در اسکریپتها و اتوماسیون است.
مثال یک اسکریپت ساده:
#!/bin/bash URL="https://example.com/file.zip" DEST="/home/user/file.zip" cURL -L -o "$DEST" "$URL"
این اسکریپت میتواند در کران جاب یا CI/CD اجرا شود و برای دانلود فایل از سرور با cURL بهصورت خودکار استفاده شود.
مرحله ۷. مشکلات رایج در دانلود فایل
در آموزش cURL command ممکن است با خطاهای مختلفی مواجه شوید:
بررسی دسترسی فایل:
cURL -I https://example.com/file.zip
تست User-Agent:
cURL -A "Mozilla/5.0" -O https://example.com/file.zip
دیباگ درخواست:
cURL -v -O https://example.com/file.zip
این ابزارها برای عیبیابی در دستور cURL در لینوکس بسیار کاربردی هستند.
مرحله ۸. جایگزین cURL (wget)
در برخی سناریوها ابزار wget نیز بهعنوان جایگزین استفاده میشود، اما در اکثر موارد cURL برای دانلود فایل در VPS لینوکس انتخاب استانداردتری است.
دانلود ساده:
wget https://example.com/file.zip
دانلود با تلاش مجدد:
wget -t 3 https://example.com/file.zip
سوالات متداول
1. تفاوت گزینه -O و -o در cURL چیست؟
در این مبحث یکی از مفاهیم مهم، تفاوت بین گزینههای -O و -o است.
گزینه -O (حرف O بزرگ) باعث میشود فایل دانلود شده با همان نام اصلی که روی سرور تعریف شده ذخیره شود. این حالت زمانی کاربرد دارد که بخواهید ساختار نامگذاری سرور را حفظ کنید یا چند فایل را بدون تعیین نام جداگانه دانلود کنید.
در مقابل، گزینه -o (حرف o کوچک) به شما اجازه میدهد یک نام دلخواه برای فایل دانلود شده مشخص کنید. این روش در دانلود فایل با cURL در لینوکس برای مدیریت بهتر فایلها و جلوگیری از تداخل نامها بسیار کاربردی است.
مثال:
cURL -O https://example.com/file.zip cURL -o custom-name.zip https://example.com/file.zip
2. چگونه دانلود قطعشده را در cURL ادامه دهیم؟
در استفاده از cURL در لینوکس ممکن است دانلود به دلایل مختلفی مانند قطعی شبکه متوقف شود. برای ادامه دانلود از همان نقطه قبلی، از گزینه -C – استفاده میشود.
این قابلیت زمانی مفید است که با فایلهای حجیم یا سرورهای ناپایدار کار میکنید.
مثال:
cURL -C - -O https://example.com/largefile.iso
3. آیا امکان دانلود فایلهای نیازمند احراز هویت وجود دارد؟
بله، در آموزش cURL command میتوان فایلهایی که نیاز به احراز هویت دارند را نیز دانلود کرد.
برای احراز هویت ساده (نام کاربری و رمز عبور):
cURL -u username:password -O https://example.com/file.zip
برای استفاده از Token:
cURL -H "Authorization: Bearer YOUR_TOKEN" -O https://api.example.com/file.zip
در کار با cURL در سرور لینوکس بهتر است اطلاعات حساس را در کد هاردکد نکنید و از متغیرهای محیطی استفاده کنید.
4. اگر URL ریدایرکت داشته باشد چه باید کرد؟
در برخی موارد، لینکها به آدرس دیگری منتقل میشوند. در حالت پیشفرض، دستور cURL در لینوکس ریدایرکت را دنبال نمیکند.
برای حل این مشکل از گزینه -L استفاده میشود:
cURL -L -O http://example.com/download
این قابلیت در دانلود فایل از سرور با cURL بسیار مهم است، مخصوصا در APIها و لینکهای کوتاهشده.
5. آیا cURL روی ویندوز قابل استفاده است؟
بله، cURL در نسخههای جدید ویندوز (10 به بعد) بهصورت پیشفرض وجود دارد و میتوان آن را در CMD یا PowerShell استفاده کرد.
برای نسخههای قدیمیتر میتوان از ابزارهایی مانند Git Bash یا Chocolatey استفاده کرد:
choco install cURL
این موضوع باعث میشود آموزش cURL command در محیطهای مختلف قابل استفاده باشد.
6. چگونه چند فایل را همزمان با cURL دانلود کنیم؟
در دانلود فایل با cURL در لینوکس میتوان چند فایل را بهصورت همزمان دانلود کرد.
روش اول استفاده از چند URL:
cURL -O https://example.com/file1.zip -O https://example.com/file2.zip
روش دوم استفاده از الگو:
cURL -O https://example.com/file{1..5}.zip
همچنین میتوان از فایل لیست URL نیز استفاده کرد.
7. خطاهای SSL در cURL چگونه رفع میشوند؟
گاهی هنگام دانلود فایل در استفاده از cURL در لینوکس ممکن است خطای SSL رخ دهد.
برای نادیده گرفتن بررسی SSL (فقط در حالت تست):
cURL -k -O https://example.com/file.zip
برای استفاده امنتر:
cURL --cacert /path/to/certificate.pem -O https://example.com/file.zip
8. چگونه سرعت و وضعیت دانلود را در cURL مشاهده کنیم؟
در استفاده از cURL در لینوکس میتوان وضعیت دانلود را با گزینههای مختلف مشاهده کرد.
برای نمایش ساده:
cURL -# -O https://example.com/file.zip
برای نمایش جزئیات کامل:
cURL -w "\nDownloaded: %{size_download} bytes\nSpeed: %{speed_download} bytes/sec\nTime: %{time_total} seconds\n" -O https://example.com/file.zip
این قابلیت برای مانیتورینگ دانلود در سرور بسیار کاربردی است.
جمعبندی
در آموزش cURL در سرور مجازی لینوکس دیدیم که cURL یک ابزار قدرتمند برای دانلود سریع فایل از سیستمهای ریموت است. این ابزار از پروتکلهای متنوعی مانند HTTP، HTTPS، FTP و سایر پروتکلها پشتیبانی میکند و همین موضوع آن را به گزینهای قابل اعتماد و مناسب برای اسکریپتنویسی در محیطهای سروری تبدیل کرده است.
در واقع دستور cURL در لینوکس فقط محدود به دانلود ساده فایل نیست. این ابزار از عملیات پیشرفتهتری مانند تنظیم هدرهای سفارشی، مدیریت احراز هویت، دنبال کردن ریدایرکتها و حتی ادامه دانلودهای قطعشده پشتیبانی میکند. به همین دلیل در بسیاری از سناریوها یک ابزار استاندارد و ضروری محسوب میشود.
cURL یکی از ابزارهای پایه برای توسعهدهندگان، مدیران سیستم و DevOps است که نیاز دارند کنترل دقیقی روی ارتباطات شبکه داشته باشند، بدون اینکه از ابزارهای سنگین و پیچیده استفاده کنند. چه در حال اتوماسیون وظایف در CI/CD باشید، چه در حال دریافت داده از سرویسهای خارجی، یا تست APIها در REST یا Node.js، آموزش cURL command بهطور مستقیم در جریان کاری شما قرار میگیرد.
برای یادگیری عمیقتر قابلیتهای این ابزار، میتوانید از دستور زیر در سرور لینوکس استفاده کنید:
man cURL
همچنین بررسی مثالهای عملی و سناریوهای واقعی به شما کمک میکند تسلط بیشتری روی کار با cURL در سرور لینوکس پیدا کنید و از آن در پروژههای واقعی استفاده کنید.


