استخدام wget لجلب دليل بشكل متكرر يحتوي على ملفات عشوائية فيه
سؤال
لدي دليل ويب حيث أقوم بتخزين بعض ملفات التكوين.أرغب في استخدام 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"
}
الاستخدام:
- اضف إليه
~/.bashrc
أو لصق في المحطة wgetod "http://example.com/x/"