2017-07-19 1 views
1

Ich möchte wget mit der Option -O/- output-document verwenden (Ausgabe auf angegeben speichern Dateiname) und die Option --backups (um zwischen einer bestimmten Anzahl von Backups zu rotieren).Verwendung von wget mit -O- - Ausgabedokument und --backups Optionen (scheint nicht zu funktionieren)

Einfacher Testfall:

wget http://google.com -O myfile --backups=7

hat mindestens zweimal zu testen Backup-Verhalten auszuführen. Erwartetes Verhalten: Nach zweimaliger Ausführung hätte ich sowohl myfile.1 als auch myfile im Ausgabeverzeichnis mit unterschiedlichen Zeitstempeln.

Tatsächliches Verhalten: Es überschreibt nur myfile, myfile.1 wird nicht erstellt.

Nach der Dokumentation der --backups Option: (https://www.gnu.org/software/wget/manual/wget.html),

'--backups = Sicherungen'

Vor (über) eine Datei zu schreiben, einen Backup vorhandene Datei durch Hinzufügen eines '.1' Suffix ('_1' auf VMS) zum Dateinamen. Solche Backup-Dateien werden auf '.2', '.3' usw. bis zu Backups rotiert (und darüber hinaus verloren).

sollte es nicht überschreiben, ohne zuerst die vorhandene Datei zu sichern. In dieser Option oder der Option -O/- Ausgabedokument wird nicht erwähnt, dass sie nicht zusammenarbeiten sollten.

Ist das korrekt? Fehle ich etwas? Ist das ein Fehler?

kann ich sehen, dass unter dem -O/--output-document Abschnitt heißt es:

Verwendung von ‚-O‘ soll nicht nur bedeuten, „verwenden, um die Dateinamen statt dem in der URL,“ sondern es ist analog zur Shell-Umleitung: 'wget -O Datei http://foo' soll wie 'wget -O - http://foo> Datei funktionieren; Die Datei wird sofort gekürzt und der gesamte heruntergeladene Inhalt wird dort gespeichert.

Trotzdem ich nehme das nicht bedeuten, dass --backups nicht funktionieren sollte, weil es immer noch eine nützliche Funktion sein würde, auch wenn die gesamte Ausgabe in einer einzigen Datei verkettet.

Gibt es eine andere Möglichkeit, dies zu tun? (Ich denke, ich könnte mein eigenes Backup-Rotationsskript schreiben, aber das ist ein Schmerz - auf der Suche nach etwas bereits vorgefertigt, wenn möglich.)

Vielen Dank.

Antwort

0

Die Problemumgehung, die ich verwendet habe, ist einfach nicht zu verwenden -O; stattdessen lasse ich es einfach die Ausgabe speichern, was immer der Standarddateiname ist (oft [email protected]=value usw.), und dann kopiere diese Datei an das gewünschte Ziel nach wget lädt es herunter (und macht seine Backup-Rotation).

Beispiel:

#!/bin/bash 

# The --restrict-file-names=windows parameter makes the file names wget saves to 
# more predictable and the same on both unix-like & windows hosts, so that our 
# scripts will work both places. In windows filename mode, '?' in filenames are 
# converted to '@'. 
wget --backups=7 http://example.com/?param=xyz123 --restrict-file-names=windows 

# Manually copy files to expected names after download so --backups option will work. 
# (--backups option doesn't work in combination with -O/--output-file as of wget 1.19.1) 
dest_filename="myfile.zip" 
cp -a "[email protected]=xyz123" ${dest_filename} 

Nach meiner Erfahrung, der Aufruf von wget wie oben in Dateinamen wie [email protected]=xxx am Ende ... die Leistung kann variieren; Es ist einfach zu überprüfen, wie der Zieldateiname lautet, indem Sie einfach wget ausführen und den Namen der generierten Ausgabedatei ansehen.

Züchterische Anwendungen, die zu Ausgabedateinamen führen, die weniger leicht vorherzusagen sind, könnten wahrscheinlich mit Dateinamen, Globs oder Suchbefehlen usw. behandelt werden.

Verwandte Themen