curl سے فائلیں کیسے ڈاؤن لوڈ کریں

curl HTTP، HTTPS، FTP اور درجنوں دیگر پروٹوکولز پر فائلیں ڈاؤن لوڈ کرنے کے لیے سب سے زیادہ ورسٹائل کمانڈ لائن ٹولز میں سے ایک ہے۔ چاہے آپ کو ایک API ریسپانس فائل میں محفوظ کرنا ہو یا شیل اسکرپٹ میں بیچ ڈاؤن لوڈز خودکار کرنے ہوں — curl کے پاس اس کے لیے ایک فلیگ ہے۔ یہ گائیڈ ڈاؤن لوڈ سے متعلق ہر آپشن کا احاطہ کرتی ہے — -o اور -O سے بنیادی فائل سیونگ سے لے کر -C - سے رکی ہوئی ٹرانسفرز دوبارہ شروع کرنے، --limit-rate سے بینڈوڈتھ کو محدود کرنے اور پروگریس بارز دکھانے تک۔ ہر فلیگ میں واضح وضاحت، عام استعمال کے نمونے اور کاپی کرنے کے لیے تیار مثال شامل ہے۔

ڈاؤن لوڈ فلیگز فوری حوالہ

-o

آؤٹ پٹ کو stdout کی بجائے مخصوص فائل میں لکھیں

-O

آؤٹ پٹ کو ریموٹ فائل جیسے نام والی فائل میں لکھیں

-L

HTTP 3xx ری ڈائریکٹس خودکار فالو کریں

-C -

پچھلی فائل ٹرانسفر جاری/دوبارہ شروع کریں

--limit-rate

ٹرانسفر رفتار کو دی گئی شرح تک محدود کریں

--max-filesize

مخصوص سائز سے بڑی فائلیں ڈاؤن لوڈ کرنے سے انکار کریں

-J

فائل نام رکھنے کے لیے Content-Disposition ہیڈر استعمال کریں

-#

ٹرانسفر کی پیش رفت سادہ پروگریس بار کے طور پر دکھائیں

-u

سرور تصدیق کے لیے username:password فراہم کریں

--retry

عارضی ایررز پر ٹرانسفر دوبارہ کریں (کتنی بار)

--retry-delay

دوبارہ کوششوں کے درمیان اتنے سیکنڈ انتظار کریں

-T

مقامی فائل URL پر اپ لوڈ کریں (بطور ڈیفالٹ PUT)

--create-dirs

آؤٹ پٹ محفوظ کرتے وقت ضرورت کے مطابق مقامی ڈائریکٹریز بنائیں

-s

پروگریس میٹر اور ایرر پیغامات دبائیں

--output-dir

