Safari-Verlauf verschwindet trotz Einstellungen

Ich möchte, dass mein Browserverlauf Jahre zurückreicht, damit ich mir Dinge ansehen kann, die mich vor langer Zeit interessiert haben. Um diesem Wunsch nachzugehen, habe ich Safari so eingestellt, dass Verlaufselemente „manuell“ unter der GeneralRegisterkarte in der Preferences. Ich habe dasselbe für Download-Listenelemente getan. Meine Absicht war (und ist), niemals Verlaufselemente zu entfernen und zu verhindern, dass Safari dies automatisch tut.

Dies schien eine Zeit lang gut zu funktionieren, und ich habe immer noch eine Geschichte, die mehr als ein Jahr zurückreicht. Ich habe jedoch kürzlich bemerkt, dass die ältesten Tage in meiner Geschichte verschwinden. Anfangs war ich mir nicht sicher, aber nach einigen Tests bin ich mir sicher. Es scheint zufällig und selten zu passieren. Ich denke, dass das Safari-Fenster auch den Fokus verliert, wenn es passiert.

Ich bin mir nicht sicher, wie oder warum dies geschieht. Das einzige, was mir einfällt, ist, dass es in Safari selbst möglicherweise ein fest codiertes Limit gibt. Oder vielleicht löscht es alte Verlaufselemente, wenn es eine Speichergrenze erreicht.

Ich sehe, dass meine History.dbDatei in der lsAusgabe 80 MB groß ist:

  -rw-r--r--    1 my_username staff  80M Dec 29 13:02 History.db

Sind 80 MiB eine Art implizites Limit für Safari?

Ein weiterer beunruhigender Aspekt dieses Problems ist, dass ich meinen Safari-Verlauf nicht in einen anderen Browser exportieren kann. Sowohl Chrome als auch Firefox weigern sich, außer Lesezeichen etwas aus Safari zu importieren. Außerdem habe ich nicht viele Backups meines Safari-Verlaufs. Backups würden jedoch sowieso nicht viel helfen, da einem Backup mein aktueller Verlauf fehlen würde.

Wie kann ich also Safari dazu bringen, dass meine ältesten Verlaufselemente nicht mehr verloren gehen?

Einige Umgebungsinfos:

Meine Safari-Version ist derzeit 11.0.2 auf macOS 10.13.2. Außerdem verwende ich keine iCloud-Integration mit Safari.

BEARBEITEN:

Zum Zeitpunkt der Prämie zu dieser Frage werde ich auch in Betracht ziehen, Antworten zu akzeptieren, die eine Möglichkeit bieten, meinen Verlauf in einen anderen Browser (vorzugsweise Firefox oder Chrome) zu exportieren.

Haben Sie hier nach ähnlichen Fragen gesucht? Wie zum Beispiel: apple.stackexchange.com/q/178969/237687
@SolarMike Ja, ich habe hier und anderswo nach ähnlichen Fragen gesucht. Lustigerweise bin ich über diese Frage gestolpert, auf die Sie verlinkt haben, nachdem ich meine Frage hier gepostet habe. Ich konnte es nicht finden, bevor ich meine Frage hier gepostet habe, und ich habe versucht, einige Ratschläge in den Kommentaren zu dieser Frage anzuwenden. Ich habe nämlich ausgeführt: defaults write ~/Library/Preferences/com.apple.Safari.plist HistoryAgeInDaysLimit 999999. Ich bin mir noch nicht sicher, ob das funktionieren wird, insb. da dieser Rat keine akzeptierte Antwort war.
Eine ähnliche Frage wurde mit dem Vorschlag eines Chron-Skripts beantwortet, um jeden Tag / jede Woche als Backup in eine separate Datei zu speichern ... kann es im Moment aber nicht finden.
@SolarMike Das ist eine interessante Idee. Ich würde auf jeden Fall gerne mehr darüber erfahren.
Nun, suchen Sie, vielleicht finden Sie es vor mir ...
@SolarMike Ich habe den Vorschlag zu Cron nicht gefunden, aber ich kann bestätigen, dass der Rat in der von Ihnen verlinkten Frage nicht funktioniert. Ich verliere immer noch den Verlauf, selbst nachdem ich HistoryAgeInDaysLimitauf eingestellt habe 999999.
Soweit ich das beurteilen kann, wenn Sie den Safari-Verlauf in iCloud synchronisieren, wird Ihr macOS-Verlauf abgeschnitten, um einer kleineren Größenbeschränkung zu entsprechen, die von anderen Geräten (z. B. iOS) auferlegt wird, mit denen neu synchronisiert wird. Das macht natürlich keinen Sinn, aber es scheint, was passiert.

