Làm cách nào để cho phép wget ghi đè lên tập tin


9

Sử dụng wgetlệnh, làm thế nào để tôi cho phép / hướng dẫn ghi đè tệp cục bộ của mình mọi lúc, bất kể số lần tôi gọi.

Giả sử, tôi muốn tải xuống một tệp từ vị trí: http: //server/folder/file1.html

Ở đây, bất cứ khi nào tôi nói wget http://server/folder/file1.html, tôi muốn nó file1.htmlđược ghi đè trong hệ thống cục bộ của tôi bất kể thời gian nó được thay đổi, đã được tải xuống, v.v. Trường hợp ý định / sử dụng của tôi ở đây là khi tôi gọi wget, tôi rất chắc chắn rằng tôi muốn để thay thế / ghi đè lên tập tin hiện có.

Tôi đã thử các tùy chọn sau, nhưng mỗi tùy chọn được dự định / có nghĩa cho một số mục đích khác.

  1. -nc => --no-clobber
  2. -N => Bật thời gian dập
  3. -r => Bật truy xuất đệ quy

Câu trả lời:


7
wget -q http://www.whatever.com/filename.txt -O /path/filename.txt 

-q là chế độ im lặng để bạn có thể ném nó vào một cron mà không cần bất kỳ đầu ra nào từ lệnh


Không có tùy chọn trực tiếp trong wgetlệnh thực hiện điều này mà không cần tôi chỉ định rõ ràng bằng cách sử dụng -O filename?
G Namam

3
Dường như không có cách nào để buộc ghi đè mọi tệp khi tải xuống tệp bằng wget. Tuy nhiên, tùy chọn sử dụng -N chắc chắn có thể buộc tải xuống và ghi đè các tệp mới hơn. wget -N Sẽ ghi đè tập tin ban đầu nếu kích thước hoặc dấu thời gian thay đổi
aleroot

Không đúng. chỉ đạo các đầu ra của lệnh vào stdout và ống nó vào file: wget -q $ urlYouNeedToGrap> $ fileYouWantToOverwriteEverytime
rasjani

8

Tùy chọn này hoạt động

wget -N http://server/folder/file1.html

thông tin

-N,  --timestamping            don't re-retrieve files unless newer than
                               local.

4

Sử dụng curlthay thế?

curl http://server/folder/file1.html > file1.html

Tôi không phải là chuyên gia Linux. Sự khác biệt cơ bản giữa wgetvà là curlgì? Tôi chắc chắn rằng mỗi lệnh có nghĩa cho một số mục đích cụ thể.
G Namam

1
@Gnanam: Thật ra chúng trùng lặp rất nhiều trong tiện ích CLI cơ bản. Cả hai đều có thể tạo kết nối HTTP và lưu kết quả vào đĩa. Để biết thêm về sự khác biệt, hãy xem daniel.haxx.se/docs/curl-vs-wget.html Bất kể, việc sử dụng ở trên là hoàn toàn hợp lệ. Ngoài ra còn có các công cụ khác trong khu vực chung này: curl.haxx.se/docs/comparison-table.html
Stu Thompson

Hai liên kết này thực sự hữu ích để hiểu sự khác biệt.
G Namam

0

Tôi không nghĩ bạn có thể làm điều đó trừ khi bạn cũng tải xuống các thư mục (vì vậy hãy chuyển cờ -x). Nếu bạn biết tệp này là gì, bạn có thể sử dụng tên tệp -O, ví dụ:
wget http://yourdomain.com/index.html -O index.html


0

Chưa kết hôn: có thể bạn có thể làm việc với wget -r --level=0.

Một khả năng khác: curl -Oghi đè (nhưng nó sử dụng một cách khác để chọn tên tệp, có thể có hoặc không quan trọng với bạn).


Đó là wgetdòng không thực sự làm điều đúng vì nó tạo ra một hệ thống phân cấp của các thư mục con. curl -Omặt khác tải xuống chính xác các tập tin, ghi đè các bản sao hiện có.
sth

0

Tại sao không đặt một trình bao bọc nhỏ xung quanh wget trong kịch bản của bạn?

Tập lệnh có thể di chuyển tất cả các tệp đến một vị trí tạm thời, sau đó quên các tệp / trang web từ xa.

Khi thành công xóa các tập tin trong vị trí tạm thời. Khi thất bại di chuyển các tập tin trở lại và đưa ra một lỗi.

Không có cách nào đơn giản để làm những gì bạn muốn bằng cách sử dụng wget trừ khi bạn biết cụ thể tên của tất cả các tệp, trong trường hợp đó, tùy chọn -O sẽ cho phép bạn buộc tên tệp của tệp được tải xuống.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.