2013-09-22 29 views
5

Tôi đang cố gắng sử dụng wget để tải xuống tệp dưới tên địa phương khác chỉ tải xuống nếu tệp trên máy chủ mới hơn.wget :: đổi tên các tệp đã tải xuống và chỉ tải xuống nếu mới hơn

Những gì tôi nghĩ tôi có thể làm là sử dụng -O tùy chọn wget để có thể chọn tên của tập tin tải về, như trong:

wget http://example.com/weird-name -O local-name 

kết hợp điều đó với tùy chọn -N không tải xuống bất cứ điều gì ngoại trừ nếu dấu thời gian mới hơn trên máy chủ. Vì những lý do giải thích trong các ý kiến ​​dưới đây, wget từ chối kết hợp cả hai lá cờ:

WARNING: timestamping does nothing in combination with -O. See the manual 
for details. 

Bất kỳ ý tưởng về ngắn gọn công việc ở quanh?

+1

Mục tiêu của bạn là gì? người đàn ông wget giải thích tại sao là vô nghĩa để trộn -N với -O, vì: -O không có ý định chỉ đơn giản là "sử dụng tên tập tin thay vì một trong URL;" thay vào đó, nó tương tự như chuyển hướng shell. Trong ngắn hạn của bạn tập tin đầu ra sẽ luôn luôn mới hơn trong máy chủ và không có gì sẽ được bao giờ tải về. –

+1

Tôi cho rằng câu hỏi thực tế là "cách thức thành ngữ trong wget/bash để đổi tên các tệp đã tải xuống ** và ** chỉ tải xuống chúng nếu chúng mới hơn trên máy chủ" - Tôi đã lặp lại câu hỏi để làm rõ điều đó. –

+0

@ecelis nếu tôi nhận được bạn và 'người đàn ông wget' nói đúng, điều đó có nghĩa là tệp' -O' luôn được viết lại/cắt ngắn thời điểm bạn chạy 'wget' và dấu thời gian của nó luôn là NGAY, trong trường hợp này tải xuống không bao giờ được kích hoạt. Đúng? –

Trả lời

2

Tải về nó, sau đó tạo một liên kết

wget -N example.com/weird-name 
ln weird-name local-name 

Sau đó bạn có thể chạy wget -N và nó sẽ làm việc như mong đợi:

  • Chỉ tải xuống nếu mới hơn
  • Nếu một tập tin mới sẽ được tải về nó có thể truy cập được từ một trong hai tên, không có khiến bạn tốn thêm không gian
+0

Điều này có thể hoạt động trừ khi lý do bạn sử dụng '-O' là vì bạn đang tải xuống một tệp giống nhau từ nhiều nguồn vào cùng một thư mục. Ví dụ: nếu bạn đang tải xuống một số tệp robots.txt. –

1

Nếu sử dụng công cụ khác có thể trong trường hợp của bạn, tôi khuyên miễn phí, mã nguồn mở lwp-mirror:

lwp-mirror [-options] <url> <file> 

Nó hoạt động giống như bạn muốn, không có cách giải quyết.

Lệnh này được cung cấp bởi gói libwww-perl trên Ubuntu và Debian trong số các địa điểm khác.

Lưu ý rằng lwp-mirror không hỗ trợ tất cả các tính năng khác của wget. Ví dụ: nó không cho phép bạn đặt Tác nhân người dùng cho yêu cầu như wget.