استخدام wget لجلب دليل بشكل متكرر يحتوي على ملفات عشوائية فيه

StackOverflow https://stackoverflow.com/questions/273743

  •  07-07-2019
  •  | 
  •  

سؤال

لدي دليل ويب حيث أقوم بتخزين بعض ملفات التكوين.أرغب في استخدام wget لسحب هذه الملفات إلى الأسفل والحفاظ على بنيتها الحالية.على سبيل المثال، يبدو الدليل البعيد كما يلي:

http://mysite.com/configs/.vim/

.vim يحمل ملفات وأدلة متعددة.أريد تكرار ذلك على العميل باستخدام wget.لا يبدو أنه يمكن العثور على المجموعة الصحيحة من أعلام wget لإنجاز ذلك.أيه أفكار؟

هل كانت مفيدة؟

المحلول

لديك لتمرير خيار -np / --no-parent إلى wget (بالإضافة إلى -r / --recursive، وبطبيعة الحال)، وإلا فإنه سوف اتبع الرابط في مؤشر دليل على موقعي إلى الدليل الأصل. ذلك الأمر سيبدو هذا:

wget --recursive --no-parent http://example.com/configs/.vim/

لتجنب تحميل الملفات index.html الذي تم إنشاؤه تلقائيا، استخدم خيار -R / --reject:

wget -r -np -R "index.html*" http://example.com/configs/.vim/

نصائح أخرى

لتحميل دليل متكرر، التي ترفض الملفات وتنزيل * index.html وبدون اسم المضيف، الدليل الأصل وبنية الدليل بأكمله:

wget -r -nH --cut-dirs=2 --no-parent --reject="index.html*" http://mysite.com/dir1/dir2/data

لأي شخص آخر أن وجود قضايا مماثلة. مجلد مشترك يلي robots.txt التي قد لا تسمح لك للاستيلاء على الموقع. لا تقلق، يمكنك إيقاف تشغيله:

wget -e robots=off http://www.example.com/

http://www.gnu.org/software/wget/manual/html_node /Robot-Exclusion.html

ويجب عليك استخدام العلم -m (مرآة)، والتي تحرص على لا تعبث مع الطوابع ولعنة أجل غير مسمى.

wget -m http://example.com/configs/.vim/

إذا قمت بإضافة نقطة قبل الآخرين المذكورة في هذا الموضوع، فإنه سيكون:

wget -m -e robots=off --no-parent http://example.com/configs/.vim/

وهنا الأمر مجلد مشترك الكامل الذي عملت بالنسبة لي لتحميل الملفات من دليل على الملقم (تجاهل robots.txt):

wget -e robots=off --cut-dirs=3 --user-agent=Mozilla/5.0 --reject="index.html*" --no-parent --recursive --relative --level=1 --no-directories http://www.example.com/archive/example/5.3.0/

إذا --no-parent لا يساعد، قد استخدام الخيار --include.

والبنية الدليل:

http://<host>/downloads/good
http://<host>/downloads/bad

وترغب في تحميل downloads/good لكن لا دليل downloads/bad:

wget --include downloads/good --mirror --execute robots=off --no-host-directories --cut-dirs=1 --reject="index.html*" --continue http://<host>/downloads/good
wget -r http://mysite.com/configs/.vim/

ويعمل بالنسبة لي.

وربما لديك .wgetrc التي تتدخل معها؟

لجلب دليل متكرر مع اسم المستخدم وكلمة السر، استخدم الأمر التالي:

wget -r --user=(put username here) --password='(put password here)' --no-parent http://example.com/

وكل ما تحتاجه هو علمين، هو واحد "-r" لالعودية و"--no-parent" (أو -np) من أجل عدم الذهاب في '.' و"..". مثل هذا:

وwget -r --no-parent http://example.com/configs/.vim/

وهذا كل شيء. فإنه سيتم تحميل في شجرة المحلية التالية: ./example.com/configs/.vim. ولكن إذا كنت لا تريد الدلائل الأولين، ثم استخدم --cut-dirs=2 العلم إضافي كما اقترح في الردود السابقة:

وwget -r --no-parent --cut-dirs=2 http://example.com/configs/.vim/

وسوف تحميل شجرة الملف الخاص بك فقط في ./.vim/

في الحقيقة، أنا حصلت على السطر الأول من هذه الإجابة بدقة من في دليل مجلد مشترك ، لديهم سبيل المثال نظيفة جدا في نهاية القسم 4.3.

ويجب أن تكون قادرة على القيام بذلك ببساطة عن طريق إضافة -r

wget -r http://stackoverflow.com/

ومجلد مشترك 1.18 قد تعمل على نحو أفضل، على سبيل المثال، حصلت لعض من قبل علة النسخة 1.12 حيث ...

wget --recursive (...)

... فقط يسترد index.html وبدلا من كل الملفات.

كان

والحل البديل لاحظت بعض 301 الموجهات وحاول الموقع الجديد - نظرا لURL جديد، مجلد مشترك حصلت على جميع الملفات الموجودة في الدليل

يتم تنزيل هذا الإصدار بشكل متكرر ولا يقوم بإنشاء أدلة أصلية.

wgetod() {
    NSLASH="$(echo "$1" | perl -pe 's|.*://[^/]+(.*?)/?$|\1|' | grep -o / | wc -l)"
    NCUT=$((NSLASH > 0 ? NSLASH-1 : 0))
    wget -r -nH --user-agent=Mozilla/5.0 --cut-dirs=$NCUT --no-parent --reject="index.html*" "$1"
}

الاستخدام:

  1. اضف إليه ~/.bashrc أو لصق في المحطة
  2. wgetod "http://example.com/x/"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top