curl سے فائلیں کیسے ڈاؤن لوڈ کریں
curl HTTP، HTTPS، FTP اور درجنوں دیگر پروٹوکولز پر فائلیں ڈاؤن لوڈ کرنے کے لیے سب سے زیادہ ورسٹائل کمانڈ لائن ٹولز میں سے ایک ہے۔ چاہے آپ کو ایک API ریسپانس فائل میں محفوظ کرنا ہو یا شیل اسکرپٹ میں بیچ ڈاؤن لوڈز خودکار کرنے ہوں — curl کے پاس اس کے لیے ایک فلیگ ہے۔ یہ گائیڈ ڈاؤن لوڈ سے متعلق ہر آپشن کا احاطہ کرتی ہے — -o اور -O سے بنیادی فائل سیونگ سے لے کر -C - سے رکی ہوئی ٹرانسفرز دوبارہ شروع کرنے، --limit-rate سے بینڈوڈتھ کو محدود کرنے اور پروگریس بارز دکھانے تک۔ ہر فلیگ میں واضح وضاحت، عام استعمال کے نمونے اور کاپی کرنے کے لیے تیار مثال شامل ہے۔
ڈاؤن لوڈ فلیگز فوری حوالہ
آؤٹ پٹ کو stdout کی بجائے مخصوص فائل میں لکھیں
آؤٹ پٹ کو ریموٹ فائل جیسے نام والی فائل میں لکھیں
HTTP 3xx ری ڈائریکٹس خودکار فالو کریں
پچھلی فائل ٹرانسفر جاری/دوبارہ شروع کریں
ٹرانسفر رفتار کو دی گئی شرح تک محدود کریں
مخصوص سائز سے بڑی فائلیں ڈاؤن لوڈ کرنے سے انکار کریں
فائل نام رکھنے کے لیے Content-Disposition ہیڈر استعمال کریں
ٹرانسفر کی پیش رفت سادہ پروگریس بار کے طور پر دکھائیں
سرور تصدیق کے لیے username:password فراہم کریں
عارضی ایررز پر ٹرانسفر دوبارہ کریں (کتنی بار)
دوبارہ کوششوں کے درمیان اتنے سیکنڈ انتظار کریں
مقامی فائل URL پر اپ لوڈ کریں (بطور ڈیفالٹ PUT)
آؤٹ پٹ محفوظ کرتے وقت ضرورت کے مطابق مقامی ڈائریکٹریز بنائیں
پروگریس میٹر اور ایرر پیغامات دبائیں
آؤٹ پٹ فائل(فائلیں) مخصوص ڈائریکٹری میں محفوظ کریں (curl 7.73+)
curl -o: مخصوص فائل نام سے محفوظ کریں
- یہ کیا کرتا ہے
-o(یا--output) فلیگ curl کو ریسپانس باڈی آپ کی مخصوص فائل میں محفوظ کرنے کا کہتا ہے۔ اس کے بغیر curl ریسپانس stdout (آپ کا ٹرمینل) پر پرنٹ کرتا ہے۔ آپ کوئی بھی فائل نام اور پاتھ استعمال کر سکتے ہیں — curl فائل بنائے گا یا موجودہ کو اوور رائٹ کرے گا۔- عام استعمال
- جب آپ کو فائل کا عین نام کنٹرول کرنا ہو یا مخصوص ڈائریکٹری میں محفوظ کرنا ہو تو
-oاستعمال کریں۔ یہ کسی بھی پروٹوکول — HTTP، HTTPS، FTP، SFTP اور مزید کے ساتھ کام کرتا ہے۔ ری ڈائریکٹس ہینڈل کرنے کے لیے-Lاور اسکرپٹس میں خاموش آپریشن کے لیے-sکے ساتھ ملائیں۔
$ curl -o report.pdf https://example.com/files/report.pdfcurl -O: ریموٹ فائل نام سے محفوظ کریں
- یہ کیا کرتا ہے
-O(یا--remote-name) فلیگ ڈاؤن لوڈ شدہ فائل کو URL سے نکالے گئے فائل نام سے محفوظ کرتا ہے۔ مثلاً اگر URL/data.csvپر ختم ہوتا ہے تو curl موجودہ ڈائریکٹری میںdata.csvنام کی فائل بنائے گا۔- عام استعمال
-Oاستعمال کریں جب ریموٹ فائل نام معنی خیز ہو اور آپ کو اسے تبدیل کرنے کی ضرورت نہ ہو۔ ایک کمانڈ میں کئی فائلیں ڈاؤن لوڈ کرنے کے لیے متعدد-Oفلیگز دے سکتے ہیں۔ نوٹ: اگر URL میں فائل نام نہیں ہے (مثلاً/پر ختم ہوتا ہے) تو curl ناکام ہو جائے گا — بجائے اس کے-oاستعمال کریں۔
$ curl -O https://example.com/files/data.csvcurl -L: ری ڈائریکٹس فالو کریں
- یہ کیا کرتا ہے
-L(یا--location) فلیگ curl کو خودکار طور پر HTTP ری ڈائریکٹس فالو کرنے دیتا ہے — 301 (مستقل منتقلی)، 302 (پایا گیا)، 307 اور 308۔-Lکے بغیر curl اصل مواد کی بجائے ری ڈائریکٹ ریسپانس خود واپس کرتا ہے۔- عام استعمال
- زیادہ تر ڈاؤن لوڈ URLs کم از کم ایک بار ری ڈائریکٹ کرتے ہیں (مثلاً HTTP سے HTTPS یا مختصر URL سے اصل فائل تک)۔ فائلیں ڈاؤن لوڈ کرتے وقت ہمیشہ
-Lکو-oیا-Oکے ساتھ ملائیں۔ بطور ڈیفالٹ curl 50 ری ڈائریکٹس تک فالو کرتا ہے؛--max-redirsسے تبدیل کریں۔
$ curl -L -o latest.tar.gz https://github.com/user/repo/releases/latest/download/app.tar.gzcurl -C -: رکی ہوئی ڈاؤن لوڈ دوبارہ شروع کریں
- یہ کیا کرتا ہے
-C -(یا--continue-at -) فلیگ curl کو موجودہ جزوی فائل کا سائز خودکار طور پر پتہ لگانے اور جہاں رکا تھا وہاں سے ڈاؤن لوڈ دوبارہ شروع کرنے کا کہتا ہے۔ اس کے کام کرنے کے لیے سرور کو HTTPRangeہیڈر سپورٹ کرنا ضروری ہے۔- عام استعمال
- اگر بڑی ڈاؤن لوڈ نیٹ ورک مسئلے یا ٹائم آؤٹ سے رک گئی تو بس
-C -شامل کر کے وہی کمانڈ دوبارہ چلائیں۔ curl ایکRange: bytes=OFFSET-ہیڈر بھیجے گا اور صرف باقی ڈیٹا ڈاؤن لوڈ کرے گا۔ یہ غیر مستحکم کنکشنز پر بڑی فائلوں کے لیے ضروری ہے۔
$ curl -C - -o largefile.zip https://cdn.example.com/largefile.zipcurl --limit-rate: ڈاؤن لوڈ رفتار محدود کریں
- یہ کیا کرتا ہے
--limit-rateفلیگ ڈاؤن لوڈ (اور اپ لوڈ) رفتار کو مخصوص شرح تک محدود کرتا ہے۔ یہ لاحقے قبول کرتا ہے: کلو بائٹس/سیکنڈ کے لیےkیاK، میگا بائٹس/سیکنڈ کے لیےmیاM، گیگا بائٹس/سیکنڈ کے لیےgیاG۔- عام استعمال
- بڑی فائلیں ڈاؤن لوڈ کرتے وقت، خاص طور پر مشترکہ کنکشنز پر، اپنی بینڈوڈتھ مکمل استعمال ہونے سے بچانے کے لیے
--limit-rateاستعمال کریں۔ یہ ٹیسٹ کرنے کے لیے بھی مفید ہے کہ آپ کی ایپلیکیشن سست ریسپانسز کیسے ہینڈل کرتی ہے۔
$ curl --limit-rate 1M -o bigfile.iso https://mirror.example.com/bigfile.isocurl --max-filesize: فائل بہت بڑی ہو تو منسوخ کریں
- یہ کیا کرتا ہے
--max-filesizeفلیگ curl کو متوقع فائل سائز (Content-Lengthہیڈر سے) مخصوص حد سے زیادہ ہونے پر ٹرانسفر منسوخ کرنے کا کہتا ہے۔ سائزk،M،Gجیسے لاحقے استعمال کر سکتا ہے۔- عام استعمال
- غیر متوقع طور پر بڑی ڈاؤن لوڈز کو ڈسک اسپیس استعمال کرنے سے روکنے کے لیے اسکرپٹس میں استعمال کریں۔ نوٹ کریں کہ تمام سرورز
Content-Lengthنہیں بھیجتے — اس صورت میں curl یہ حد نافذ نہیں کر سکتا اور ڈاؤن لوڈ عام طور پر جاری رہتی ہے۔
$ curl --max-filesize 100M -o update.bin https://example.com/update.bincurl -J: سرور کی تجویز کردہ فائل نام استعمال کریں
- یہ کیا کرتا ہے
-J(یا--remote-header-name) فلیگ curl کو URL سے اخذ کرنے کی بجائے سرور کےContent-Dispositionہیڈر میں مخصوص فائل نام استعمال کرنے کا کہتا ہے۔ یہ ان ڈاؤن لوڈ APIs میں عام ہے جو معنی خیز ناموں والی فائلیں واپس کرتے ہیں۔- عام استعمال
- ہمیشہ
-Jکو-Oکے ساتھ ملائیں۔ یہ اس وقت مفید ہے جب URL ایک API اینڈ پوائنٹ ہو (جیسے/export?format=csv) لیکن سرور ہیڈرز میں مناسب فائل نام واپس کرے۔ سیکیورٹی نوٹ: فائل نام سرور کنٹرول کرتا ہے، اس لیے صرف قابل اعتماد سرورز کے ساتھ استعمال کریں۔
$ curl -L -O -J https://example.com/api/export?format=csvcurl -#: پروگریس بار دکھائیں
- یہ کیا کرتا ہے
-#(یا--progress-bar) فلیگ ڈیفالٹ تفصیلی پروگریس میٹر کو سادہ###پروگریس بار سے بدل دیتا ہے۔ یہ انٹرایکٹو استعمال کے لیے پڑھنے میں آسان ہے۔- عام استعمال
- جب انٹرایکٹو طور پر ڈاؤن لوڈ کر رہے ہوں اور صاف پروگریس انڈیکیٹر چاہتے ہوں تو
-#استعمال کریں۔ اسکرپٹس کے لیے-s(خاموش) یا ڈیفالٹ پروگریس میٹر ترجیح دیں۔ curl کا ڈیفالٹ آؤٹ پٹ پہلے سے رفتار، فیصد، بقیہ وقت اور کل سائز دکھاتا ہے۔
$ curl -# -o archive.tar.gz https://example.com/archive.tar.gzاضافی ڈاؤن لوڈ آپشنز
سرور تصدیق کے لیے username:password فراہم کریں
عارضی ایررز پر ٹرانسفر دوبارہ کریں (کتنی بار)
دوبارہ کوششوں کے درمیان اتنے سیکنڈ انتظار کریں
مقامی فائل URL پر اپ لوڈ کریں (بطور ڈیفالٹ PUT)
آؤٹ پٹ محفوظ کرتے وقت ضرورت کے مطابق مقامی ڈائریکٹریز بنائیں
پروگریس میٹر اور ایرر پیغامات دبائیں
آؤٹ پٹ فائل(فائلیں) مخصوص ڈائریکٹری میں محفوظ کریں (curl 7.73+)
حقیقی دنیا کے ڈاؤن لوڈ سنیریوز
یہ مثالیں روزمرہ ڈویلپمنٹ اور اسکرپٹنگ میں پیش آنے والے عام ڈاؤن لوڈ ٹاسکس کو ہینڈل کرنے کے لیے متعدد فلیگز کو ملاتی ہیں۔
ایک ساتھ کئی فائلیں ڈاؤن لوڈ کریں
ایک کمانڈ میں کئی فائلیں ڈاؤن لوڈ کرنے کے لیے متعدد -O فلیگز استعمال کریں۔ curl انہیں ترتیب وار پروسیس کرتا ہے۔ متوازی ڈاؤن لوڈز کے لیے xargs یا GNU parallel استعمال کریں۔
$ curl -O https://example.com/file1.txt -O https://example.com/file2.txt -O https://example.com/file3.txtFTP سرور سے ڈاؤن لوڈ کریں
curl FTP، FTPS اور SFTP کو بلٹ ان سپورٹ کرتا ہے۔ تصدیق شدہ رسائی کے لیے -u user:password شامل کریں۔ ریموٹ فائل نام رکھنے کے لیے -O استعمال کریں۔
$ curl -u user:pass -o backup.sql ftp://ftp.example.com/db/backup.sqlتصدیق کے ساتھ ڈاؤن لوڈ
Basic Auth کے لیے -u user:pass یا Bearer token یا API key بھیجنے کے لیے -H استعمال کریں۔ مکمل ڈاؤن لوڈ کے لیے -L اور -o کے ساتھ ملائیں۔
$ curl -H "Authorization: Bearer eyJhbGciOi..." -L -o data.json https://api.example.com/exportری زیوم اور ری ٹرائی کے ساتھ قابل اعتماد ڈاؤن لوڈ
نیٹ ورک رکاوٹوں کو برداشت کرنے والی مضبوط ڈاؤن لوڈز کے لیے -C - (ری زیوم)، --retry (ناکامی پر خودکار ری ٹرائی) اور -L (ری ڈائریکٹس فالو) ملائیں۔
$ curl -C - --retry 5 --retry-delay 10 -L -o largefile.zip https://cdn.example.com/largefile.zipcurl سے ڈاؤن لوڈ کے بارے میں اکثر پوچھے جانے والے سوالات
curl -o اور curl -O میں کیا فرق ہے؟
-o filename ڈاؤن لوڈ کو آپ کے مخصوص فائل نام میں محفوظ کرتا ہے۔ -O URL سے فائل نام نکالتا ہے اور وہ استعمال کرتا ہے۔ جب آپ کو حسب ضرورت نام یا پاتھ چاہیے تو -o استعمال کریں؛ جب ریموٹ فائل نام ٹھیک ہو تو -O استعمال کریں۔
curl اصل فائل کی بجائے خالی یا HTML فائل کیوں ڈاؤن لوڈ کرتا ہے؟
URL غالباً HTTP ری ڈائریکٹ (301 یا 302) واپس کرتا ہے۔ بطور ڈیفالٹ curl ری ڈائریکٹ ریسپانس خود محفوظ کرتا ہے — حتمی مواد نہیں۔ خودکار ری ڈائریکٹس فالو کرنے کے لیے -L شامل کریں: curl -L -o file URL۔
curl سے جزوی ڈاؤن لوڈ شدہ فائل کیسے دوبارہ شروع کریں؟
curl -C - -o filename URL استعمال کریں۔ -C - فلیگ موجودہ فائل سائز پتہ لگاتا ہے اور صرف باقی بائٹس کی درخواست کے لیے Range ہیڈر بھیجتا ہے۔ اس کے کام کرنے کے لیے سرور کو range requests سپورٹ کرنا ضروری ہے۔
curl میں ڈاؤن لوڈ رفتار کیسے محدود کریں؟
--limit-rate ویلیو اور لاحقے کے ساتھ استعمال کریں: curl --limit-rate 500k -o file URL رفتار 500 KB/s تک محدود کرتا ہے۔ لاحقے: k (KB/s)، M (MB/s)، G (GB/s)۔
کیا curl ایک ساتھ کئی فائلیں ڈاؤن لوڈ کر سکتا ہے؟
ہاں۔ متعدد -O فلیگز استعمال کریں: curl -O URL1 -O URL2 -O URL3۔ curl انہیں ترتیب وار ڈاؤن لوڈ کرتا ہے۔ متوازی ڈاؤن لوڈز کے لیے URL لسٹ xargs -P 4 -I {} curl -O {} کو دیں۔
تصدیق کی ضرورت والی فائل کیسے ڈاؤن لوڈ کریں؟
HTTP Basic Auth کے لیے: curl -u user:pass -o file URL۔ Bearer tokens کے لیے: curl -H "Authorization: Bearer TOKEN" -o file URL۔ ہیڈرز میں API keys کے لیے: curl -H "X-API-Key: KEY" -o file URL۔
curl سے FTP سرور سے فائلیں کیسے ڈاؤن لوڈ کریں؟
curl -u user:pass -o localfile ftp://host/path/file استعمال کریں۔ curl FTP، FTPS (FTP اوور TLS) اور SFTP (SSH FTP) کو بلٹ ان سپورٹ کرتا ہے۔ گمنام FTP کے لیے -u چھوڑ دیں۔
بڑی فائلیں curl سے قابل اعتماد طریقے سے کیسے ڈاؤن لوڈ کریں؟
-C - (ناکامی پر ری زیوم)، --retry 5 (آٹو ری ٹرائی)، --retry-delay 10 اور -L (ری ڈائریکٹس فالو) ملائیں: curl -C - --retry 5 --retry-delay 10 -L -o file URL۔ یہ نیٹ ورک رکاوٹوں کو خودکار طور پر ہینڈل کرتا ہے۔
curl سے ڈاؤن لوڈ کرتے وقت پروگریس بار کیسے دکھائیں؟
سادہ پروگریس بار کے لیے curl -# -o file URL استعمال کریں۔ curl کا ڈیفالٹ آؤٹ پٹ پہلے سے ٹرانسفر رفتار، فیصد اور تخمینی وقت دکھاتا ہے۔ اسکرپٹس کے لیے تمام آؤٹ پٹ دبانے کے لیے -s استعمال کریں۔
کیا curl میں ڈاؤن لوڈ ڈائریکٹری مخصوص کر سکتے ہیں؟
curl 7.73+ کے ساتھ --output-dir /path/to/dir اور -O ملائیں۔ پرانے ورژنز کے لیے -o /path/to/dir/filename سے مکمل پاتھ مخصوص کریں۔ اگر ڈائریکٹری ابھی موجود نہیں ہے تو --create-dirs شامل کریں۔
فائلیں ڈاؤن لوڈ کرنے کے لیے curl استعمال کروں یا wget؟
دونوں بہترین ہیں۔ wget ریکرسو ویب سائٹ مررنگ کے لیے آسان ہے اور بلٹ ان ری ٹرائی لاجک رکھتا ہے۔ curl 25+ پروٹوکولز سپورٹ کرتا ہے (صرف HTTP/FTP نہیں)، API کالز اور اسکرپٹنگ کے لیے بہتر ہے، مزید تصدیقی طریقے سپورٹ کرتا ہے اور تقریباً ہر آپریٹنگ سسٹم پر دستیاب ہے۔
bash اسکرپٹ میں فائلیں ڈاؤن لوڈ کرنے کے لیے curl کیسے استعمال کریں؟
curl -fsSL -o file URL استعمال کریں: -f HTTP ایررز پر خاموشی سے ناکام ہوتا ہے (ایرر پیج محفوظ نہیں ہوتا)، -s خاموش، -S خاموش موڈ میں بھی ایررز دکھاتا ہے، -L ری ڈائریکٹس فالو کرتا ہے۔ ایگزٹ کوڈ چیک کریں: if ! curl -fsSL -o file URL; then echo "Download failed"; exit 1; fi۔