به عنوان مدیر سرور لینوکس، در برخی از مواقع ممکن است نیاز داشته باشیم که حجمی از فایل ها و پوشه ها را به یک سرور دیگر انتقال دهیم. این کار را با استفاده از دستورات مختلفی می توانیم انجام دهیم که در اینجا با استفاده از دستور wget می خواهیم نحوۀ دانلود کردن یک پوشه به همراه زیر پوشه ها و همچنین فایل های درون آنها را بیاموزیم. در اینجا برای ما مهم است که همان ساختار پوشه بندی که روی سرور مبداً وجود دارد حفظ شود و روی سرور مقصد آورده شود. استفاده از دستور wget برای این منظور دارای مزایایی است که از جملۀ آن همین حفظ ساختار پوشه های قابل دریافت است.
پس سناریو را این طور تعریف می کنیم که می خواهیم یک مسیر یا پوشۀ خاصی را به همراه تمامی اطلاعات زیر مسیرِ مورد نظر دریافت کرده و روی یک سرور دیگر بریزیم. همانطور که در آموزش دستور wget توضیح داده شد، این بستۀ نرم افزاری از پروتکل های مختلفی پشتیبانی می کند. از جمله http یا https که نیاز است پوشه و فایل های مورد نظر روی سرور مبدا از طریق این پروتکل ها قابل دسترس باشند. حتی ممکن است پوشه ای که قصد انتقالش را دارید، روی یک هاست اشتراکی باشد. که در این صورت باید مسیر مورد نظر درون ریشۀ فضای میزبانی یا همان Document Root فضای میزبانی باشد (در سرورهای لینوکس public_html).
علاوه بر آن این بستۀ نرم افزاری (wget) از پروتکل های ftp و همچنین دیگر پروتکل های پرکاربرد شبکه هم برای انتقال پشتیبانی می کند که می توانید از آنها هم استفاده کنید. اما ما در اینجا می خواهیم دانلود کامل یک پوشه با دستور wget را از روی http بیاموزیم. نحوۀ استفاده از این دستور بسیار ساده و کاربردی است. یاد گرفتن این دستور را به همۀ کسانی که با لینوکس کار می کنند توصیه می کنم. مخصوصاً اگر کارتان مدیریت سرور لینوکس باشد که باید حرفه ای به همراه تمامی مشخصه های پرکاربردش آن را بیاموزید.
ما برای اینکه قادر باشیم تمامی پرونده ها و همچنین پوشه های زیر مجموعۀ یک مسیر خاص را دریافت کنیم، باید به دستور wget بفهمانیم که قصد ما پویش به صورت بازگشتی یا همان recursively است. یعنی یک مسیر را تا ته دانلود می کند، مجدداً بر می گردد تا یک مسیر دیگر را برای دانلود کردن، تا جایی که ما تعیین می کنیم پی بگیرد. خب، برای این کار وارد محیط خط فرمان یا همان SSH سرور مقصد خواهیم شد؛ جایی که قرار است پرونده ها و پوشه ها به آنجا انتقال داده شوند. دقت داشته باشید که مسیر روی سرور مبداً باید قابل دستیابی باشد. به عنوان مثال اگر روی مسیر public_html یک هاست اشتراکی است، باید با استفاده از htaccess. و قرار دادن دستور Options +Indexes درون آن قابلیت پیمایش را فراهم کنید. که نرم افزار Wget ما قادر باشد مسیر مورد نظر را پیمایش کند و با خطاهای ۴۰۰ یا ۵۰۰ مواجه نشود.
دستوری که ما باید روی سرور مقصد از آن استفاده کنیم بدین صورت است:
wget -r -np -nH –cut-dirs=3 -R index.html http://domain-name/aaa/bbb/ccc/ddd/
حالا به سراغ تشریح کامل این دستور برای شما می روم. اول از همه که کار را با وارد کردن دستور wget شروع می کنیم. بعد از آن از مشخصۀ r استفاده کردیم. این مشخصه همان کار فهماندن دانلود کامل و یا تمام محتویات موجود در مسیر را به این دستور انجام می دهد.
مشخصۀ np که معادلی برای no-parent می باشد، می فهماند که نباید پوشه های قبل از مسیر فعلی را روی سرور مقصد ذخیره کند. یعنی ساختار بندی را دقیقاً از آن جایی دریافت کند که ما از طریق آخرین قسمت این دستور به آن می دهیم؛ نه اینکه از ریشۀ سرور مبداً شروع به دریافت ساختار بندیِ پوشه ها روی سرور مقصد کند!
با مشخصۀ nH (به بزرگی و کوچکی حروف مشخصه های دستور لینوکس توجه کنید) ساختار پوشۀ اصلی که مسیرش را ما به این دستور می دهیم را هم دریافت نمی کند. مثلاً اگر ما می گوییم مسیر webnolog.net/client را دریافت کن، محتوای دریافتی را درون پوشه ای با نام client نخواهد ریخت. بلکه دقیقاً همان ها را در مسیر فعلی روی سرور فعلی که قرار گرفتید، می ریزد. قابل ذکر است که قبل از اینکه از دستور wget استفاده کنید، پیشنهاد می شود که به مسیری روی سرور مقصد بروید که قصد ذخیره شدن اطلاعات دانلودی در آنجا را دارید (با استفاده از دستور cd).
مشخصۀ بعدی cut-dirs است که سطوحی از پوشه ها که بعد از مسیر اولیه قرار می گیرند را روی سرور مقصد حذف می کند. به عنوان مثال دستور بالا پوشه بندی روی سرور مقصد را از aaa شروع می کند. چون مشخصۀ nH مسیر اولیه یا همان domain-name را حذف کرده بود. حالا با استفاده از مشخصۀ cut-dirs و سپس مقدار دهی آن با یک عدد (در اینجا عدد ۳) پوشه بندی aaa/bbb/ccc هم روی سرور مقصد ذخیره نخواهند شد. چون اصولاً قصد ما دریافت اطلاعات موجود در این مسیرها نیست. ما فقط می خواهیم خود ddd و هر آنچه که درون آن قرار دارد را دانلود (دریافت) کنیم. پس چیزهایی که دریافت می کنیم، دقیقاً همان هایی که ما می خواهیم. طریقۀ کار کردن با این مشخصه از دستور wget لینوکس را هم یاد بگیرید.
مشخصۀ بعدی که بسیار کاربردی است، R نام دارد و برای عدم دریافت فایل های خاص کاربرد دارد. به عنوان مثال در دستور ما فایل های index.html دریافت نخواهند شد یا اصطلاحاً پس زده می شوند. توجه داشته باشید که اگر از این مشخصه استفاده نکنید، ممکن است تعداد قابل توجهی فایل index.html دریافت کنید که مناسب نیست.
و در آخر باید مسیری که قرار است به صورت کامل دانلود شود را وارد کنید. که ما http://domain-name/aaa/bbb/ccc/ddd را زدیم. پس از اجرا کردن دستور بالا، در مسیری که روی سرور مقصد هستیم، یک پوشه برای ما ساخته خواهد شد با نام ddd که تمامی محتویات مسیر روی سرور مبداً درون آن وجود خواهد داشت.
نکته: زمانی که از این دستور استفاده می کنید، ممکن است در چند ثانیه یا چند دقیقۀ اول، فقط ساختار پوشه بندی ها دریافت شود. این طور فکر نکنید که در حال دانلود کردن فایل های خالی است! باید صبر کنید تا بر اساس حجم قابل دریافت، زمان بگذرد و دانلود کامل یک پوشه با دستور wget انجام گیرد.
این بود از آموزش دستور wget به جهت دانلود کامل یک پوشه به همراه پوشه بندی ها و همچنین پرونده (فایل) های درون آن که در خیلی از مواقع به آن نیاز پیدا خواهیم کرد. با دستورات و پیکربندی های دیگر سرور لینوکس، به طور اختصاصی CentOS، همراه با وبنولوژی باشید تا به طور کامل مدیریت سرور لینوکس را بیاموزید.
۰ دیدگاه