Antworten (2)

Dies ist eine von Safari auferlegte Größenbeschränkung .

Eine SQLite-Datenbank kann offensichtlich größer als 80 MB sein; Es ist nur durch die Menge des verfügbaren Speicherplatzes begrenzt, hat aber technisch gesehen eine obere Dateigrößenbeschränkung von etwa 140 TB

Andere Entwickler haben festgestellt, dass in (älteren Versionen von) Safari das Limit auf 50 GB begrenzt ist . Es ist davon auszugehen, dass dieses Limit in späteren Versionen von macOS/iOS/Safari erhöht wurde.

Es liegt auch nahe, dass diese Größenbeschränkung von (Apple) Safari auferlegt wird, da es standardmäßig so konfiguriert ist, dass es mit iCloud mit anderen Apple-Geräten synchronisiert wird, von denen viele durch die Speicherverfügbarkeit eingeschränkt sind (z. B. iPhones und iPads).

Wir wissen auch, dass die grundlegende (kostenlose) Speicherzuteilung von iCloud 5 GB beträgt und dies viel mehr als den Browserverlauf berücksichtigen muss. Dinge wie Dateien, Einstellungen, Gerätesicherungen (falls zutreffend), Schlüsselbunde, Notizen usw. müssen Speicherplatz zugewiesen werden. Die Synchronisierung dieser Elemente wird standardmäßig von Apple eingestellt.

Es würde nicht viel Sinn machen, einen unbegrenzten Verlauf zuzulassen, History.dbder die Kapazität von iCloud/iPad/iPhone übersteigen könnte.

Auch wenn Sie keine iCloud-Integration verwenden , tut dies der durchschnittliche Benutzer, und Apple wird seine Produkte um diese Prämisse herum entwickeln und seine Produkte entsprechend gestalten.

Extrahieren Ihrer Historie

History.dbMit diesem (sehr) einfachen sqlite3-Skript können Sie Ihre Verlaufselemente aus der Datei ziehen

Erstellen Sie eine „commands.txt“-Datei und füllen Sie sie mit den folgenden Befehlen:

.mode csv
.once history.txt
select visit_time, title, url from history_visits inner join history_items on history_items.id = history_visits.history_item;

Geben Sie dann den Befehl aus

sqlite3 History.db < commands.txt

Dadurch wird eine CSV-Datei history.txtmit dem Namen erstellt, die Zeit, Titel und URL der Verlaufselemente enthält. Dies setzt voraus, dass Sie sich im ~/Library/SafariVerzeichnis befinden. Denken Sie daran, dass das Datum/die Uhrzeit Ihres Verlaufselements in Epochenzeit angegeben wird (obwohl die Epoche in diesem Fall anders ist ) und letztendlich konvertiert werden muss.