آؤٹ پٹ فائل(فائلیں) مخصوص ڈائریکٹری میں محفوظ کریں (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.pdf

curl -O: ریموٹ فائل نام سے محفوظ کریں

یہ کیا کرتا ہے
-O (یا --remote-name) فلیگ ڈاؤن لوڈ شدہ فائل کو URL سے نکالے گئے فائل نام سے محفوظ کرتا ہے۔ مثلاً اگر URL /data.csv پر ختم ہوتا ہے تو curl موجودہ ڈائریکٹری میں data.csv نام کی فائل بنائے گا۔
عام استعمال
-O استعمال کریں جب ریموٹ فائل نام معنی خیز ہو اور آپ کو اسے تبدیل کرنے کی ضرورت نہ ہو۔ ایک کمانڈ میں کئی فائلیں ڈاؤن لوڈ کرنے کے لیے متعدد -O فلیگز دے سکتے ہیں۔ نوٹ: اگر URL میں فائل نام نہیں ہے (مثلاً / پر ختم ہوتا ہے) تو curl ناکام ہو جائے گا — بجائے اس کے -o استعمال کریں۔
$ curl -O https://example.com/files/data.csv

curl -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.gz

curl -C -: رکی ہوئی ڈاؤن لوڈ دوبارہ شروع کریں

یہ کیا کرتا ہے
-C - (یا --continue-at -) فلیگ curl کو موجودہ جزوی فائل کا سائز خودکار طور پر پتہ لگانے اور جہاں رکا تھا وہاں سے ڈاؤن لوڈ دوبارہ شروع کرنے کا کہتا ہے۔ اس کے کام کرنے کے لیے سرور کو HTTP Range ہیڈر سپورٹ کرنا ضروری ہے۔
عام استعمال
اگر بڑی ڈاؤن لوڈ نیٹ ورک مسئلے یا ٹائم آؤٹ سے رک گئی تو بس -C - شامل کر کے وہی کمانڈ دوبارہ چلائیں۔ curl ایک Range: bytes=OFFSET- ہیڈر بھیجے گا اور صرف باقی ڈیٹا ڈاؤن لوڈ کرے گا۔ یہ غیر مستحکم کنکشنز پر بڑی فائلوں کے لیے ضروری ہے۔
$ curl -C - -o largefile.zip https://cdn.example.com/largefile.zip

curl --limit-rate: ڈاؤن لوڈ رفتار محدود کریں

یہ کیا کرتا ہے
--limit-rate فلیگ ڈاؤن لوڈ (اور اپ لوڈ) رفتار کو مخصوص شرح تک محدود کرتا ہے۔ یہ لاحقے قبول کرتا ہے: کلو بائٹس/سیکنڈ کے لیے k یا K، میگا بائٹس/سیکنڈ کے لیے m یا M، گیگا بائٹس/سیکنڈ کے لیے g یا G۔
عام استعمال
بڑی فائلیں ڈاؤن لوڈ کرتے وقت، خاص طور پر مشترکہ کنکشنز پر، اپنی بینڈوڈتھ مکمل استعمال ہونے سے بچانے کے لیے --limit-rate استعمال کریں۔ یہ ٹیسٹ کرنے کے لیے بھی مفید ہے کہ آپ کی ایپلیکیشن سست ریسپانسز کیسے ہینڈل کرتی ہے۔
$ curl --limit-rate 1M -o bigfile.iso https://mirror.example.com/bigfile.iso

curl --max-filesize: فائل بہت بڑی ہو تو منسوخ کریں

یہ کیا کرتا ہے
--max-filesize فلیگ curl کو متوقع فائل سائز (Content-Length ہیڈر سے) مخصوص حد سے زیادہ ہونے پر ٹرانسفر منسوخ کرنے کا کہتا ہے۔ سائز k، M، G جیسے لاحقے استعمال کر سکتا ہے۔
عام استعمال
غیر متوقع طور پر بڑی ڈاؤن لوڈز کو ڈسک اسپیس استعمال کرنے سے روکنے کے لیے اسکرپٹس میں استعمال کریں۔ نوٹ کریں کہ تمام سرورز Content-Length نہیں بھیجتے — اس صورت میں curl یہ حد نافذ نہیں کر سکتا اور ڈاؤن لوڈ عام طور پر جاری رہتی ہے۔
$ curl --max-filesize 100M -o update.bin https://example.com/update.bin

curl -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=csv

curl -#: پروگریس بار دکھائیں

یہ کیا کرتا ہے
-# (یا --progress-bar) فلیگ ڈیفالٹ تفصیلی پروگریس میٹر کو سادہ ### پروگریس بار سے بدل دیتا ہے۔ یہ انٹرایکٹو استعمال کے لیے پڑھنے میں آسان ہے۔
عام استعمال
جب انٹرایکٹو طور پر ڈاؤن لوڈ کر رہے ہوں اور صاف پروگریس انڈیکیٹر چاہتے ہوں تو -# استعمال کریں۔ اسکرپٹس کے لیے -s (خاموش) یا ڈیفالٹ پروگریس میٹر ترجیح دیں۔ curl کا ڈیفالٹ آؤٹ پٹ پہلے سے رفتار، فیصد، بقیہ وقت اور کل سائز دکھاتا ہے۔
$ curl -# -o archive.tar.gz https://example.com/archive.tar.gz

اضافی ڈاؤن لوڈ آپشنز

-u

سرور تصدیق کے لیے username:password فراہم کریں

--retry

عارضی ایررز پر ٹرانسفر دوبارہ کریں (کتنی بار)

--retry-delay

دوبارہ کوششوں کے درمیان اتنے سیکنڈ انتظار کریں

-T

مقامی فائل URL پر اپ لوڈ کریں (بطور ڈیفالٹ PUT)

--create-dirs

آؤٹ پٹ محفوظ کرتے وقت ضرورت کے مطابق مقامی ڈائریکٹریز بنائیں

-s

پروگریس میٹر اور ایرر پیغامات دبائیں

--output-dir

آؤٹ پٹ فائل(فائلیں) مخصوص ڈائریکٹری میں محفوظ کریں (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.txt

FTP سرور سے ڈاؤن لوڈ کریں

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.zip

curl سے ڈاؤن لوڈ کے بارے میں اکثر پوچھے جانے والے سوالات

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۔