سیر صعودی $ و روش‌های مختلفی که برای دانلود در لینوکس یاد گرفتم!

·

4 min read

این شد که تصمیم گرفتم که راهی غیر از وب سرور برای انتقال فایل از سرور (که می‌توان دقیقا یک کامپیوتر با یک اتصال اینترنت به درد بخور فرضش کرد) به کامپیوتر خودمان پیدا کنم‌. در این مسیر همراهم باشید و عمرا قصه نخورید که چرا در سیستم عامل استکباریتان‌، خواب چنین وسایلی را به راحتی نمی‌بینیند:

Konqueror:

خوب اولین ابزار دم دستمان مرورگر پیش‌فرض KDE است‌. برای دیدن فایل‌های روی وب‌سرور تنها کافیست در آدرس‌بار چنین چیزی بنویسیم:

fish://USER@IPSERVER

خودش پس از شروع به جستجو پسوورد می‌پرسد که همان پسوورد ssh (پسوورد یوزر) خواهد بود‌. و دیگر می‌توانید با فایل‌ها جوری رفتار کنید که انگار روی کامپیوتر خودتان قرار دارند‌. ولی خوب بدیهی است که با سرعت اینترنت بالای ما‌، خیلی دردناک است‌. برای فایل‌های کوچک حداکثر تا دو سه مگابایتی می‌توان با یک کپی پیست ساده سر و ته قضیه را هم آورد‌. ولی اگر فایل دو گیگ باشد‌، باید دنبال چارهٔ بهتر گشت‌.

scp

یا همان Safe CoPy‌، که به این صورت مورد استعمال قرار می‌گیرد:

scp USER@IPSERVER:PATH_TO_FILE _Path_to_download_

بعد از اجرا یک پرامپتی می‌آید و پسوورد می‌پرسد (عین ssh خودمان) و عملیات کپی انجام می‌شود‌. بدبختی‌اش این‌جاست که چون ما خیلی به سرعت انتقالمان اطمینان داریم‌، یک بار زبانم لال، فایلمان ناقص دانلود شود‌ (لنگر است دیگر‌، می‌افتد‌)، دیگر نمی‌توان Resume‌اش کرد و باید دوباره از اول شروع کنید‌.

scp خوب است‌، ولی باز هم زیاد به درد موقعیت ما نمی‌خورد‌. می‌رویم گزینهٔ بعدی.

Filezilla

این فایلزیلای پدر سوخته را احتمالا از روی استفاده‌هایش برای FTP می‌شناسید‌. خوب خوشبختانه این‌ها از پروتکلی به اسم SFTP هم پشتیبانی می‌کنند که منظورش این است که SSH می‌تواند برای وصل شدن به سرور مقصد قرار گیرد‌. پس کافیست از منوی فایل روی Site manager کلیک کنید و صفحهٔ باز شده را مثل عکس زیر کانفیگ کنید:

![Filezilla site manager](http://dl.dropbox.com/u/25017694/Blog-photos/filezilla.png "Filezilla site manager")

و بعد هم روی connect بزنید و تمام‌. خیلی راحت وصل می‌شوید و می‌توانید با Drog & Drop فایل را انتقال دهید به سیستم‌تان‌. آسان بود‌. ولی خوب ما فقیر فقرا که ساعت ۲ تا ۷ صبح سرعت اینترنت‌مان سر به فلک می‌کشد‌، با تک نخی بودن مدل دانلود‌مان احتمالا طی پنج ساعت نمی‌توانیم ۲ درصد یک فایل دو گیگی را دانلود کنیم‌. می‌توانیم؟

پس فایلزیلا هم با تمام خوبی‌هایش بهتر است برود جلو بوق بزند‌. ما باید برای مساله‌مان دنبال یک راه حل بهتر باشیم‌.

rsync

یاد‌تان می‌آید گفتیم که scp سرعت خوبی داشت ولی Resume نمی‌کرد‌. یک ابزار دیگر هم داریم که جینگولک بازی‌هایش در زمان Resume فوق‌العاده است و زبان زد خاص و عام‌. مثل این نقل قول:

ای کسانی که ویندوز آورده‌اید‌، اگر راست می‌گویید rsync بیاورید «منبع نامعلوم منبع خودش اومد اعتراف کرد ;-)»