Dies sind nützliche Informationen und es ist gut zu wissen, dass Safari diese Grenze absichtlich auferlegt. Zumindest ist es kein verrückter Fehler. Dennoch würde ich es vorziehen, diese Einschränkung zu umgehen, damit ich Safari weiterhin verwenden kann. Aber wenn keine bessere Antwort erscheint, denke ich, dass dies die beste sein wird.
Nun, ich habe gerade Ihr Skript ausprobiert, da keine neuen Antworten erschienen sind. Seltsamerweise scheint es nicht zu funktionieren. Die resultierende history.txtDatei ist vollständig leer.
Wenn Sie den Auswahlbefehl manuell eingeben, sqlite3sehen Sie etwas?
Nein, es gibt auch keine Ausgabe, wenn ich das mache.
Nur damit wir auf der gleichen Seite sind.... sqlite3 History.db, dann select * from history_items;lassen Sie mich wissen, was Sie bekommen.
Das ergibt einen riesigen Dump meiner Verlaufselemente.
Ich muss es mir ansehen, wenn ich zurückkomme, da ich jetzt auf meinem iPhone bin und ich nicht testen kann
Allan, es tut mir leid, dass das Kopfgeld abgelaufen ist, bevor ich dir die volle Punktzahl geben konnte. Sie haben die Hälfte des Preises erhalten, aber ich wusste nicht, ob ich Ihnen den vollen Betrag geben soll, da Ihr Skript noch nicht funktioniert. Ich entschuldige mich, da ich mich auch um einen familiären Notfall kümmern musste und nicht aufmerksamer sein konnte, um Ihr Skript zum Laufen zu bringen. Ich werde Ihnen für all Ihre Bemühungen zustimmen und hoffe wirklich, dass wir Ihr Skript zum Laufen bringen können, damit ich zumindest ein praktikableres Format für meine Geschichte haben kann. Bitte geben Sie nach Möglichkeit weitere Ratschläge; Ich werde Ihre Antwort akzeptieren, sobald Ihr Skript funktioniert.
Ich glaube, ich habe eine Ahnung, was mit Ihrem SQL-Skript schief läuft. Es sieht so aus, als gäbe es kein urlElement in meiner history_visitsTabelle. Ich habe DB Browser for SQLite verwendet , um die Datenbank zu untersuchen und dies herauszufinden.
Allan, haben Sie vor, sich dieses Thema weiter anzusehen? Ich würde mich über weitere Hilfe freuen, da ich mir bisher nicht ganz sicher bin, was das Problem ist, und ich möchte wirklich, dass mein Safari-Verlauf so schnell wie möglich extrahiert wird.
Entschuldigung für die Verzögerung - ich hatte fast eine Woche lang eine Grippe, die mich eine Woche hinter all meinen anderen Projekten zurückließ. Ich habe gefühlt eine Ewigkeit gebraucht, um wieder alles auf den neuesten Stand zu bringen. Ich habe im selectBefehl den falschen Feldnamen eingegeben. Probieren Sie es jetzt. Ich habe es gerade getestet und es funktioniert gut.
Tut mir leid wegen deiner Grippe! Auch dort, wo ich wohne, geht es herum, und es ist sicherlich eine eklige Sache, damit umzugehen. Außerdem funktioniert Ihr neuer Befehlssatz hervorragend und ich habe history.txtjetzt eine funktionsfähige Datei! Ich danke dir sehr!

Einfache Antwort, nein kannst du nicht.

Ich schlage vor, Sie verwenden Chrome und importieren Ihre Daten mit diesen Schritten:

  1. Chrome installieren und starten (Safari schließen)
  2. Klicken Sie auf die 3 Punkte in der oberen rechten Ecke
  3. Ziehen Sie den Cursor auf „Lesezeichen“ und klicken Sie dann auf „Lesezeichen und Einstellungen importieren“.
  4. Sie werden 4 Optionen sehen, es ist Zu importierende Elemente auswählen: „Browserverlauf“ „Favoriten/Lesezeichen“ „Gespeicherte Passwörter“ „Suchmaschinen“
Das ist alles, was ich sehe, wenn ich versuche, Dinge von Safari in Chrome zu importieren.
Können Sie bitte erläutern, wie dies die Frage beantwortet?
1. Chrome kann den Safari-Verlauf derzeit nicht importieren. 2. Chrome löscht auch den Verlauf, der älter als 90 Tage ist. 3. Die beste Alternative ist FF, das dem Benutzer die Möglichkeit gibt, das Ablaufdatum/die Ablaufnummer einzustellen superuser.com/questions/1635171/… aber das ist für diese Frage nicht hilfreich
Danke Sherlock; Sie sind drei Jahre zu spät für die Diskussion.