Backup

Signal-Desktop:如何導出消息?

  • April 15, 2021

如何signal-desktop導出消息?

我想備份我的信件。

有可能嗎?

是的,有可能。

只需將其保存在文件中<yourFilename>

sigBase="${HOME}/.config/Signal/";
key=$( /usr/bin/jq -r '."key"' ${sigBase}config.json );
db="${HOME}/.config/Signal/sql/db.sqlite";
clearTextMsgs="${sigBase}clearTextMsgs.csv";

/usr/bin/sqlcipher -list -noheader "$db" "PRAGMA key = \"x'"$key"'\";select json from messages;" > "$clearTextMsgs";

並通過呼叫它bash <yourFilename>。或使其可執行chmod 700 <yourFilename>並直接呼叫它:./<yourFilename>

該腳本使用sqlcipherjqsignal-desktop 的數據庫密鑰來打開、解密和提取所有JSON格式的消息到clearTextMsgs.csv您的 signal-desktop 文件夾~/.config/Signal中。

除了通過使用jq(from ~/.config/Signal/config.json) 過濾 JSON 來提取密鑰之外,關鍵的一點發生在這裡:

sqlcipher -list -noheader <DB> <SQL>

其中<SQL>包含PRAGMA key定義和實際的 SQL 語句 ( SELECT json FROM messages;)。

然後可以使用jq從消息備份中訪問任何鍵/值。

您必須安裝sqlcipherjq為此:

sudo apt install sqlcipher jq

筆記:

雖然這確實提取了所有消息,但我們需要指定allsignal-desktop 中的 " " 具有 " " 的含義all messages actually loaded。因此,為了提取每條消息,活動聯繫人的滑塊必須向上滑動,然後 signal-desktop 將載入以前不可用的消息(泡沫沖洗重複直到滿意)。到目前為止,您希望載入您的消息。這很快就會變得乏味。請記住為所有聯繫人的歷史記錄這樣做。

話雖如此,備份您的消息歷史記錄在技術上是可行的,實際上這是一項手動工作。解決這個問題的一種方法可能是備份所有最近的消息,可能每天一次。那麼這很可能包含重複的資訊,並且在重新啟動信號桌面的情況下可能會失去消息。

在任何情況下,如果(不太遠 - 閱讀:可能幾個月)歷史將不時以程式方式搜尋一次,則此方法可以正常工作。

引用自:https://unix.stackexchange.com/questions/505008