این می‌شود که از آن به صورت زیر استفاده می‌کنیم:

rsync -az --progress --rsh='ssh' --partial USER@IPSERVER:PATH_TO_FILE _Path_to_download

خیلی هم خوب‌. یکی از ویژگی‌هایش این است که می‌توانید آدرس یک پوشه را برای دانلود بهش بخورانید و دیگر دست به دستور نزنید و فقط هر وقت خواستید رانش کنید‌. خودش آخرین فایل‌های آن پوشه را می‌گیرد‌. اما امان از سرعت‌. این جینگولک بازی‌های rsync روی قابلیت‌های فوق‌العاده resume‌اش هزینه دارد و آن هم سرعت است‌! که ما به آن هم خیلی نیاز داریم‌. برای این کار بسته به موقعیت می‌توانیم آن آرگومان z را حذف کنیم‌. ولی حقیقتش برای ما فرق چندانی نداشت‌.

این است که rsync هم می‌گذاریم برای وقتی که لازمش داریم و می‌رویم دنبال یک راه حل بهتر که هم Resume کند‌، هم چند نخه دانلود کند‌، و از آن مهم‌تر این که هی مجبورمان نکند پسوورد بزنیم! آخر چه کسی حالش را دارد ساعت ۲ صبح پسوورد یادش بیاورد؟

lftp

فوق‌العاده‌ است‌. فوق‌العاده‌. و این‌طوری استفاده می‌شود:

lftp -c "mirror -c --use-pget-n=10 --verbose sftp://USER:PASSWORD@IPSERVER/PATH_TO_FILE"

هوم‌، یک کمی طولانی شد‌. ولی بگذارید کمی در موردش صحبت کنیم‌. چون واقعا لازم به توضیح است:

  • ‎-c اول یعنی این که دستور روبرو را اجرا کن‌.
  • mirror یک برنامه توکار برای lftp است‌. یکی دیگر مثلا pget است‌. هر کدام به درد جایی می‌خورد و این mirror الان به درد ما‌. (از pget هم می‌توان استفاده کرد ولی این یکی بیشتر به مزاقم نشست).
  • ‎-c این آرگومان مال mirror است و یعنی Resume کن اگر می‌توانی D:
  • ‎--user-pget-n=10 یعنی فایل را ده قسمت کن و همه را با هم بگیر‌. این همان قابلیت چند نخی است که باعث افزایش سرعت می‌شود و دانلود منیجر‌های مدرن با آن پز می‌دهند ;-)
  • USER:PASSWORD یعنی این‌ور یوزر را می‌نویسیم و آن‌ورش رمز عبورش را!
  • PATH_TO_FILE این‌بار کمی با باقی مواقع فرق دارد‌. قبلا آدرس را از پوشهٔ خانگی یوزری که وارد شده بود وارد می‌کردیم و موضوع حل بود‌. ولی اینجا آدرس را از ریشه (/) می‌نویسیم‌. یعنی اگر در پوشهٔ خانگی‌تان است می‌شود این:
/home/USER/File

lftp هم مانند rsync (شاید هم scp) زورش را دارد که پوشه‌ای که به آن خورانده‌ایم را دانلود کند‌.

همین دیگر‌. دیدید؟ باز هم بگویید بد است‌. لامصب را می‌بینید که چقدر به فکر جیب آدم است؟ با هر پولی و با هر سازی که دلتان خواست برایش بنوازید‌، برای‌تان آن‌قدر خوب رقص می‌کند که انگشت به دهن می‌بانید ;-)