<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://bisq.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SuddenWhipVapor</id>
	<title>Bisq Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://bisq.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SuddenWhipVapor"/>
	<link rel="alternate" type="text/html" href="https://bisq.wiki/Special:Contributions/SuddenWhipVapor"/>
	<updated>2026-04-18T14:28:24Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>https://bisq.wiki/index.php?title=Trading_rules&amp;diff=4121</id>
		<title>Trading rules</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Trading_rules&amp;diff=4121"/>
		<updated>2026-04-15T12:30:19Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* Do not confirm payments with mismatching details */ requirement to open mediation when payment details don't match&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Both Bisq traders must follow these '''trading rules''' to ensure smooth and successful trades.&lt;br /&gt;
&lt;br /&gt;
To trade on Bisq, you assume one of two roles, no matter what national currency or cryptocurrency you’re trading: you either ''buy bitcoin'' or ''sell bitcoin''.&lt;br /&gt;
&lt;br /&gt;
The rules below are '''default''' rules for every transaction. Offer makers sometimes specify their own additional terms for handling payments. For example, a seller using cash deposits might require a picture of a receipt torn in half with &amp;quot;NO REFUND&amp;quot; written on it. Face-to-face traders often specify terms about where and how to meet. &lt;br /&gt;
&lt;br /&gt;
Make sure you’re okay with an offer-maker’s terms '''before''' you accept an offer!&lt;br /&gt;
&lt;br /&gt;
Trade rules also help with the following:&lt;br /&gt;
&lt;br /&gt;
* Promoting good behavior from traders&lt;br /&gt;
* Penalizing bad behavior from traders&lt;br /&gt;
* Promoting good payment accounts of traders&lt;br /&gt;
* Penalizing bad payment accounts of traders&lt;br /&gt;
* Put the 'wrong doer' in a worse position and the person 'not at fault' in a better position&lt;br /&gt;
&lt;br /&gt;
= Common rules =&lt;br /&gt;
&lt;br /&gt;
=== Match Bisq account details with real data ===&lt;br /&gt;
&lt;br /&gt;
The data you enter during fiat account creation in Bisq must match with the real data associated to the fiat account (for example, but not limited to, filling in your full account holder name instead of placing just your initials).&lt;br /&gt;
&lt;br /&gt;
=== No requirement to reply in trader chat ===&lt;br /&gt;
&lt;br /&gt;
While using the available trade chat can be helpful to resolve issues directly among traders without the overhead of mediation, and being communicative is a good way to ease the process for new traders, there is no obligation to reply to a peer's messages.&lt;br /&gt;
&lt;br /&gt;
=== Do not communicate with your peer away from Bisq ===&lt;br /&gt;
&lt;br /&gt;
Using email addresses, phone numbers, and other means to contact traders is strongly discouraged. The trader chat feature built into Bisq should be used instead: not only is it more private, but the chat record can more easily be made available to mediators and arbitrators (useful in case a trader’s chat messages indicate they broke a rule). This includes advertising offers to sell BTC with a way to contact you, for example a website, Telegram user name, or email.&lt;br /&gt;
&lt;br /&gt;
In any case, it is forbidden to contact the peer using contacts obtained from their payment details, without their prior consent, or missing a compelling reason to do so.&lt;br /&gt;
&lt;br /&gt;
=== Be responsive during a dispute ===&lt;br /&gt;
&lt;br /&gt;
Traders are expected to reply within 48hrs to either mediators or arbitrators, and could lose the dispute based on unresponsiveness.&lt;br /&gt;
&lt;br /&gt;
Mediators may take up to 48 hours to respond to messages, and arbitrators may take up to 5 days to respond to messages.&lt;br /&gt;
&lt;br /&gt;
=== Do not change payment details once trade is in progress ===&lt;br /&gt;
&lt;br /&gt;
Once the deposit transaction is published, the trade is in progress, and its terms cannot be changed. Traders agreed to use the payment details specified in the trade contract.&lt;br /&gt;
&lt;br /&gt;
In the event of an unexpected circumstance (e.g. hitting a bank-imposed transfer limit, or a payment institution interfering with the transaction), traders can propose alternatives through trader chat or mediation, but the peer is not required to comply. It is each trader's responsibility to ensure that the payment account in their offer will work before an offer is taken.&lt;br /&gt;
&lt;br /&gt;
= Rules for bitcoin sellers =&lt;br /&gt;
&lt;br /&gt;
Whether making or taking an offer, bitcoin sellers put all the bitcoin they’re selling in the multisig escrow, so there’s less for them to do and fewer rules they need to follow.&lt;br /&gt;
&lt;br /&gt;
=== Click &amp;lt;code&amp;gt;Confirm payment&amp;lt;/code&amp;gt; after receiving payment ===&lt;br /&gt;
&lt;br /&gt;
Sellers have until the end of the maximum trade period to do so.&lt;br /&gt;
&lt;br /&gt;
[[Account_limits#Account_signing|Account signing]], introduced in Bisq v1.2, enables a seller with a signed payment account to sign a buyer’s payment account when they successfully receive a payment. For such trades, it is recommended that the seller take as long as possible (i.e., wait until close to the end of the trade period) to confirm receipt of payment to reduce the chance of a chargeback.&lt;br /&gt;
&lt;br /&gt;
=== Do not confirm payments with mismatching details ===&lt;br /&gt;
&lt;br /&gt;
Payer name, account numbers, payment method, institution, and other details of a payment should match the details in the trade contract. If there are any concerns that buyer's payment details do not match (e.g. wrong name, account number etc) mediation should be opened immediately, using the key combination &amp;lt;code&amp;gt;Ctrl-O&amp;lt;/code&amp;gt; while on the trade panel.'''&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Warn|This is especially relevant for trades in which a signed seller trades with an unsigned buyer, because confirmation of payment receipt signs the buyer’s payment account. In case of such an issue, a dispute should be opened.}}&lt;br /&gt;
&lt;br /&gt;
= Rules for bitcoin buyers =&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Warn|To avoid unexpected issues, make sure you can actually carry out a payment with the payment method you’ve set up in Bisq. Examples: Wells Fargo doesn’t allow cash deposits into bank accounts not owned by the depositor, and Zelle has weekly and monthly transfer maximums that are easy to overlook. The software will warn you about known issues, but cannot possibly keep up with all the newest banking and money transfer rules.}}&lt;br /&gt;
&lt;br /&gt;
=== Make payment reasonably early within trade period ===&lt;br /&gt;
&lt;br /&gt;
Buyer should complete at a time such that the seller has enough time to acknowledge receipt of the payment before the trade period is over. Waiting until the very end of the trade period to make a payment is not advised, as then the seller cannot reasonably act in time to acknowledge receipt (also, it’s annoying). The lengths of trade periods vary based on [[Payment methods|payment method]].&lt;br /&gt;
&lt;br /&gt;
This is especially important for buyers with unsigned payment accounts trading with sellers with signed payment accounts. A seller will not want to confirm receipt of a payment made at the last minute from an untrusted account, so if you’re a buyer looking to get your payment account signed, you should make the payment ''as soon as possible''.&lt;br /&gt;
&lt;br /&gt;
Some payment methods include an option to cancel a payment after you have sent it eg Revolut and Interac e-Transfer. If you cancel payment without agreement with the seller or mediator you might end up being penalized for cancelling the trade.&lt;br /&gt;
&lt;br /&gt;
=== Click Payment started after sending payment ===&lt;br /&gt;
&lt;br /&gt;
Seller cannot mark payment as received until buyer confirms that they have sent it. &lt;br /&gt;
&lt;br /&gt;
Don’t forget to do this!&lt;br /&gt;
&lt;br /&gt;
=== Leave the &amp;quot;reason for payment&amp;quot; field empty ===&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Warn|Before 1.5.5, it was required to put the trade ID in the 'reason for payment' field of a payment. As of 1.5.5, reason for payment should be left BLANK.}}&lt;br /&gt;
&lt;br /&gt;
Some payments offer a way to specify a reason for payment (some payment methods call it &amp;quot;Message&amp;quot; or &amp;quot;Information for recipient&amp;quot; or similar). '''Leave this field BLANK.''' Do not put the trade ID, any mentions of &amp;quot;Bisq&amp;quot; or &amp;quot;Bitcoin&amp;quot; or &amp;quot;crypto&amp;quot;, or any other text whatsoever.&lt;br /&gt;
&lt;br /&gt;
If you are required to fill in a reason, use your account name eg &amp;quot;Joe Bloggs&amp;quot; alternatively enter something non-descriptive like a dash &amp;quot;-&amp;quot;. If you would prefer to use other text please agree this with your peer in trader chat. Please remember your peer is not obligated to agree anything and may not want to agree to anything other than leaving the description blank, your name or a dash. &lt;br /&gt;
&lt;br /&gt;
Violating this rule will likely result in a [[Table of penalties|trade penalty]]. &lt;br /&gt;
&lt;br /&gt;
Many banks don’t like anything related to Bitcoin, and may take draconian measures if they sense such a transaction.&lt;br /&gt;
&lt;br /&gt;
Many users trade from personal accounts and may object to using anything that looks like it could be a commercial transaction.&lt;br /&gt;
&lt;br /&gt;
=== Pay any transaction fees ===&lt;br /&gt;
&lt;br /&gt;
Any fees incurred to make the payment via the agreed payment method (e.g., bank fees for bank transfer, money-order fees for money orders, etc) are the buyer’s responsibility to pay.&lt;br /&gt;
&lt;br /&gt;
The seller should receive the exact amount of the trade. The only exception to this rule is if the receiving institution imposes a fee on incoming payments—these fees are borne by the seller.&lt;br /&gt;
&lt;br /&gt;
= What happens when things go wrong? =&lt;br /&gt;
&lt;br /&gt;
Sometimes trades do not go to plan for whatever reason. &lt;br /&gt;
&lt;br /&gt;
It is prudent for all traders to know when entering into the trade what will happen when things go wrong. Traders would be wise to make themselves aware of the [[dispute resolution]] process to ensure there are no surprises.&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Bisq_2_mobile_applications&amp;diff=4117</id>
		<title>Bisq 2 mobile applications</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Bisq_2_mobile_applications&amp;diff=4117"/>
		<updated>2026-04-11T16:53:26Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: SuddenWhipVapor moved page Bisq 2 mobile to Bisq 2 mobile applications: more appropriate and descriptive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The mobile ecosystem of Bisq 2 allows access to the [[Bisq Easy]] protocol from a smartphone, via two applications:&lt;br /&gt;
&lt;br /&gt;
* Bisq Easy Mobile (Android only)&lt;br /&gt;
* Bisq Connect (Android and iOS)&lt;br /&gt;
&lt;br /&gt;
== Bisq Easy Mobile ==&lt;br /&gt;
&lt;br /&gt;
Bisq Easy Mobile is a full Bisq Easy node running on your Android device. It features the complete p2p network stack and connects with its own onion address.&lt;br /&gt;
&lt;br /&gt;
It provides the same privacy and security as the Bisq 2 desktop application.&lt;br /&gt;
&lt;br /&gt;
It is primarily suited for buyers who:&lt;br /&gt;
* want to buy their first sats&lt;br /&gt;
* prefer not to use a desktop computer&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Runs a full Bisq Easy node&lt;br /&gt;
* Does not require a separate device&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* Available for Android only&lt;br /&gt;
* Higher battery, bandwidth, and resource usage&lt;br /&gt;
* App may lose connectivity when moved to background, and reconnection can take time&lt;br /&gt;
* No synchronization or interoperability with a desktop instance&lt;br /&gt;
* Users must manually manage backups&lt;br /&gt;
&lt;br /&gt;
== Bisq Connect ==&lt;br /&gt;
&lt;br /&gt;
Bisq Connect is a lightweight companion app that allows you to remotely access and control a Bisq 2 node running elsewhere.&lt;br /&gt;
&lt;br /&gt;
It is available for both Android and iOS (via TestFlight).&lt;br /&gt;
&lt;br /&gt;
Instead of running a node locally, the app connects to a backend node, which can be:&lt;br /&gt;
&lt;br /&gt;
* your own Bisq 2 desktop application&lt;br /&gt;
* a Bisq 2 node running on a headless machine or VPS&lt;br /&gt;
* a node operated by a trusted third party&lt;br /&gt;
&lt;br /&gt;
The mobile app acts as a remote interface, allowing you to monitor and manage your node from your phone.&lt;br /&gt;
&lt;br /&gt;
Features:&lt;br /&gt;
* Pairing via QR code&lt;br /&gt;
* Real-time market data&lt;br /&gt;
* Push notifications&lt;br /&gt;
* Private P2P messaging&lt;br /&gt;
* Built-in Tor support&lt;br /&gt;
* Open-source and auditable&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Available on both Android and iOS&lt;br /&gt;
* Low resource and battery usage&lt;br /&gt;
* Seamless access to the same data across devices when self-hosted&lt;br /&gt;
* No need for mobile backups (data is stored on the backend node)&lt;br /&gt;
* Mobile app can be closed without affecting node operation&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* Requires a running backend node&lt;br /&gt;
* Using a third-party node requires trust in the operator, as all data is hosted on that node&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
On iOS, Bisq Connect is currently distributed via Apple TestFlight and requires iOS 16.0 or higher.&lt;br /&gt;
&lt;br /&gt;
TestFlight builds expire after 90 days, but updates are released regularly.&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
Bisq Easy Mobile will not support the upcoming MuSig protocol.&lt;br /&gt;
&lt;br /&gt;
Bisq Connect is the likely platform for supporting new protocols, depending on development priorities and user demand.&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Bisq_2_mobile&amp;diff=4118</id>
		<title>Bisq 2 mobile</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Bisq_2_mobile&amp;diff=4118"/>
		<updated>2026-04-11T16:53:26Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: SuddenWhipVapor moved page Bisq 2 mobile to Bisq 2 mobile applications: more appropriate and descriptive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Bisq 2 mobile applications]]&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Bisq_2_mobile_applications&amp;diff=4116</id>
		<title>Bisq 2 mobile applications</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Bisq_2_mobile_applications&amp;diff=4116"/>
		<updated>2026-04-11T16:52:04Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: Rework&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The mobile ecosystem of Bisq 2 allows access to the [[Bisq Easy]] protocol from a smartphone, via two applications:&lt;br /&gt;
&lt;br /&gt;
* Bisq Easy Mobile (Android only)&lt;br /&gt;
* Bisq Connect (Android and iOS)&lt;br /&gt;
&lt;br /&gt;
== Bisq Easy Mobile ==&lt;br /&gt;
&lt;br /&gt;
Bisq Easy Mobile is a full Bisq Easy node running on your Android device. It features the complete p2p network stack and connects with its own onion address.&lt;br /&gt;
&lt;br /&gt;
It provides the same privacy and security as the Bisq 2 desktop application.&lt;br /&gt;
&lt;br /&gt;
It is primarily suited for buyers who:&lt;br /&gt;
* want to buy their first sats&lt;br /&gt;
* prefer not to use a desktop computer&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Runs a full Bisq Easy node&lt;br /&gt;
* Does not require a separate device&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* Available for Android only&lt;br /&gt;
* Higher battery, bandwidth, and resource usage&lt;br /&gt;
* App may lose connectivity when moved to background, and reconnection can take time&lt;br /&gt;
* No synchronization or interoperability with a desktop instance&lt;br /&gt;
* Users must manually manage backups&lt;br /&gt;
&lt;br /&gt;
== Bisq Connect ==&lt;br /&gt;
&lt;br /&gt;
Bisq Connect is a lightweight companion app that allows you to remotely access and control a Bisq 2 node running elsewhere.&lt;br /&gt;
&lt;br /&gt;
It is available for both Android and iOS (via TestFlight).&lt;br /&gt;
&lt;br /&gt;
Instead of running a node locally, the app connects to a backend node, which can be:&lt;br /&gt;
&lt;br /&gt;
* your own Bisq 2 desktop application&lt;br /&gt;
* a Bisq 2 node running on a headless machine or VPS&lt;br /&gt;
* a node operated by a trusted third party&lt;br /&gt;
&lt;br /&gt;
The mobile app acts as a remote interface, allowing you to monitor and manage your node from your phone.&lt;br /&gt;
&lt;br /&gt;
Features:&lt;br /&gt;
* Pairing via QR code&lt;br /&gt;
* Real-time market data&lt;br /&gt;
* Push notifications&lt;br /&gt;
* Private P2P messaging&lt;br /&gt;
* Built-in Tor support&lt;br /&gt;
* Open-source and auditable&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Available on both Android and iOS&lt;br /&gt;
* Low resource and battery usage&lt;br /&gt;
* Seamless access to the same data across devices when self-hosted&lt;br /&gt;
* No need for mobile backups (data is stored on the backend node)&lt;br /&gt;
* Mobile app can be closed without affecting node operation&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* Requires a running backend node&lt;br /&gt;
* Using a third-party node requires trust in the operator, as all data is hosted on that node&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
On iOS, Bisq Connect is currently distributed via Apple TestFlight and requires iOS 16.0 or higher.&lt;br /&gt;
&lt;br /&gt;
TestFlight builds expire after 90 days, but updates are released regularly.&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
Bisq Easy Mobile will not support the upcoming MuSig protocol.&lt;br /&gt;
&lt;br /&gt;
Bisq Connect is the likely platform for supporting new protocols, depending on development priorities and user demand.&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=MuSig-tradelimits&amp;diff=4115</id>
		<title>MuSig-tradelimits</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=MuSig-tradelimits&amp;diff=4115"/>
		<updated>2026-04-09T07:58:00Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: Include limit simulator reference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Why are trade limits necessary? ==&lt;br /&gt;
&lt;br /&gt;
Most fiat payment methods carry a risk of bank chargebacks.&lt;br /&gt;
To reduce this risk, Bisq applies both trade amount limits and trade rate limits to Bitcoin buyers, since buyers are the ones who could initiate a chargeback.&lt;br /&gt;
&lt;br /&gt;
=== Fiat trades – Bitcoin buyers ===&lt;br /&gt;
&lt;br /&gt;
Trade limits depend on:&lt;br /&gt;
&lt;br /&gt;
* The chargeback risk of the selected payment method&lt;br /&gt;
* Whether the buyer has imported a signed account age witness from Bisq 1&lt;br /&gt;
* The age of the payment account&lt;br /&gt;
&lt;br /&gt;
=== Fiat trades – Bitcoin sellers ===&lt;br /&gt;
&lt;br /&gt;
For sellers, trade limits depend only on the selected payment method.&lt;br /&gt;
&lt;br /&gt;
=== Cryptocurrency trades ===&lt;br /&gt;
&lt;br /&gt;
A maximum trade amount limit equivalent to 10,000 USD applies.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How are trade limits applied? ==&lt;br /&gt;
&lt;br /&gt;
Trade limits are calculated based on these rules:&lt;br /&gt;
&lt;br /&gt;
* Each fiat payment method has a chargeback risk level. Depending on that level, the maximum trade amount of 10,000 USD can be reduced by up to 50%.&lt;br /&gt;
* If a user imports a previously signed Bisq 1 account, all limits are removed.&lt;br /&gt;
* If a payment account is older than 90 days, limits are removed. For newer accounts, limits increase gradually until reaching that age.&lt;br /&gt;
&lt;br /&gt;
=== Trade rate limit ===&lt;br /&gt;
&lt;br /&gt;
The trade rate limit (number of trades allowed per day) is based on the trade amount limit:&lt;br /&gt;
&lt;br /&gt;
* It is calculated as: trade amount limit ÷ 1,000&lt;br /&gt;
* The minimum value is 1 trade per day&lt;br /&gt;
* Once the maximum trade amount limit is reached, the trade rate limit no longer applies&lt;br /&gt;
&lt;br /&gt;
You can import accounts from Bisq 1 and keep their account age.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trade limit calculator ==&lt;br /&gt;
&lt;br /&gt;
Use the simulator to see which limits apply to you based on:&lt;br /&gt;
&lt;br /&gt;
* Your selected payment method&lt;br /&gt;
* The age of your payment account&lt;br /&gt;
* Whether you have imported a signed Bisq 1 account&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=MuSig-tradelimits&amp;diff=4114</id>
		<title>MuSig-tradelimits</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=MuSig-tradelimits&amp;diff=4114"/>
		<updated>2026-04-09T07:52:31Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: Substasntial stub&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Why are trade limits necessary? ==&lt;br /&gt;
&lt;br /&gt;
Most fiat payment methods carry a risk of bank chargebacks.&lt;br /&gt;
To reduce this risk, Bisq applies both trade amount limits and trade rate limits to Bitcoin buyers, since buyers are the ones who could initiate a chargeback.&lt;br /&gt;
&lt;br /&gt;
=== Fiat trades – Bitcoin buyers ===&lt;br /&gt;
&lt;br /&gt;
Trade limits depend on:&lt;br /&gt;
&lt;br /&gt;
* The chargeback risk of the selected payment method&lt;br /&gt;
* Whether the buyer has imported a signed account age witness from Bisq 1&lt;br /&gt;
* The age of the payment account&lt;br /&gt;
&lt;br /&gt;
=== Fiat trades – Bitcoin sellers ===&lt;br /&gt;
&lt;br /&gt;
For sellers, trade limits depend only on the selected payment method.&lt;br /&gt;
&lt;br /&gt;
=== Cryptocurrency trades ===&lt;br /&gt;
&lt;br /&gt;
A maximum trade amount limit equivalent to 10,000 USD applies.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How are trade limits applied? ==&lt;br /&gt;
&lt;br /&gt;
Trade limits are calculated based on these rules:&lt;br /&gt;
&lt;br /&gt;
* Each fiat payment method has a chargeback risk level. Depending on that level, the maximum trade amount of 10,000 USD can be reduced by up to 50%.&lt;br /&gt;
* If a user imports a previously signed Bisq 1 account, all limits are removed.&lt;br /&gt;
* If a payment account is older than 90 days, limits are removed. For newer accounts, limits increase gradually until reaching that age.&lt;br /&gt;
&lt;br /&gt;
=== Trade rate limit ===&lt;br /&gt;
&lt;br /&gt;
The trade rate limit (number of trades allowed per day) is based on the trade amount limit:&lt;br /&gt;
&lt;br /&gt;
* It is calculated as: trade amount limit ÷ 1,000&lt;br /&gt;
* The minimum value is 1 trade per day&lt;br /&gt;
* Once the maximum trade amount limit is reached, the trade rate limit no longer applies&lt;br /&gt;
&lt;br /&gt;
You can import accounts from Bisq 1 and keep their account age.&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=MuSig-tradelimits&amp;diff=4113</id>
		<title>MuSig-tradelimits</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=MuSig-tradelimits&amp;diff=4113"/>
		<updated>2026-04-08T08:17:09Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: First stub&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== WIP ==&lt;br /&gt;
&lt;br /&gt;
Setting a higher limit for trade amounts is an effective way to reduce security risk when dealing with new users.&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Bisq_Easy&amp;diff=4112</id>
		<title>Bisq Easy</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Bisq_Easy&amp;diff=4112"/>
		<updated>2026-03-19T20:38:36Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* Trade Rules */ updated payment reason rule&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bisq Easy is a trade protocol for Bisq 2, designed to facilitate the acquisition of bitcoin with zero trade fees and without the requirement of a security deposit. Bisq Easy is a social trade protocol intended for novice bitcoin buyers seeking a non-KYC option and aiming to be efficiently onboarded by experienced and knowledgeable sellers that are familiar with the Bisq platform.&lt;br /&gt;
&lt;br /&gt;
Bisq Easy is currently the only trade protocol for [[Bisq 2]]. More [[Trade_Protocols|trade protocols]] are planned for the future.&lt;br /&gt;
&lt;br /&gt;
== Bisq Easy Trade Protocol Specifics ==&lt;br /&gt;
&lt;br /&gt;
=== Trade fees ===&lt;br /&gt;
&lt;br /&gt;
There are no trade fees for buyers or sellers for trading on Bisq Easy.&lt;br /&gt;
&lt;br /&gt;
=== Mining fees ===&lt;br /&gt;
&lt;br /&gt;
Buyers will not have to pay any mining fees when they trade on Bisq Easy.&lt;br /&gt;
&lt;br /&gt;
Sellers will need to pay any fees required to send the bitcoin to the buyer after receiving their payment.  For on chain transactions the seller is responsible for paying mining fees needed to send the bitcoin to the buyer's waller.  For lighting transactions the seller is responsible for paying any routing fees needed to pay the buyer's ln invoice.  &lt;br /&gt;
&lt;br /&gt;
=== Security mechanisms ===&lt;br /&gt;
&lt;br /&gt;
The security of the trade is proportional to the reputation of the seller.&lt;br /&gt;
&lt;br /&gt;
As Bisq Easy is [[reputation based]], and reputation provides a fairly low security model, it means traders on Bisq Easy are suited only to rather small amounts of bitcoin.&lt;br /&gt;
&lt;br /&gt;
By default buyers can only exchange messages with sellers that have a certain level of reputation, however, buyers can opt-out from that protection.&lt;br /&gt;
&lt;br /&gt;
Trading with sellers without reputation, or very low reputation, carries significant risks and should be only done if the risks are well understood and managed.&lt;br /&gt;
&lt;br /&gt;
=== Currencies / Payment Methods ===&lt;br /&gt;
&lt;br /&gt;
Bisq Easy buyers and sellers can trade bitcoin for any type of fiat.&lt;br /&gt;
&lt;br /&gt;
Fiat buyers and sellers can choose whatever type of payment method they agree upon for fiat transfer.&lt;br /&gt;
&lt;br /&gt;
=== Dispute mechanisms ===&lt;br /&gt;
&lt;br /&gt;
Buyers and sellers trading on Bisq Easy can access mediation support should anything go wrong with their trade.&lt;br /&gt;
&lt;br /&gt;
Mediators will be able to:&lt;br /&gt;
&lt;br /&gt;
* Help facilitate the successful completion of the trade &lt;br /&gt;
* Confirm fiat / altcoin and bitcoin payments&lt;br /&gt;
* Help cancel trade if needed&lt;br /&gt;
* Report a trader who severely violated the trade rules to the moderator who can ban the user.&lt;br /&gt;
&lt;br /&gt;
Depending on the form of reputation used, a fraudulent seller can get their bonded BSQ confiscated by the DAO or their Bisq 1 onion address banned. As all reputation is linked to the user profile, a banned user profile disables their reputation.&lt;br /&gt;
&lt;br /&gt;
=== Security deposit requirements ===&lt;br /&gt;
&lt;br /&gt;
Bisq Easy trades do not require any security deposits from either the buyer or seller.&lt;br /&gt;
&lt;br /&gt;
=== Privacy benefits / trade-offs ===&lt;br /&gt;
&lt;br /&gt;
As no security deposits are required buyers and sellers using fiat will be revealing their bank account details to users that might end up backing out of the trade. If a user backs out of a trade there is less possibility to penalize them than if they had to trade using a security deposit. The seller can report a buyer who cancelled the trade after the payment account data has been transmitted to the moderator, who can ban the buyer.&lt;br /&gt;
&lt;br /&gt;
== Identity ==&lt;br /&gt;
&lt;br /&gt;
Buyers and sellers on Bisq Easy can create multiple identities.&lt;br /&gt;
&lt;br /&gt;
Find out more about managing your [[Identity]] on Bisq 2.&lt;br /&gt;
&lt;br /&gt;
== Reputation ==&lt;br /&gt;
&lt;br /&gt;
The security mechanism of Bisq Easy is based on the reputation of the seller. Buyers on Bisq Easy do not need to have a reputation as they will always send the payment first.&lt;br /&gt;
&lt;br /&gt;
Find out more about [[Reputation]] for Bisq Easy.&lt;br /&gt;
&lt;br /&gt;
== Using Bisq Easy to buy bitcoin ==&lt;br /&gt;
&lt;br /&gt;
Users of Bisq Easy can buy bitcoin using fiat or altcoins with no fees and no security deposits.&lt;br /&gt;
&lt;br /&gt;
== Using Bisq Easy to sell bitcoin ==&lt;br /&gt;
&lt;br /&gt;
Users of Bisq Easy can sell bitcoin for fiat or altcoins with no fees and no security deposits.&lt;br /&gt;
&lt;br /&gt;
Sellers of Bisq Easy will however have to build up their [[reputation]] in order to get buyers.&lt;br /&gt;
&lt;br /&gt;
== How to buy bitcoin on Bisq Easy ==&lt;br /&gt;
&lt;br /&gt;
Buying Bitcoin with Bisq Easy is recommended for small fiat amounts, or as a starting point if you still have no Bitcoin that you can use for the security deposits of other trade protocols.&lt;br /&gt;
&lt;br /&gt;
You can opt for two ways to find a trading partner to get some Bitcoin: taking an existing offer or creating one.&lt;br /&gt;
&lt;br /&gt;
=== Creating an offer ===&lt;br /&gt;
Creating an offer is a great way to establish your own terms and simply wait for someone to match what you are after. It is also the right option if you don't find any offers with the right premium or payment methods in the market you want to trade in. Follow along to learn how to navigate to your preferred market and create a new offer in it:&lt;br /&gt;
&lt;br /&gt;
Begin by opening up Bisq 2. Once the application has started, you should select ''Bisq Easy'' on the left panel, and ''Offerbook'' on the top tab. &lt;br /&gt;
&lt;br /&gt;
[[File:Create buy offers screenshot 1.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Each different national currency has its own market. You can click on the displayed pair to open a selector where you can choose the currency you would like to trade in. In this example, we are interested in buying some Bitcoin by paying with Euros, so we will select the ''BTC/EUR'' pair, but you should select whatever currency you are using. Afterward, click on the ''Create offer'' button on the right-hand side.&lt;br /&gt;
&lt;br /&gt;
[[File:Create buy offers screenshot 2.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
You will now enter the offer creation wizard. The first step will be to choose between buying or selling Bitcoin. Select ''Buy Bitcoin'' and click on ''Next''.&lt;br /&gt;
&lt;br /&gt;
[[File:Create buy offers screenshot 3.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
On the following screen, you will be asked for confirmation on which currency you want to pay your Bitcoin with. The selected currency will be the one you selected in the previous ''Offerbook'' screen. You can change your mind here if needed. Since for this example we want to move forward with Euros, we don't need to change anything on this screen, and we can simply click ''Next''.&lt;br /&gt;
&lt;br /&gt;
[[File:Create buy offers screenshot 4.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
On the next screen, you will have to select which Payment Methods are you willing to use. You should select at least one, but you can also select multiple of them. The more Payment Methods you add, the more chances you will have of finding a willing trade peer. In this example, we initially select ''SEPA'' and ''Revolut''.&lt;br /&gt;
&lt;br /&gt;
[[File:Create buy offers screenshot 5.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Besides the presented Payment Methods, you can also add customized Payment Methods to your offer. For instance, for this offer, I would be happy to make a cash deposit at a Rabobank physical branch. I can use the bottom input to add this method to my offer.&lt;br /&gt;
&lt;br /&gt;
[[File:Create buy offers screenshot 6.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Once you are done selecting Payment Methods, you can move on by clicking ''Next''.&lt;br /&gt;
&lt;br /&gt;
On the next screen, you will have to set how much Bitcoin you want to buy or, putting it the other way around, how much fiat currency you want to sell. The minimum trade amount on Bisq easy is the equivalent of 6 USD and the maximum amount is {{MaxBisqEasyTrade}}.  You can write the fiat amount, the BTC amount, or simply move the slider around. &lt;br /&gt;
&lt;br /&gt;
[[File:Create buy offers screenshot 9.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
You also have the option of defining a range instead of a fixed value for the trade amount. By doing that, you set a minimum and maximum amount, and you signal to the market that you are willing to trade any amount between those two numbers. For this example, we will create an offer with a range between 100€ and 200€. Once you have set your fixed value or a range, click ''Next'' to move on.&lt;br /&gt;
&lt;br /&gt;
[[File:Create buy offers screenshot 10.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
With this, you will reach the final step of the offer creation wizard. The final screen shows a summary of all the details you have defined. Now is the time for you to review whether everything is fine. This is important because, once you click on ''Create offer'', the offer will be available for anyone to take and, once that happens, it will be binding. So, make sure you are happy with the details you see. Once you are sure, click on ''Create offer'' and your offer will be added to the market.&lt;br /&gt;
&lt;br /&gt;
[[File:Create buy offers screenshot 11.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Your order is finally ready. Now, you will have to wait until another peer takes it. If your offer remains unpicked for longer than you would like to, consider modifying it to add additional payment methods or adding a more flexible range of values that could attract different users.&lt;br /&gt;
&lt;br /&gt;
[[File:Create buy offers screenshot 12.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Once a peer takes your offer, you will receive a notification and be able to see the started trade in the ''Open Trades'' panel of Bisq Easy. Also, keep in mind that offers remain open until you close them. If you only want to transact once, you should close it after it gets taken, or more peers could keep taking it!&lt;br /&gt;
&lt;br /&gt;
=== Taking an offer ===&lt;br /&gt;
&lt;br /&gt;
Taking an existing offer is the fastest and simplest way to find a partner and start trading. Follow along to learn how to navigate to your preferred market and pick an existing offer in it.&lt;br /&gt;
&lt;br /&gt;
Begin by opening up Bisq 2. Once the application has started, you should select ''Bisq Easy'' on the left panel, and ''Getting started'' on the top tab. &lt;br /&gt;
&lt;br /&gt;
[[File:Taking offer to buy 1.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
On this page, click on the ''Start trade wizard''. This is the easiest way to get started. A small note: once you become more experienced, you might prefer to use the ''Offerbook'' page to do your trades. But for the first trades, we advise using the trade wizard.&lt;br /&gt;
&lt;br /&gt;
[[File:Taking offer to buy 2.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
With this, you will enter the trade wizard, which will guide you step by step through the process of taking an existing offer to buy some Bitcoin. In the first screen, select ''Buy Bitcoin'' and click on ''Next''.&lt;br /&gt;
&lt;br /&gt;
[[File:Taking offer to buy 3.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
In the following screen, you need to indicate which national currency you want to use to pay your trading partner. Since we want to use Euros for this trade, we select that currency in the list. Once you have selected your currency, click on ''Next'' to move on.&lt;br /&gt;
&lt;br /&gt;
[[File:Taking offer to buy 4.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
On the next screen, you will have to select which Payment Methods you are willing to use. You should select at least one, but you can also select multiple of them. The more Payment Methods you add, the more chances you will have of finding a willing trade peer. In this example, we initially select ''SEPA'' and ''Revolut''.&lt;br /&gt;
&lt;br /&gt;
[[File:Create buy offers screenshot 5.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Once you are done selecting Payment Methods, you can move on by clicking ''Next''.&lt;br /&gt;
&lt;br /&gt;
On the next screen, you will have to set how much Bitcoin you want to buy or, putting it the other way around, how much fiat currency you want to sell. The minimum trade amount on Bisq Easy is the equivalent of 6 USD and the maximum amount is {{MaxBisqEasyTrade}}.  You can write the fiat amount, the BTC amount, or simply move the slider around.&lt;br /&gt;
&lt;br /&gt;
[[File:Taking offer to buy 5.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
For this example, let's imagine we would like to buy 150€ worth of Bitcoin. We set the value and click on ''Next'' to move on.&lt;br /&gt;
&lt;br /&gt;
In the following screen, you will be presented a list of offers that match your needs. You can select any of the offers presented, but we advise taking the first offer. By default, offers will be presented by decreasing reputation, so the most trusted trades will be on the top of the list. You can check other offers that might have more interesting prices, but be aware that the lower the reputation of the trader, the higher the risk you will face. If you want to keep things safe and simple, simply pick the first offer that you see. Once you have settled for an offer, click on ''Next'' to move on.&lt;br /&gt;
&lt;br /&gt;
[[File:Taking offer to buy 6.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
The final screen will allow you to review all the details. Make sure you are happy with all the details of the trade, since once you move on, you will effectively commit to doing the trade. If there's anything you want to change, you can always navigate back and modify any of the trade details. Once you are ready, click on ''Confirm trade''.&lt;br /&gt;
&lt;br /&gt;
[[File:Taking offer to buy 7.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
Once you have done this, the offer is taken and you can begin the trade process. You can read more about the trade process here: [[Bisq_Easy#Trade_Process|Trade Process]].&lt;br /&gt;
&lt;br /&gt;
Remember that when you take an offer, you commit to follow through. Be aware that, once you take it, you can't simply back down without consequences.&lt;br /&gt;
&lt;br /&gt;
Note that there is also a chance that no offers are found matching your needs. If this is the case, you will see a screen like the one below. You can wait some time and try again later, or you can instead create your own offer. You can read more about creating an offer here [[Bisq_Easy#Bisq_Easy#Creating_an_offer|Creating a buy offer]].&lt;br /&gt;
&lt;br /&gt;
[[File:Taking offer to buy 8.png|frameless]]&lt;br /&gt;
&lt;br /&gt;
== How to sell bitcoin on Bisq Easy ==&lt;br /&gt;
&lt;br /&gt;
Users of Bisq Easy can both make an offer to sell bitcoin, or take an offer from a user looking to buy bitcoin.&lt;br /&gt;
&lt;br /&gt;
Seller's on Bisq Easy will usually be experienced Bisq users. It is expected they will be helpful and supportive to buyers who are new to Bitcoin and/or Bisq. Bisq Easy seller's should be passionate about helping new Bisq users smoothly acquire no KYC bitcoin in a peer to peer manner. &lt;br /&gt;
&lt;br /&gt;
As building reputation incurs costs for the bitcoin sellers. It is expected that they will sell bitcoin at a premium of about 10-15%. The premium reflects the additional costs and compensates sellers for the on-boarding service they provide.&lt;br /&gt;
&lt;br /&gt;
== Trade Process ==&lt;br /&gt;
&lt;br /&gt;
Trade process for Bisq Easy is as follows:&lt;br /&gt;
&lt;br /&gt;
* The offer maker defines the trade terms, if this was not already defined in the maker's user profile.&lt;br /&gt;
* Once the traders have agreed on the trade terms (e.g. payment method and trade price) the trade starts.&lt;br /&gt;
* The seller transmits the payment account details to the buyer (e.g. bank account number). The buyer sends the BTC address to the seller.&lt;br /&gt;
* The buyer starts the Fiat payment to the seller's account and sends the seller a message that the payment is in transit.&lt;br /&gt;
* Once the seller has received the Fiat payment they send the Bitcoin to the buyer's address.&lt;br /&gt;
* After the buyer receives the Bitcoin the trade is completed.&lt;br /&gt;
&lt;br /&gt;
== Trade Rules ==&lt;br /&gt;
&lt;br /&gt;
Bisq Easy trading rules are as follows:&lt;br /&gt;
&lt;br /&gt;
* Before the payment details are exchanged the trade can be canceled by any party without justification.&lt;br /&gt;
* After the payment details are exchanged, not fulfilling the trade obligations is considered a breach of the trade contract and can lead to getting banned from the network.&lt;br /&gt;
* When sending the Fiat, the buyer MUST leave the payment reason field blank, or, if that is not possible, fill it with their own name, and MUST NOT use any term related to 'Bitcoin', 'Bisq' or 'Trade'.&lt;br /&gt;
* If the trade cannot be completed instantly because the Fiat transfer takes longer, both traders have to be online at least once a day to follow up the trade process.&lt;br /&gt;
* If there are any open questions or problems the traders can use the support chat, invite a mediator into their trade chat or get in touch with Bisq support team on the [[Matrix_bisq.chat|Matrix channel]].&lt;br /&gt;
&lt;br /&gt;
== Chat Rules ==&lt;br /&gt;
&lt;br /&gt;
Bisq Easy has the following chat rules it expects traders to follow:&lt;br /&gt;
&lt;br /&gt;
* Be respectful: Always treat others with kindness and respect. Avoid offensive language, personal attacks, and harassment. Remember that behind every screen is a real person with feelings.&lt;br /&gt;
* No spamming: Please refrain from flooding the chat with repetitive or irrelevant messages. Keeping the conversation meaningful and on-topic helps everyone engage in a more constructive manner.&lt;br /&gt;
* No advertising: We kindly ask you to avoid promoting products, services, or posting external links. This ensures that the focus remains on meaningful discussions rather than promotional content.&lt;br /&gt;
* No hate speech: We have zero tolerance for content that promotes discrimination, hate speech, or violence against any individual or group. Let's foster an inclusive and supportive community.&lt;br /&gt;
* No trolling: Disruptive behavior, trolling, or intentionally provoking others disrupts the positive atmosphere we aim to maintain. Let's all strive for respectful and constructive interactions.&lt;br /&gt;
* Keep it safe: Protect your privacy and that of others by not sharing personal information such as phone numbers, addresses or any other sensitive data in the chat. Safety first!&lt;br /&gt;
* Respect privacy: Do not share private conversations or screenshots without consent. Respecting each other's privacy is a cornerstone of trust.&lt;br /&gt;
* Report misconduct: If you witness any violations of these rules or encounter inappropriate behavior, please report it to the moderator. Your vigilance helps maintain a friendly and safe community.&lt;br /&gt;
* Follow moderator's Instructions: Our moderators are here to ensure a positive environment. Please comply with any instructions or guidelines they provide to maintain order and respect.&lt;br /&gt;
* Enjoy the chat: Above all, we encourage you to engage in meaningful discussions, make friends, and have fun in a positive and inclusive environment. Let's create a community we can all be proud to be a part of.&lt;br /&gt;
&lt;br /&gt;
Remember, by participating in the chat, you agree to abide by these rules. Failure to comply may result in warnings, temporary mute, or ban from the Bisq network.&lt;br /&gt;
&lt;br /&gt;
== How to stay safe on Bisq Easy ==&lt;br /&gt;
&lt;br /&gt;
Here are some tips for keeping safe when trading on Bisq Easy and avoiding any scams.&lt;br /&gt;
&lt;br /&gt;
=== Tips for bitcoin buyers ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin buyers send the fiat payment before sending any bitcoin. For this reason they should take steps to ensure their trades are successful.&lt;br /&gt;
&lt;br /&gt;
# Start with a small amount as a test trade&lt;br /&gt;
# Start chatting with the seller before sending the fiat payment to check that they are still active&lt;br /&gt;
# Choose a seller with a high reputation. The higher the reputation of the seller the better. Sellers need a minimum reputation score of 30,000, ideally you should be choosing to trade with someone higher than this. Look at the star system for guidance. It will be safer to trade with a 5 star rated seller than a 1 star rated seller.&lt;br /&gt;
# Send payment as soon as possible once you have the seller's account details.&lt;br /&gt;
# Only send payment to the account details provided by the Seller in the trade chat window. If the seller is trying to change the account they want you to send payment to, it would be better to cancel the trade and open a new trade with another seller. &lt;br /&gt;
# Place the trade ID from Bisq Easy in the payment reason.&lt;br /&gt;
# Send the payment from the same account you share the information with in trader chat. For example if you are having problems with the payment do not send payment from your partners, business, friends etc account. Instead try and resolve the issue so you can send payment from the correct account and failing that open mediation to get additional support.&lt;br /&gt;
# Keep the trade chat limited to using Bisq 2. Do not communicate with the seller via WhatsApp, Matrix etc as it will make mediation much harder if there is an issue.&lt;br /&gt;
# Avoid trading off platform with any Bisq sellers.&lt;br /&gt;
&lt;br /&gt;
=== Tips for bitcoin sellers ===&lt;br /&gt;
&lt;br /&gt;
Although bitcoin buyers send the fiat payment before bitcoin sellers send them any bitcoin, sellers should still be aware of buyers attempting any charge-back scams. There is almost no cost for a bitcoin buyer to create an account and start making trades, therefore, there is little for a buyer to lose by attempting a scam. Almost all buyers on Bisq Easy will be honest but it is still good to be cautious. &lt;br /&gt;
&lt;br /&gt;
For this reason they should take steps to ensure their trades are successful.&lt;br /&gt;
&lt;br /&gt;
# Be careful when dealing with buyers with brand new accounts (the buyer's account age is shown in their profile).&lt;br /&gt;
# Avoid payment methods that have a high possibility of charge-backs eg; PayPal, Venmo&lt;br /&gt;
# Make sure the payment you receive matches the buyers account details. Avoid sending bitcoin to buyer's with mis-matching account details. It would be better to refund the payment to the account you received the payment from and cancel the trade.&lt;br /&gt;
# Keep the trade chat limited to using Bisq 2. Do not communicate with the buyer via WhatsApp, Matrix etc as it will make mediation much harder if there is an issue.&lt;br /&gt;
# Avoid trading off platform with any Bisq sellers.&lt;br /&gt;
# If you have any concerns about a trade open mediation.&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Cash_by_mail&amp;diff=4110</id>
		<title>Cash by mail</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Cash_by_mail&amp;diff=4110"/>
		<updated>2026-03-06T11:03:31Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: additional measures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Cash by mail''' (CBM) is one of the most private payment methods on Bisq. &lt;br /&gt;
&lt;br /&gt;
This payment method has special requirements you should be aware of, so please read this article carefully before doing any cash by mail trades.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Setting up a CBM account in Bisq =&lt;br /&gt;
&lt;br /&gt;
When setting up cash-by-mail payment account in Bisq, you will be asked to enter the following information:&lt;br /&gt;
&lt;br /&gt;
* Name or nym the package should be addressed to&lt;br /&gt;
* Postal address &lt;br /&gt;
* Currency &lt;br /&gt;
* Additional information &lt;br /&gt;
&lt;br /&gt;
If selling BTC, the name/nym and address fields should be the name you would like to buyer to address the package to. If buying BTC, the name/nym and address fields should be the name the seller or postal service to return the package to in case of any issues.&lt;br /&gt;
&lt;br /&gt;
You can only select one currency for a single cash-by-mail account. If you would like to trade with more than one currency, please create separate accounts for each currency.&lt;br /&gt;
&lt;br /&gt;
Define any special terms, conditions, or details you would like to be displayed with your offers in the 'Additional Information' field. '''Users can see this field ''before'' taking the offer by clicking the info icon of the offer.''' &lt;br /&gt;
&lt;br /&gt;
{{Admonition_Note|Consider setting up separate cash-by-mail accounts for buying and selling so you can specify special instructions for each.}}&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Note|You might want to use a PO Box and a name which is not your real one, instead of registering an account to your own house under your real identity.}}&lt;br /&gt;
&lt;br /&gt;
= Making a CBM offer =&lt;br /&gt;
&lt;br /&gt;
Make sure to state any special terms or conditions in the 'Additional Information' field of the payment account before making an offer. The person taking the offer will be accepting these terms and conditions by taking the offer.&lt;br /&gt;
&lt;br /&gt;
Please note it is against Bisq rules to use the 'Additional Information' field to include advertising offers with a way to contact you prior to the trade (e.g. website, phone, email, or Matrix/Keybase/Telegram user name). Doing this can result in a penalty, should someone take your offer and request for you to be penalized.&lt;br /&gt;
&lt;br /&gt;
= Taking a CBM offer =&lt;br /&gt;
&lt;br /&gt;
'''Make sure to check the offer maker's terms and conditions before taking a CBM offer.''' If you cannot fulfill the terms, do not take the the offer. If you have specific terms you would prefer, consider making your own offer instead.&lt;br /&gt;
&lt;br /&gt;
= Sending cash in the mail =&lt;br /&gt;
&lt;br /&gt;
Please see the Bisq trade protocol for [[Trading_rules|general trading rules]].&lt;br /&gt;
&lt;br /&gt;
In addition, buyers should:&lt;br /&gt;
&lt;br /&gt;
* follow any special requirements and conditions set by the seller&lt;br /&gt;
* package cash in a tamper-evident cash bag&lt;br /&gt;
* place tamper-evident cash bag inside a parcel. AVOID using an envelope where a postal worker would be able to feel a wad of cash as this can lead to stolen cash&lt;br /&gt;
* address the package to the name and address in the seller's cash-by-mail payment account&lt;br /&gt;
* put a return address in case the package cannot be delivered&lt;br /&gt;
* use inner and outer packaging addressed the same in case the outer one gets ripped open or damaged by water&lt;br /&gt;
* seal all packages well, with tape&lt;br /&gt;
* film or take high-resolution photos of the cash packaging process with the address and tracking number already affixed to packaging&lt;br /&gt;
* send the cash package to the BTC seller with a courier service that requires receipt of delivery to be confirmed by the seller&lt;br /&gt;
* if it's available, consider using a courier service that has appropriate insurance in place for any issues with delivery (i.e. USPS Registered Mail, insuring packages up to $50,000)&lt;br /&gt;
&lt;br /&gt;
'''Please make sure you have all the necessary items arranged ''before'' taking an offer (tamper-evident cash bags, other packaging, courier and insurance picked out, etc).'''&lt;br /&gt;
&lt;br /&gt;
Additional measures to ensure safer trades:&lt;br /&gt;
&lt;br /&gt;
* to help prove package integrity before and after shipping, both parties should ideally also take high-definition photos, or preferably a video, when handing the package to or collecting it from the postal office, this helps verify whether the package remains in the same condition as during preparation&lt;br /&gt;
* packaging should be as inconspicuous as possible, a flat envelope can reveal likely contents and invite theft, while using a hollowed paperback book or another ordinary object can better conceal the cash&lt;br /&gt;
&lt;br /&gt;
= Receiving cash in the mail =&lt;br /&gt;
&lt;br /&gt;
When receiving cash in the mail, you should:&lt;br /&gt;
&lt;br /&gt;
* Film the opening of the package, making sure that the tracking number provided by the sender is visible in the video.&lt;br /&gt;
* Follow any special requirements and conditions set by the buyer.&lt;br /&gt;
* Communicate with buyer's courier service as required.&lt;br /&gt;
&lt;br /&gt;
= Dispute resolution =&lt;br /&gt;
&lt;br /&gt;
Cash-by-mail trades are less verifiable than other fiat trades. This makes handling disputes much harder, so the onus to act honestly is squarely on both peers.&lt;br /&gt;
&lt;br /&gt;
It is highly recommended for peers to make use of Bisq's trader chat to communicate directly with one another. This is the most promising way to resolve any issues that may arise during the trade.&lt;br /&gt;
&lt;br /&gt;
Regarding dispute resolution, please note:&lt;br /&gt;
&lt;br /&gt;
* Mediators can consider your case and make a suggestion, but they are NOT guaranteed to help.&lt;br /&gt;
* If a mediator is engaged, and if either peer rejects the mediator's suggestion, both peers' funds will be sent to a [https://bisq.wiki/Arbitration#Time-Locked_Payout_Transaction Bisq 'donation' address], and the trade will effectively be completed.&lt;br /&gt;
* If a trader rejects a mediation suggestion and opens arbitration, it could lead to lose both trading and deposit funds.&lt;br /&gt;
* Arbitrators will make a decision based on the evidence provided to them. Therefore, please follow and document the above processes to have evidence in case of dispute. For cash-by-mail trades, arbitrator decisions are final, meaning reimbursement requests to the Bisq DAO for any funds lost in cash-by-mail trades will NOT be considered.&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Verse&amp;diff=4108</id>
		<title>Verse</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Verse&amp;diff=4108"/>
		<updated>2026-02-17T11:23:59Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: notice about Verse having been discontinued.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Admonition_Note|'''Verse has been DISCONTINUED as a service. This article has been kept for historical purposes, but the link from [[Payment methods]] has been removed.'''}}&lt;br /&gt;
&lt;br /&gt;
'''Verse''' is a payment method added in Bisq v1.7.5.&lt;br /&gt;
&lt;br /&gt;
Verse is a mobile payment app based in Europe owned by Square. Users can pay and request money from your friends. Payments are immediate and free. It is easy to use.&lt;br /&gt;
&lt;br /&gt;
Verse is multi currency, easy to use and payments are instant and free.&lt;br /&gt;
&lt;br /&gt;
Verse is designed for small payments between friends and family members. Fiat money you receive is stored in your Verse balance. From there you can send it to your friends’ digital wallets. When you want that money to be in your real world wallet, all you have to do is transfer it to your bank account. Withdrawals from Verse (sending to own account) take anywhere from a few seconds to two business days.&lt;br /&gt;
&lt;br /&gt;
Verse allows users to:&lt;br /&gt;
&lt;br /&gt;
* Send money to their contacts listed in the contacts list on their mobile device.&lt;br /&gt;
* Request money from their contacts listed in the contacts list on their mobile device.&lt;br /&gt;
* Receive and withdraw payments made by other Users that have your mobile phone number saved in their contacts list.&lt;br /&gt;
* Payments via Verse card (if they have one)&lt;br /&gt;
* Withdraw cash using Verse card via ATM network (if they have one)&lt;br /&gt;
&lt;br /&gt;
Money can be added by debit / credit card. Verse accepts VISA and MasterCard. Withdrawals are made to your linked debit / credit card.&lt;br /&gt;
&lt;br /&gt;
Why&lt;br /&gt;
Verse is like the European Cash App. It is multi currency, easy to use and payments are instant and free.&lt;br /&gt;
&lt;br /&gt;
== Where can I find out more about Verse? ==&lt;br /&gt;
&lt;br /&gt;
Here is a list of Verse resources:&lt;br /&gt;
&lt;br /&gt;
* [https://verse.me/ Verse website]&lt;br /&gt;
* [https://twitter.com/joinverse/ Verse Twitter]&lt;br /&gt;
* [https://verse.me/en/terms Verse T&amp;amp;Cs]&lt;br /&gt;
* [https://verse.me/en/faq/ Verse FAQs]&lt;br /&gt;
&lt;br /&gt;
== What countries are available for Verse? ==&lt;br /&gt;
&lt;br /&gt;
Verse operates in the following countries: Austria, Belgium, Denmark, Finland, France, Germany, Greece, Ireland, Italy, Poland, Portugal, Slovakia, Spain, Sweden, and The Netherlands.&lt;br /&gt;
&lt;br /&gt;
== What currencies are available for Verse? ==&lt;br /&gt;
&lt;br /&gt;
Verse supports the following currencies; EUR, SEK, HUF, DKK, PLN&lt;br /&gt;
&lt;br /&gt;
You can change between currencies in the your Verse account. Your default currency is decided by your phone number's country code. You can switch currencies every time you make a payment (the currency menu is right above the amount you are paying) and the change will be made immediately.&lt;br /&gt;
&lt;br /&gt;
There are no commissions when changing of currency, the current exchange rate (Visa mid-market) will be applied.&lt;br /&gt;
&lt;br /&gt;
== What is the maximum trading duration for Verse? ==&lt;br /&gt;
&lt;br /&gt;
The maximum trade time is 1 day. Generally Verse transfers will be completed instantly.&lt;br /&gt;
&lt;br /&gt;
Users making withdrawals from Verse (sending funds to their bank account) should expect to wait anywhere from a few seconds to two business days (it depends on their bank).&lt;br /&gt;
&lt;br /&gt;
== What is the maximum BTC limit for an Verse trade? ==&lt;br /&gt;
&lt;br /&gt;
{{MaxTradeSizeBisq1}}.&lt;br /&gt;
&lt;br /&gt;
== Is Verse a payment method that can be signed? ==&lt;br /&gt;
&lt;br /&gt;
No, Verse accounts do not require signing.&lt;br /&gt;
&lt;br /&gt;
== How do I set up a Verse account? ==&lt;br /&gt;
&lt;br /&gt;
Get the app from https://verse.me&lt;br /&gt;
&lt;br /&gt;
== How do I add Verse as a payment method in Bisq? ==&lt;br /&gt;
&lt;br /&gt;
It is easy to add your Verse account to Bisq.&lt;br /&gt;
&lt;br /&gt;
# Go to the top menu in Bisq and select Account. &lt;br /&gt;
# Then select National Currency Accounts. &lt;br /&gt;
# Click add new account&lt;br /&gt;
# Select Verse&lt;br /&gt;
# Complete the details&lt;br /&gt;
# Choose to use a custom account name this helps makes it easier for you to manage multiple payment methods in Bisq (this will be visible only to you, for example: Verse - Jan Janssen)&lt;br /&gt;
# Click save new account&lt;br /&gt;
&lt;br /&gt;
To send payment to someone you need there verse user name (similar to [[Revolut]], it is created for you based on first and last name, some users have the option to change their username).&lt;br /&gt;
&lt;br /&gt;
If you have more than one Verse account you wish to add to Bisq you can create different accounts for each.&lt;br /&gt;
&lt;br /&gt;
Make sure all the details are correct when you add.&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Warn|Verse is a multiple currency payment method that can send and receive payment in EUR, SEK, HUF, DKK, PLN.&lt;br /&gt;
&lt;br /&gt;
When setting up your Verse account in Bisq please make sure to include the username that matches your username in your Verse account. This will ensure that when you send funds they show from the correct account and when you receive funds they will be credited to your account.&lt;br /&gt;
&lt;br /&gt;
Verse users are limited to sending or receiving €10,000 per year (or equivalent foreign currency amount) for accumulated payments made from or received into their payment account. This can be increased by Verse on request.}}&lt;br /&gt;
&lt;br /&gt;
== How do I buy BTC with my Verse account? ==&lt;br /&gt;
&lt;br /&gt;
You can buy BTC with Verse on Bisq in 2 waysː&lt;br /&gt;
&lt;br /&gt;
# Make an offer to buy BTC on the EUR, SEK, HUF, DKK, or PLN market.&lt;br /&gt;
# Take an offer to buy BTC on the EUR, SEK, HUF, DKK, or PLN market.&lt;br /&gt;
&lt;br /&gt;
When the offer is confirmed Bisq will provide you with the BTC Sellers Verse details for you to complete the payment. You should send payment immediately and confirm you have done so in Bisq by clicking 'payment started'.&lt;br /&gt;
&lt;br /&gt;
If you have the option to include a payment reference please leave it blank. If your bank requires one, please just use your name that matches your bank account.&lt;br /&gt;
&lt;br /&gt;
Once the BTC Seller receives your payment they will confirm in Bisq and your security deposit and your purchased trade amount will be available in your wallet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Warn|Please send payment only to the username provided by the BTC Seller in their Bisq account. Please leave the payment description blank.&lt;br /&gt;
&lt;br /&gt;
Verse users are limited to sending or receiving €10,000 per year (or equivalent foreign currency amount) for accumulated payments made from or received into their payment account. This can be increased by Verse on request.}}&lt;br /&gt;
&lt;br /&gt;
== How do I sell BTC with my Verse account? ==&lt;br /&gt;
&lt;br /&gt;
You can sell BTC with Verse on Bisq in 2 waysː&lt;br /&gt;
&lt;br /&gt;
# Make an offer to sell BTC on the EUR, SEK, HUF, DKK, or PLN market.&lt;br /&gt;
# Take an offer to sell BTC on the EUR, SEK, HUF, DKK, or PLN market.&lt;br /&gt;
&lt;br /&gt;
When the offer is confirmed Bisq will provide with the BTC Buyer with your Verse details for you to complete the payment. They should send payment at their first opportunity and confirm they have done so in Bisq by clicking 'payment started'.&lt;br /&gt;
&lt;br /&gt;
Once you receive payment from the BTC Buyer you should confirm payment has been received in Bisq. One you have done this the BTC Buyer will receive their funds and you will receive your security deposit back.&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Warn|BTC Sellers should expect to receive payment from the username shown in the BTC Buyer's Bisq account.&lt;br /&gt;
&lt;br /&gt;
Verse users are limited to sending or receiving €10,000 per year (or equivalent foreign currency amount) for accumulated payments made from or received into their payment account. This can be increased by Verse on request.}}&lt;br /&gt;
&lt;br /&gt;
== Are there any limits for me to be aware of when using my Verse account? ==&lt;br /&gt;
&lt;br /&gt;
€10,000 per year (or equivalent foreign currency amount) for accumulated payments made from or received into their payment account. Can be increased on request.&lt;br /&gt;
&lt;br /&gt;
== Are there any fees for me to be aware of when using my Verse account? == &lt;br /&gt;
&lt;br /&gt;
Free. For payment operations that involve currency conversion and currency exchange services, the exchange rate will be calculated based on the currency sale or purchase rates, as applicable, by Visa International&lt;br /&gt;
&lt;br /&gt;
== How does dispute resolution when trading with Verse? ==&lt;br /&gt;
&lt;br /&gt;
If a dispute occurs the mediator may ask the buyer to send them information showing that they made the payment of the correct amount to the BTC Seller within the correct time frame. &lt;br /&gt;
&lt;br /&gt;
The mediator may ask the seller to send them information to prove their account details are correct, or in the case of the BTC Buyer making a payment late, or of the wrong amount. &lt;br /&gt;
&lt;br /&gt;
For more information see [[dispute resolution]].&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Payment_methods&amp;diff=4107</id>
		<title>Payment methods</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Payment_methods&amp;diff=4107"/>
		<updated>2026-02-17T11:21:01Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* Fiat payment methods */ removed Verse, as it is discontinued&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;Bisq offers several '''payment methods''' to buy and sell bitcoin for fiat currencies or other cryptocurrencies.&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Note|'''Version Context:''' The details on this page, particularly regarding trade limits and account signing, primarily apply to trading on '''[[Bisq 1|Bisq v1]]'''.}}&lt;br /&gt;
&lt;br /&gt;
Every offer on Bisq designates a payment method for traders to settle payments. The Bisq software does not actually integrate with any payment methods—'''all non-bitcoin fund transfers are made outside of Bisq software'''.&lt;br /&gt;
&lt;br /&gt;
Unlike cryptocurrency transfers, many fiat payment transfers have limitations that require Bisq [[Bisq 1|v1]] to employ special measures like lower per-trade limits and [[Account_limits#Account_signing|account signing]] to encourage fair trades.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Fiat payment methods ==&lt;br /&gt;
&lt;br /&gt;
Fiat payment methods vary significantly in characteristics like chargeback risk, regional availability, transaction limits, fees, privacy, and verification speed. The primary consideration for supporting a method on Bisq is '''chargeback risk'''. Methods with easy chargebacks (like PayPal, Venmo, Cash App) are generally not supported.&lt;br /&gt;
&lt;br /&gt;
Suggestions for new payment methods, especially those enabling new markets, are welcome. See the criteria and process for adding methods [https://github.com/bisq-network/growth/issues/new?assignees=&amp;amp;labels=re%3Apayment-method&amp;amp;template=add_payment_method.md&amp;amp;title= here on GitHub], or discuss them on [https://bisq.chat Matrix] in the #payment-methods channel.&lt;br /&gt;
&lt;br /&gt;
Below is a list of fiat payment methods currently supported in Bisq v1.&lt;br /&gt;
&lt;br /&gt;
'''Note on Signing Requirement:''' Methods marked with an asterisk (*) '''do not''' require [[Account_limits#Account_signing|account signing]] to lift the initial low buying limit. All other listed fiat methods generally require signing.&lt;br /&gt;
&lt;br /&gt;
'''Note on Trade Limits:''' The maximum trade sizes listed below may not be available immediately for new payment accounts. Please refer to [[Account_limits]] for details on account aging and signing required to enable larger trade sizes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ Supported Fiat Payment Methods (Bisq v1)&lt;br /&gt;
|-&lt;br /&gt;
! Payment Method [* = Signing Not Required] !! Region !! Trading Period !! Per-Trade Limit (BTC) !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ACH]]* || USA || 5 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| Advanced Cash* || Global (BRL, EUR, GBP, KZT, RUB, UAH, USD) || 1 day || 0.5 || Not available in the USA.&lt;br /&gt;
|-&lt;br /&gt;
| Alipay* || China || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Amazon_eGift_card|Amazon eGift Card]]* || Global (AUD, CAD, EUR, GBP, INR, JPY, SAR, SEK, SGD, TRY, USD) || 1 day || 0.0625 || Check supported markets in [[Amazon_eGift_card|article]].&lt;br /&gt;
|-&lt;br /&gt;
| Australian PayID* || Australia || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Bizum]]* || Spain|| 1 day || 0.02 || Bizum limits: ~1000 EUR/trade, ~2000 EUR/day.&lt;br /&gt;
|-&lt;br /&gt;
| [[Capitual]]* || Global (BRL, EUR, GBP, USD) || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Cash by Mail]]* || Global || 8 days || 0.0625 || Follow [[Cash_by_Mail|instructions carefully]].&lt;br /&gt;
|-&lt;br /&gt;
| Cash Deposit* || Global || 4 days || 0.0625 || Check if payee bank allows 3rd party deposits.&lt;br /&gt;
|-&lt;br /&gt;
| [[CelPay]]* || Global (AUD, CAD, GBP, HKD, USD) || 1 day || 0.0625 || CelPay limit: ~$2,500/day.&lt;br /&gt;
|-&lt;br /&gt;
| Domestic Wire Transfer* || USA || 3 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Face-to-face_(payment_method)|Face-to-Face (F2F)]]* || Global || 4 days || 0.25 || See [[Face-to-face_(payment_method)|F2F article]] for guidance.&lt;br /&gt;
|-&lt;br /&gt;
| [[Faster Payments]]* || UK || 1 day || 0.0625 || See [[Faster_Payments|article]] for usage notes.&lt;br /&gt;
|-&lt;br /&gt;
| [[Faster_Payments_System_SBP|Faster Payments System (SBP)]]* || Russia || 1 day || 0.05 || &lt;br /&gt;
|-&lt;br /&gt;
| HalCash* || Spain || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| [[IMPS]]* || India || 1 day || 0.0625 || IMPS limit: ~1,000,000 INR/day.&lt;br /&gt;
|-&lt;br /&gt;
| Interac-e-Transfer || Canada || 1 day || 0.0625 || Interac Autodeposit is '''not''' supported.&lt;br /&gt;
|-&lt;br /&gt;
| Japan Zengin Furikomi* || Japan || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| MercadoPago || Argentina || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Monese]]* || Europe (GBP, EUR, RON) || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| MoneyBeam (N26) || Europe || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| MoneyGram* || Global || 4 days || 0.125 ||&lt;br /&gt;
|-&lt;br /&gt;
| National Bank Transfer || Global || 4 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Nequi]]*|| Colombia || 1 day || 0.0625 || Nequi limit: ~7,000,000 COP/month.&lt;br /&gt;
|-&lt;br /&gt;
| [[NEFT]]* || India || 1 day || 0.10 || NEFT limit: ~50,000 INR/transaction.&lt;br /&gt;
|-&lt;br /&gt;
| [[Paxum]]* || Global || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Paysera]]* || Global || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[PayTM]]* || India || 1 day || 0.0250 || PayTM limit: ~100,000 INR/transaction.&lt;br /&gt;
|-&lt;br /&gt;
| Perfect Money* || Global || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Pix]]*|| Brazil || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| Popmoney || USA || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| PromptPay* || Thailand || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Revolut]] || Global || 1 day || 0.0625 || See [[Revolut|article]] for usage notes.&lt;br /&gt;
|-&lt;br /&gt;
| [[RTGS]]* || India || 1 day || 0.10 || RTGS limits: Min 200,000 INR, Max 1,000,000 INR/transaction.&lt;br /&gt;
|-&lt;br /&gt;
| [[Satispay]]* || Italy || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[SEPA]] || Europe || 6 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[SEPA Instant]] || Europe || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Strike]]* || USA || 1 day || 0.0625 || Non-KYC Strike users have lower limits.&lt;br /&gt;
|-&lt;br /&gt;
| [[SWIFT]]* || Global || 7 days || 0.125 || &lt;br /&gt;
|-&lt;br /&gt;
| Swish* || Sweden || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Tikkie]]* || The Netherlands || 1 day || 0.0250 || Tikkie limit: ~2500 EUR/24 hours.&lt;br /&gt;
|-&lt;br /&gt;
| Transfer with Same Bank || Global || 2 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| Transfer from Specific Banks || Global || 4 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[US Postal Money Order]]* || USA || 8 days || 0.0625 || USPS limits: Max 1000 USD/order, check daily limits.&lt;br /&gt;
|-&lt;br /&gt;
| Uphold || Global || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[UPI]]* || India || 1 day || 0.0250 || UPI limit: ~100,000 INR/transaction.&lt;br /&gt;
|-&lt;br /&gt;
| WeChat Pay* || China || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| Western Union || Global || 4 days || 0.125 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Wise]]* || Global ('''non-USD''' trades) || 4 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Wise-USD]]* || Global ('''USD''' trades) || 4 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Zelle]] || USA || 4 days || 0.0625 || Check your bank's Zelle support &amp;amp; limits.&lt;br /&gt;
|}&lt;br /&gt;
=== Payment method guides ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=&amp;quot;150px&amp;quot;&amp;gt;&lt;br /&gt;
File:Payment-methods-advice-eur.png|EUR payment methods overview.&lt;br /&gt;
File:Payment-methods-advice-usd.png|USD payment methods overview.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Altcoin payment methods ==&lt;br /&gt;
&lt;br /&gt;
Bisq also supports trading Bitcoin against various cryptocurrencies, like XMR, ETH, ZEC, L-BTC or LTC. A full list is available on the [https://bisq.network/markets/ Bisq Network Markets page].&lt;br /&gt;
&lt;br /&gt;
Because cryptocurrency transfers are generally irreversible and fast, altcoin trades usually have higher limits (up to 0.5 BTC) available immediately, without the need for account aging or signing required for many fiat methods.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Supported Altcoin Payment Methods (Bisq v1)&lt;br /&gt;
|-&lt;br /&gt;
! Payment Method !! Trading Period !! Per-Trade Limit (BTC)&lt;br /&gt;
|-&lt;br /&gt;
| [[Altcoins]] || 1 day || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| [[Altcoins Instant]] || 1 hour || 0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Warning for Instant Trades:''' Altcoins Instant trades require quick confirmation (within 1 hour). Remember to disable any open Instant offers (via `Portfolio` &amp;gt; `My Open Offers`) if you might be unavailable to complete the trade promptly.&lt;br /&gt;
&lt;br /&gt;
See the general Account setup process within Bisq for adding altcoin accounts.&lt;br /&gt;
&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Account_limits&amp;diff=4106</id>
		<title>Account limits</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Account_limits&amp;diff=4106"/>
		<updated>2026-02-12T12:24:13Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* With your own signed account */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Elevated '''account limits''' apply to fiat payment accounts in order to limit damage a malicious user can do while allowing honest users to start trading immediately with no KYC and utmost privacy.&lt;br /&gt;
&lt;br /&gt;
Altcoin accounts can trade 0.5 BTC right away, but all fiat payment account types have limits lower than 0.5 BTC to match their particular risk profiles (see [[Payment_methods#Fiat_payment_methods|this table]] for details). Some payment methods with chargeback risk implement a mechanism called ''account signing'' that restricts trading activity until a trader proves their integrity to further secure against foul play.&lt;br /&gt;
&lt;br /&gt;
To reduce the size of trades entering arbitration Bisq also sets new users trade limits to be 0.1 BTC. This is an additional limit to account limits but users can opt out of this limit at any time.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Which payment accounts are affected ==&lt;br /&gt;
&lt;br /&gt;
Only fiat payment methods are affected by elevated account limits. Altcoin accounts are only affected by the new user limits which can be opted out if necessary for allow every altcoin account to trade up to 0.5 BTC right away upon creating a payment account in Bisq.&lt;br /&gt;
&lt;br /&gt;
All fiat payment methods in all markets limit total trade size depending on the payment method's risk profile (see [[Payment_methods#Fiat_payment_methods|this table]] for details).&lt;br /&gt;
&lt;br /&gt;
Despite these limitations, chargebacks can still be possible for certain payment methods. Bisq reduces this risk with a mechanism called '''account signing'''.&lt;br /&gt;
&lt;br /&gt;
Account signing only applies to payment accounts that meet ''both'' of the following conditions:&lt;br /&gt;
* used in the following markets: USD, EUR, CAD, GBP, AUD, or BRL&lt;br /&gt;
* is subject to chargeback risk: SEPA, SEPA Instant, Interac e-Transfer, Zelle, Revolut, Chase QuickPay, Popmoney, MoneyBeam, Uphold, and any kind of bank transfer&lt;br /&gt;
&lt;br /&gt;
This means that all payment accounts that deal in currencies not listed above do ''not'' require account signing, even if they are subject to chargeback risk.&lt;br /&gt;
&lt;br /&gt;
== Account aging ==&lt;br /&gt;
&lt;br /&gt;
[[File:See-account-age.png|400px|thumb|See account age in the offer book.]]&lt;br /&gt;
&lt;br /&gt;
Account age is no longer used to determine trade size limits for most payment methods. It is still measured, however, and you can see a payment account's age in the offer book before taking an offer, but we caution against using it as a measure of integrity. Older accounts are not ''necessarily'' safer.&lt;br /&gt;
&lt;br /&gt;
'''Practically, this means that all payment methods on Bisq have full selling capability from the moment they are created.''' Selling limits no longer phase in over time.&lt;br /&gt;
&lt;br /&gt;
Some payment methods implement a variation of account aging called account signing whereby limits are increased in stages over a period of 60 days after signing. More about this below.&lt;br /&gt;
&lt;br /&gt;
If you're interested, details on the &amp;lt;code&amp;gt;AccountAgeWitness&amp;lt;/code&amp;gt; object that enables this aging mechanism are [https://docs.bisq.network/payment-account-age-witness.html here].&lt;br /&gt;
&lt;br /&gt;
== Account signing ==&lt;br /&gt;
&lt;br /&gt;
[[File:Account-signing-overview.png|thumb|right|A graphical overview of account signing.]]&lt;br /&gt;
&lt;br /&gt;
Account signing limits ''buying'' limits of risky fiat payment methods to {{MaxTradeSizeUnsigned}} until the trader has bought bitcoin from a seller with a signed payment account, and then gradually phases in full buying limits. Selling limits are unaffected.&lt;br /&gt;
&lt;br /&gt;
In a nutshell, this is how it works:&lt;br /&gt;
* Payment account is created in Bisq for risky payment method&lt;br /&gt;
** Buying is limited to {{MaxTradeSizeUnsigned}} BTC per trade until account is signed (see how [[#How_to_get_an_account_signed|below]])&lt;br /&gt;
* 30 days after signing, buying limits are increased to 50% of maximum&lt;br /&gt;
* 60 days after signing, maximum trade size is allowed&lt;br /&gt;
&lt;br /&gt;
Let's see how this works in practice by looking at an example. SEPA has a maximum trade size of 0.0624 BTC, and it requires account signing in order for to enable full trade limits. &lt;br /&gt;
&lt;br /&gt;
First let's observe what happens if a new SEPA account is never signed. Notice how buying limits never increase beyond {{MaxTradeSizeUnsigned}}, but selling 0.0624 BTC is allowed from day 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Time Since Creating SEPA Payment Account (Never Signed)&lt;br /&gt;
! Maximum Trade Size (Buy) &lt;br /&gt;
! Maximum Trade Size (Sell) &lt;br /&gt;
|-&lt;br /&gt;
| Day 0 &lt;br /&gt;
| {{MaxTradeSizeUnsigned}} &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 30 &lt;br /&gt;
| {{MaxTradeSizeUnsigned}} &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 60 &lt;br /&gt;
| {{MaxTradeSizeUnsigned}} &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 90 &lt;br /&gt;
| {{MaxTradeSizeUnsigned}} &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If that SEPA account manages to get signed on the same day it's created, it will see its {{MaxTradeSizeUnsigned}} limit increased on Day 30. Selling limits are unaffected.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Time Since Creating SEPA Payment Account &lt;br /&gt;
! Maximum Trade Size (Buy) &lt;br /&gt;
! Maximum Trade Size (Sell) &lt;br /&gt;
|-&lt;br /&gt;
| Day 0 - Account Signed &lt;br /&gt;
| {{MaxTradeSizeUnsigned}} &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 30 &lt;br /&gt;
| 0.03125 BTC &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 60 &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 90 &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
But if that SEPA account isn't signed until Day 30, it won't see its limits lifted until Day 60. Again, selling limits are unaffected.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Time Since Creating SEPA Payment Account &lt;br /&gt;
! Maximum Trade Size (Buy) &lt;br /&gt;
! Maximum Trade Size (Sell) &lt;br /&gt;
|-&lt;br /&gt;
| Day 0 &lt;br /&gt;
| {{MaxTradeSizeUnsigned}} &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 30 - Account Signed &lt;br /&gt;
| {{MaxTradeSizeUnsigned}}&lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 60 &lt;br /&gt;
| 0.0325 BTC &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 90 &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How to get an account signed ===&lt;br /&gt;
&lt;br /&gt;
Payment accounts that require signing cannot buy more than {{MaxTradeSizeUnsigned}} until 30 days ''after'' they are signed. Accounts can be signed with the following two methods.&lt;br /&gt;
&lt;br /&gt;
==== Buying BTC ====&lt;br /&gt;
To sign your account you have to buy BTC following these requirements:&lt;br /&gt;
* trade amount is greater than or equal to {{MinTradeSizeToBeSigned}} BTC and lesser than or equal to {{MaxTradeSizeUnsigned}}&lt;br /&gt;
* offer must be in a market that requires signing (USD, EUR, CAD, GBP, AUD, BRL)&lt;br /&gt;
* seller's account must have been signed for over 30 days at the time of the signing trade&lt;br /&gt;
&lt;br /&gt;
Through taking an offer you can make sure that the offer fulfills the requirements to sign your account. Making an offer could not sign your account, because taker could be unable to sign your account (signed since less than 30 days, or unsigned). &lt;br /&gt;
&lt;br /&gt;
The Bisq interface makes it easy to determine if an offer can help you get signed: simply '''look for buy offers with a check mark badge''':&lt;br /&gt;
&lt;br /&gt;
[[File:Good-bad-signing-asks.png|600px|thumb|left|Top offer won't get you signed. Bottom offer will get you signed.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the image above, the offer on top does not have a check mark, but the offer on the bottom does. And it's a valid size (i.e., between {{MinTradeSizeToBeSigned}} BTC and {{MaxTradeSizeUnsigned}}), so taking that offer and successfully completing the trade will result in a signed account.&lt;br /&gt;
&lt;br /&gt;
You can see your payment account's limits and signing status at &amp;lt;code&amp;gt;Accounts&amp;lt;/code&amp;gt; &amp;gt; &amp;lt;code&amp;gt;National Currency Accounts&amp;lt;/code&amp;gt;. Pick an account and look toward the bottom:&lt;br /&gt;
&lt;br /&gt;
[[File:Payment-account-signing-status.png|600px|thumb|left|Where to see your payment account's limits and signing status.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== With your own signed account ====&lt;br /&gt;
&lt;br /&gt;
Once you have a signed and fully matured payment account, any new payment account you create after it, that requires signing, will be self-signed as long as it uses the '''exact same name''' as your previously signed account. The payment account can be of a different type (e.g. a signed SEPA account can self-sign a SEPA Instant account), but a payment account created with a name that is even slightly different will not be self-signed. &lt;br /&gt;
&lt;br /&gt;
Payment account types that don't require your full name cannot be self-signed (e.g. Revolut, which only requires an email address) and they cannot self-sign other payment accounts.&lt;br /&gt;
&lt;br /&gt;
Self-signed accounts are immediately signed, but limits are not immediately lifted. This is because they have an age of 0 days, so 30 days must pass for the {{MaxTradeSizeUnsigned}} limit to be lifted, and another 30 days must pass for full trading ability to take effect (see tables above).&lt;br /&gt;
&lt;br /&gt;
== Backing up and restoring payment accounts ==&lt;br /&gt;
&lt;br /&gt;
Once your payment accounts have accrued age and been signed, you won't want to give them up. With [[Backing_up_application_data|proper backups]], you won't have to—payment accounts can be restored if you ever have to remove/reinstall Bisq, move to another machine, etc.&lt;br /&gt;
&lt;br /&gt;
== User opt-out limits ==&lt;br /&gt;
&lt;br /&gt;
To reduce trades into arbitration for new users unfamiliar with Bisq, new users have a 0.1 BTC limit by default that can be opt-out of at any time. &lt;br /&gt;
&lt;br /&gt;
To access this limit go to Settings &amp;gt; Preferences&lt;br /&gt;
&lt;br /&gt;
[[File:Trade limits.png|frameless|left|Trade limit setting in Bisq that can opted out of or changed at any time]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shown above is the trade limit setting in Bisq that can opted out of or edited higher or lower at any time.&lt;br /&gt;
&lt;br /&gt;
If you opt of of this limit you will be given a pop up message informing you...&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Warn|Trading limits are set to reduce risk of costly disputes and losing funds for new users. Raise trading limits at your own risk. Every trader has their own pace, but it's recommended to complete at least 5 trades before raising trade limits.&lt;br /&gt;
&lt;br /&gt;
By raising trading limits you acknowledge to be familiar with the basic use of Bisq, like [[Backing_up_application_data|backing up your data]], [[rading_rules|trading rules]], [[Dispute_resolution|dispute resolution]], [[Table_of_penalties|penalties]] and [[User_support|where to find support]].}}&lt;br /&gt;
&lt;br /&gt;
Account signing limits are still applied to buy BTC with most National Account payment methods to reduce chargeback risk.&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Backup&amp;diff=4101</id>
		<title>Backup</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Backup&amp;diff=4101"/>
		<updated>2025-12-14T18:22:15Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Backup strategies=&lt;br /&gt;
&lt;br /&gt;
== Manual backup ==&lt;br /&gt;
&lt;br /&gt;
Bisq1 has a manually triggered backup feature that saves a copy of the whole contents of the data directory to a selected location: [[backing up application data]]&lt;br /&gt;
&lt;br /&gt;
Bisq2 has a very similar feature that can be reached under Support &amp;gt; Resources &amp;gt; Backup, and works in a similar manner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Built-in automatic backup ==&lt;br /&gt;
&lt;br /&gt;
Bisq2 extends the existing manual backup, and also provides a feature to create versioned backups: [[automatic backup]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Custom automatic backup scripts ==&lt;br /&gt;
&lt;br /&gt;
A standalone script is also available to create versioned backups on Windows, MacOS and Linux, of the essential database files of both Bisq1 and Bisq2: [[automatic backup script]]&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Backup&amp;diff=4100</id>
		<title>Backup</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Backup&amp;diff=4100"/>
		<updated>2025-12-14T18:21:44Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Backup strategies=&lt;br /&gt;
&lt;br /&gt;
== Manual backup ==&lt;br /&gt;
&lt;br /&gt;
Bisq1 has a manually triggered backup feature that saves a copy of the whole contents of the data directory to a selected location: [[backing up application data]]&lt;br /&gt;
&lt;br /&gt;
Bisq2 has a very similar feature that can be reached under Support &amp;gt; Resources &amp;gt; Backup, and works in a similar manner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Built-in automatic backup ==&lt;br /&gt;
&lt;br /&gt;
Bisq2 extends the existing manual backup, and also provides a feature to create versioned backups: [[automatic backups]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Custom automatic backup scripts ==&lt;br /&gt;
&lt;br /&gt;
A standalone script is also available to create versioned backups on Windows, MacOS and Linux, of the essential database files of both Bisq1 and Bisq2: [[automatic backup script]]&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Backup&amp;diff=4099</id>
		<title>Backup</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Backup&amp;diff=4099"/>
		<updated>2025-12-14T18:21:06Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Backup strategies=&lt;br /&gt;
&lt;br /&gt;
== Manual backup ==&lt;br /&gt;
&lt;br /&gt;
Bisq1 has a manually triggered backup feature that saves a copy of the whole contents of the data directory to a selected location: [[backing up application data]]&lt;br /&gt;
&lt;br /&gt;
Bisq2 has a very similar feature that can be reached under Support &amp;gt; Resources &amp;gt; Backup, and works in a similar manner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Builtin automatic backup ==&lt;br /&gt;
&lt;br /&gt;
Bisq2 builds on top of the existing manual backup, and also provides a feature to create versioned backups: [[automatic backups]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Custom automatic backup scripts ==&lt;br /&gt;
&lt;br /&gt;
A standalone script is also available to create versioned backups on Windows, MacOS and Linux, of the essential database files of both Bisq1 and Bisq2: [[automatic backup script]]&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Backup&amp;diff=4098</id>
		<title>Backup</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Backup&amp;diff=4098"/>
		<updated>2025-12-14T18:20:32Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Backup strategies=&lt;br /&gt;
&lt;br /&gt;
== Manual backup ==&lt;br /&gt;
&lt;br /&gt;
Bisq1 has a manually triggered backup feature that saves a copy of the whole contents of the data directory to a selected location: [[backing up application data]]&lt;br /&gt;
&lt;br /&gt;
Bisq2 has a very similar feature that can be reached under Support &amp;gt; Resources &amp;gt; Backup, and works in a similar manner&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Builtin automatic backup ==&lt;br /&gt;
&lt;br /&gt;
Bisq2 builds on top of the existing manual backup, and also provides a feature to create versioned backups: [[automatic backups]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Custom automatic backup scripts ==&lt;br /&gt;
&lt;br /&gt;
A standalone script is also available to create versioned backups on Windows, MacOS and Linux, of the essential database files of both Bisq1 and Bisq2: [[automatic backup script]]&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Backup&amp;diff=4097</id>
		<title>Backup</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Backup&amp;diff=4097"/>
		<updated>2025-12-14T18:20:01Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: stump&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Backup strategies=&lt;br /&gt;
&lt;br /&gt;
== Manual backup ==&lt;br /&gt;
&lt;br /&gt;
Bisq1 has a manually triggered backup feature that saves a copy of the whole contents of the data directory to a selected location: [[backing up application data]]&lt;br /&gt;
Bisq2 has a very similar feature that can be reached under Support &amp;gt; Resources &amp;gt; Backup, and works in a similar manner&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Builtin automatic backup ==&lt;br /&gt;
&lt;br /&gt;
Bisq2 builds on top of the existing manual backup, and also provides a feature to create versioned backups: [[automatic backups]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Custom automatic backup scripts ==&lt;br /&gt;
&lt;br /&gt;
A standalone script is also available to create versioned backups on Windows, MacOS and Linux, of the essential database files of both Bisq1 and Bisq2: [[automatic backup script]]&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup&amp;diff=4096</id>
		<title>Automatic backup</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup&amp;diff=4096"/>
		<updated>2025-12-14T18:07:41Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: add screenshot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Bisq application automatically creates a backup whenever a data storage file is updated. Recent backups are retained more densely, while older ones are gradually thinned out. This approach maintains a good balance between storage usage and ensuring that sufficiently recent backups are available when needed.&lt;br /&gt;
&lt;br /&gt;
Backup snapshots are created on every write (the backup filename is the store filename plus the timestamp format &amp;lt;code&amp;gt;yyyy-MM-dd_HHmm&amp;lt;/code&amp;gt;) and are grouped by the store’s parent filename.&lt;br /&gt;
[[File:Resources automatic backup.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
The system keeps backup snapshots based on the following rules and the &amp;lt;code&amp;gt;MaxBackupSize&amp;lt;/code&amp;gt; (default 100MB):&lt;br /&gt;
&lt;br /&gt;
*Last hour: a snapshot every minute&lt;br /&gt;
*Past hour → 24 hours: the most recent snapshot from each hour is kept&lt;br /&gt;
*Past day → 7 days: the most recent snapshot from each day is kept&lt;br /&gt;
*Past week → 28 days: the most recent snapshot from each week is kept&lt;br /&gt;
*Past month → 1 year: the most recent snapshot from each month is kept&lt;br /&gt;
*Older than a year: the most recent snapshot from each year is kept&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=File:Resources_automatic_backup.png&amp;diff=4095</id>
		<title>File:Resources automatic backup.png</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=File:Resources_automatic_backup.png&amp;diff=4095"/>
		<updated>2025-12-14T18:06:46Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;automatic backup &amp;amp; retention system page&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup&amp;diff=4094</id>
		<title>Automatic backup</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup&amp;diff=4094"/>
		<updated>2025-12-14T18:04:02Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: fix title format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Bisq2 automatic backup &amp;amp; retention system ===&lt;br /&gt;
&lt;br /&gt;
The Bisq application automatically creates a backup whenever a data storage file is updated. Recent backups are retained more densely, while older ones are gradually thinned out. This approach maintains a good balance between storage usage and ensuring that sufficiently recent backups are available when needed.&lt;br /&gt;
&lt;br /&gt;
Backup snapshots are created on every write (the backup filename is the store filename plus the timestamp format &amp;lt;code&amp;gt;yyyy-MM-dd_HHmm&amp;lt;/code&amp;gt;) and are grouped by the store’s parent filename.&lt;br /&gt;
&lt;br /&gt;
The system keeps backup snapshots based on the following rules and the &amp;lt;code&amp;gt;MaxBackupSize&amp;lt;/code&amp;gt; (default 100MB):&lt;br /&gt;
&lt;br /&gt;
*Last hour: a snapshot every minute\n\&lt;br /&gt;
*Past hour → 24 hours: the most recent snapshot from each hour is kept&lt;br /&gt;
*Past day → 7 days: the most recent snapshot from each day is kept&lt;br /&gt;
*Past week → 28 days: the most recent snapshot from each week is kept&lt;br /&gt;
*Past month → 1 year: the most recent snapshot from each month is kept&lt;br /&gt;
*Older than a year: the most recent snapshot from each year is kept&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup&amp;diff=4093</id>
		<title>Automatic backup</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup&amp;diff=4093"/>
		<updated>2025-12-14T18:03:15Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: Stump created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bisq2 automatic backup &amp;amp; retention system =&lt;br /&gt;
&lt;br /&gt;
The Bisq application automatically creates a backup whenever a data storage file is updated. Recent backups are retained more densely, while older ones are gradually thinned out. This approach maintains a good balance between storage usage and ensuring that sufficiently recent backups are available when needed.&lt;br /&gt;
&lt;br /&gt;
Backup snapshots are created on every write (the backup filename is the store filename plus the timestamp format &amp;lt;code&amp;gt;yyyy-MM-dd_HHmm&amp;lt;/code&amp;gt;) and are grouped by the store’s parent filename.&lt;br /&gt;
&lt;br /&gt;
The system keeps backup snapshots based on the following rules and the &amp;lt;code&amp;gt;MaxBackupSize&amp;lt;/code&amp;gt; (default 100MB):&lt;br /&gt;
&lt;br /&gt;
*Last hour: a snapshot every minute\n\&lt;br /&gt;
*Past hour → 24 hours: the most recent snapshot from each hour is kept&lt;br /&gt;
*Past day → 7 days: the most recent snapshot from each day is kept&lt;br /&gt;
*Past week → 28 days: the most recent snapshot from each week is kept&lt;br /&gt;
*Past month → 1 year: the most recent snapshot from each month is kept&lt;br /&gt;
*Older than a year: the most recent snapshot from each year is kept&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Finding_your_arbitrator&amp;diff=4085</id>
		<title>Finding your arbitrator</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Finding_your_arbitrator&amp;diff=4085"/>
		<updated>2025-11-11T09:15:59Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* Matrix and onion addresses */ updated RA2 matrix handle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of current Bisq arbitrators and their onion addresses, as well as how you can find the arbitrator for a specific Bisq trade.&lt;br /&gt;
&lt;br /&gt;
If you need to find your mediator see [[Finding your mediator|here]].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Get in touch with your arbitrator =&lt;br /&gt;
&lt;br /&gt;
For open trades, you should be able to get in touch with your arbitrator through Bisq arbitration chat itself.&lt;br /&gt;
&lt;br /&gt;
If you cannot get in touch with your arbitrator on Bisq for 72 hours (sometimes Bisq message system fails), or the issue needs urgent attention, you can get in touch with them on the [[Matrix bisq.chat]] group.  Their Matrix handles and onion addresses are displayed in the headline for the #support channel as well.&lt;br /&gt;
&lt;br /&gt;
= How to find the arbitrator for a trade =&lt;br /&gt;
&lt;br /&gt;
== In Bisq 1 ==&lt;br /&gt;
&lt;br /&gt;
=== System message ===&lt;br /&gt;
&lt;br /&gt;
Go to 'Support &amp;gt; Arbitration' tab since arbitration begins.&lt;br /&gt;
&lt;br /&gt;
=== View contract in JSON ===&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can look for your arbitrator since the trade starts:&lt;br /&gt;
&lt;br /&gt;
# Go to  &amp;lt;code&amp;gt;Portfolio &amp;gt; Open Trades&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Portfolio &amp;gt; History&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;Portfolio &amp;gt; Failed Trades&amp;lt;/code&amp;gt; (depending on the status of your trade) &lt;br /&gt;
# Click the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; icon next to the trade ID of the trade in question (it's on the very left in the first column)&lt;br /&gt;
# In the pop-up that appears, toward the bottom, click &amp;lt;code&amp;gt;View Contract in JSON Format&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Scroll down and you'll find &amp;lt;code&amp;gt;&amp;quot;refundAgentNodeAddress&amp;quot;&amp;lt;/code&amp;gt; it is just below &amp;lt;code&amp;gt;&amp;quot;lockTime&amp;quot;&amp;lt;/code&amp;gt; after the refundAgentNodeAddress you will see your arbitrators's onion address.&lt;br /&gt;
&lt;br /&gt;
This is the onion address of the arbitrator for your trade.&lt;br /&gt;
&lt;br /&gt;
= Matrix and onion addresses =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arbitrator &lt;br /&gt;
! TorV3 Address&lt;br /&gt;
! GitHub Handle&lt;br /&gt;
! Matrix Handle&lt;br /&gt;
|-&lt;br /&gt;
| ﻿refundagent2&lt;br /&gt;
| 3z5jnirlccgxzoxc6zwkcgwj66bugvqplzf6z2iyd5oxifiaorhnanqd.onion:9999&lt;br /&gt;
| [https://github.com/refund-agent2 refund-agent2]&lt;br /&gt;
| [[Matrix bisq.chat |  @refund-agent2:envs.net]]&lt;br /&gt;
|-&lt;br /&gt;
| refundagent3&lt;br /&gt;
| yjlcxr6rho6zkpecwdp3vlpduzcl7i6cbgaquvxqmvsbw3dnheus6qad.onion:9999&lt;br /&gt;
| [https://github.com/refundagent3 refundagent3]&lt;br /&gt;
| [[Matrix bisq.chat |  @refundagent3:imagisphe.re]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Use Cases]]&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Account_limits&amp;diff=4084</id>
		<title>Account limits</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Account_limits&amp;diff=4084"/>
		<updated>2025-11-07T12:57:30Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* How to get an account signed */  better wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Elevated '''account limits''' apply to fiat payment accounts in order to limit damage a malicious user can do while allowing honest users to start trading immediately with no KYC and utmost privacy.&lt;br /&gt;
&lt;br /&gt;
Altcoin accounts can trade 0.5 BTC right away, but all fiat payment account types have limits lower than 0.5 BTC to match their particular risk profiles (see [[Payment_methods#Fiat_payment_methods|this table]] for details). Some payment methods with chargeback risk implement a mechanism called ''account signing'' that restricts trading activity until a trader proves their integrity to further secure against foul play.&lt;br /&gt;
&lt;br /&gt;
To reduce the size of trades entering arbitration Bisq also sets new users trade limits to be 0.1 BTC. This is an additional limit to account limits but users can opt out of this limit at any time.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Which payment accounts are affected ==&lt;br /&gt;
&lt;br /&gt;
Only fiat payment methods are affected by elevated account limits. Altcoin accounts are only affected by the new user limits which can be opted out if necessary for allow every altcoin account to trade up to 0.5 BTC right away upon creating a payment account in Bisq.&lt;br /&gt;
&lt;br /&gt;
All fiat payment methods in all markets limit total trade size depending on the payment method's risk profile (see [[Payment_methods#Fiat_payment_methods|this table]] for details).&lt;br /&gt;
&lt;br /&gt;
Despite these limitations, chargebacks can still be possible for certain payment methods. Bisq reduces this risk with a mechanism called '''account signing'''.&lt;br /&gt;
&lt;br /&gt;
Account signing only applies to payment accounts that meet ''both'' of the following conditions:&lt;br /&gt;
* used in the following markets: USD, EUR, CAD, GBP, AUD, or BRL&lt;br /&gt;
* is subject to chargeback risk: SEPA, SEPA Instant, Interac e-Transfer, Zelle, Revolut, Chase QuickPay, Popmoney, MoneyBeam, Uphold, and any kind of bank transfer&lt;br /&gt;
&lt;br /&gt;
This means that all payment accounts that deal in currencies not listed above do ''not'' require account signing, even if they are subject to chargeback risk.&lt;br /&gt;
&lt;br /&gt;
== Account aging ==&lt;br /&gt;
&lt;br /&gt;
[[File:See-account-age.png|400px|thumb|See account age in the offer book.]]&lt;br /&gt;
&lt;br /&gt;
Account age is no longer used to determine trade size limits for most payment methods. It is still measured, however, and you can see a payment account's age in the offer book before taking an offer, but we caution against using it as a measure of integrity. Older accounts are not ''necessarily'' safer.&lt;br /&gt;
&lt;br /&gt;
'''Practically, this means that all payment methods on Bisq have full selling capability from the moment they are created.''' Selling limits no longer phase in over time.&lt;br /&gt;
&lt;br /&gt;
Some payment methods implement a variation of account aging called account signing whereby limits are increased in stages over a period of 60 days after signing. More about this below.&lt;br /&gt;
&lt;br /&gt;
If you're interested, details on the &amp;lt;code&amp;gt;AccountAgeWitness&amp;lt;/code&amp;gt; object that enables this aging mechanism are [https://docs.bisq.network/payment-account-age-witness.html here].&lt;br /&gt;
&lt;br /&gt;
== Account signing ==&lt;br /&gt;
&lt;br /&gt;
[[File:Account-signing-overview.png|thumb|right|A graphical overview of account signing.]]&lt;br /&gt;
&lt;br /&gt;
Account signing limits ''buying'' limits of risky fiat payment methods to {{MaxTradeSizeUnsigned}} until the trader has bought bitcoin from a seller with a signed payment account, and then gradually phases in full buying limits. Selling limits are unaffected.&lt;br /&gt;
&lt;br /&gt;
In a nutshell, this is how it works:&lt;br /&gt;
* Payment account is created in Bisq for risky payment method&lt;br /&gt;
** Buying is limited to {{MaxTradeSizeUnsigned}} BTC per trade until account is signed (see how [[#How_to_get_an_account_signed|below]])&lt;br /&gt;
* 30 days after signing, buying limits are increased to 50% of maximum&lt;br /&gt;
* 60 days after signing, maximum trade size is allowed&lt;br /&gt;
&lt;br /&gt;
Let's see how this works in practice by looking at an example. SEPA has a maximum trade size of 0.0624 BTC, and it requires account signing in order for to enable full trade limits. &lt;br /&gt;
&lt;br /&gt;
First let's observe what happens if a new SEPA account is never signed. Notice how buying limits never increase beyond {{MaxTradeSizeUnsigned}}, but selling 0.0624 BTC is allowed from day 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Time Since Creating SEPA Payment Account (Never Signed)&lt;br /&gt;
! Maximum Trade Size (Buy) &lt;br /&gt;
! Maximum Trade Size (Sell) &lt;br /&gt;
|-&lt;br /&gt;
| Day 0 &lt;br /&gt;
| {{MaxTradeSizeUnsigned}} &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 30 &lt;br /&gt;
| {{MaxTradeSizeUnsigned}} &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 60 &lt;br /&gt;
| {{MaxTradeSizeUnsigned}} &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 90 &lt;br /&gt;
| {{MaxTradeSizeUnsigned}} &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If that SEPA account manages to get signed on the same day it's created, it will see its {{MaxTradeSizeUnsigned}} limit increased on Day 30. Selling limits are unaffected.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Time Since Creating SEPA Payment Account &lt;br /&gt;
! Maximum Trade Size (Buy) &lt;br /&gt;
! Maximum Trade Size (Sell) &lt;br /&gt;
|-&lt;br /&gt;
| Day 0 - Account Signed &lt;br /&gt;
| {{MaxTradeSizeUnsigned}} &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 30 &lt;br /&gt;
| 0.03125 BTC &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 60 &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 90 &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
But if that SEPA account isn't signed until Day 30, it won't see its limits lifted until Day 60. Again, selling limits are unaffected.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Time Since Creating SEPA Payment Account &lt;br /&gt;
! Maximum Trade Size (Buy) &lt;br /&gt;
! Maximum Trade Size (Sell) &lt;br /&gt;
|-&lt;br /&gt;
| Day 0 &lt;br /&gt;
| {{MaxTradeSizeUnsigned}} &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 30 - Account Signed &lt;br /&gt;
| {{MaxTradeSizeUnsigned}}&lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 60 &lt;br /&gt;
| 0.0325 BTC &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|-&lt;br /&gt;
| Day 90 &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
| 0.0624 BTC &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How to get an account signed ===&lt;br /&gt;
&lt;br /&gt;
Payment accounts that require signing cannot buy more than {{MaxTradeSizeUnsigned}} until 30 days ''after'' they are signed. Accounts can be signed with the following two methods.&lt;br /&gt;
&lt;br /&gt;
==== Buying BTC ====&lt;br /&gt;
To sign your account you have to buy BTC following these requirements:&lt;br /&gt;
* trade amount is greater than or equal to {{MinTradeSizeToBeSigned}} BTC and lesser than or equal to {{MaxTradeSizeUnsigned}}&lt;br /&gt;
* offer must be in a market that requires signing (USD, EUR, CAD, GBP, AUD, BRL)&lt;br /&gt;
* seller's account must have been signed for over 30 days at the time of the signing trade&lt;br /&gt;
&lt;br /&gt;
Through taking an offer you can make sure that the offer fulfills the requirements to sign your account. Making an offer could not sign your account, because taker could be unable to sign your account (signed since less than 30 days, or unsigned). &lt;br /&gt;
&lt;br /&gt;
The Bisq interface makes it easy to determine if an offer can help you get signed: simply '''look for buy offers with a check mark badge''':&lt;br /&gt;
&lt;br /&gt;
[[File:Good-bad-signing-asks.png|600px|thumb|left|Top offer won't get you signed. Bottom offer will get you signed.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the image above, the offer on top does not have a check mark, but the offer on the bottom does. And it's a valid size (i.e., between {{MinTradeSizeToBeSigned}} BTC and {{MaxTradeSizeUnsigned}}), so taking that offer and successfully completing the trade will result in a signed account.&lt;br /&gt;
&lt;br /&gt;
You can see your payment account's limits and signing status at &amp;lt;code&amp;gt;Accounts&amp;lt;/code&amp;gt; &amp;gt; &amp;lt;code&amp;gt;National Currency Accounts&amp;lt;/code&amp;gt;. Pick an account and look toward the bottom:&lt;br /&gt;
&lt;br /&gt;
[[File:Payment-account-signing-status.png|600px|thumb|left|Where to see your payment account's limits and signing status.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== With your own signed account ====&lt;br /&gt;
&lt;br /&gt;
Once you have 1 signed payment account, any new payment account you create that requires signing will be self-signed as long as it uses the '''exact same name''' as your previously signed account. The payment account can be of a different type (e.g. a signed SEPA account can self-sign a SEPA Instant account), but a payment account created with a name that is even slightly different will not be self-signed. &lt;br /&gt;
&lt;br /&gt;
Payment account types that don't require your full name cannot be self-signed (e.g. Revolut, which only requires an email address) and they cannot self-sign other payment accounts.&lt;br /&gt;
&lt;br /&gt;
Self-signed accounts are immediately signed, but limits are not immediately lifted. This is because they have an age of 0 days, so 30 days must pass for the {{MaxTradeSizeUnsigned}} limit to be lifted, and another 30 days must pass for full trading ability to take effect (see tables above).&lt;br /&gt;
&lt;br /&gt;
== Backing up and restoring payment accounts ==&lt;br /&gt;
&lt;br /&gt;
Once your payment accounts have accrued age and been signed, you won't want to give them up. With [[Backing_up_application_data|proper backups]], you won't have to—payment accounts can be restored if you ever have to remove/reinstall Bisq, move to another machine, etc.&lt;br /&gt;
&lt;br /&gt;
== User opt-out limits ==&lt;br /&gt;
&lt;br /&gt;
To reduce trades into arbitration for new users unfamiliar with Bisq, new users have a 0.1 BTC limit by default that can be opt-out of at any time. &lt;br /&gt;
&lt;br /&gt;
To access this limit go to Settings &amp;gt; Preferences&lt;br /&gt;
&lt;br /&gt;
[[File:Trade limits.png|frameless|left|Trade limit setting in Bisq that can opted out of or changed at any time]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shown above is the trade limit setting in Bisq that can opted out of or edited higher or lower at any time.&lt;br /&gt;
&lt;br /&gt;
If you opt of of this limit you will be given a pop up message informing you...&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Warn|Trading limits are set to reduce risk of costly disputes and losing funds for new users. Raise trading limits at your own risk. Every trader has their own pace, but it's recommended to complete at least 5 trades before raising trade limits.&lt;br /&gt;
&lt;br /&gt;
By raising trading limits you acknowledge to be familiar with the basic use of Bisq, like [[Backing_up_application_data|backing up your data]], [[rading_rules|trading rules]], [[Dispute_resolution|dispute resolution]], [[Table_of_penalties|penalties]] and [[User_support|where to find support]].}}&lt;br /&gt;
&lt;br /&gt;
Account signing limits are still applied to buy BTC with most National Account payment methods to reduce chargeback risk.&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Payment_methods&amp;diff=4083</id>
		<title>Payment methods</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Payment_methods&amp;diff=4083"/>
		<updated>2025-10-31T16:15:45Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: remove interac e-transfer link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;Bisq offers several '''payment methods''' to buy and sell bitcoin for fiat currencies or other cryptocurrencies.&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Note|'''Version Context:''' The details on this page, particularly regarding trade limits and account signing, primarily apply to trading on '''[[Bisq 1|Bisq v1]]'''.}}&lt;br /&gt;
&lt;br /&gt;
Every offer on Bisq designates a payment method for traders to settle payments. The Bisq software does not actually integrate with any payment methods—'''all non-bitcoin fund transfers are made outside of Bisq software'''.&lt;br /&gt;
&lt;br /&gt;
Unlike cryptocurrency transfers, many fiat payment transfers have limitations that require Bisq [[Bisq 1|v1]] to employ special measures like lower per-trade limits and [[Account_limits#Account_signing|account signing]] to encourage fair trades.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Fiat payment methods ==&lt;br /&gt;
&lt;br /&gt;
Fiat payment methods vary significantly in characteristics like chargeback risk, regional availability, transaction limits, fees, privacy, and verification speed. The primary consideration for supporting a method on Bisq is '''chargeback risk'''. Methods with easy chargebacks (like PayPal, Venmo, Cash App) are generally not supported.&lt;br /&gt;
&lt;br /&gt;
Suggestions for new payment methods, especially those enabling new markets, are welcome. See the criteria and process for adding methods [https://github.com/bisq-network/growth/issues/new?assignees=&amp;amp;labels=re%3Apayment-method&amp;amp;template=add_payment_method.md&amp;amp;title= here on GitHub], or discuss them on [https://bisq.chat Matrix] in the #payment-methods channel.&lt;br /&gt;
&lt;br /&gt;
Below is a list of fiat payment methods currently supported in Bisq v1.&lt;br /&gt;
&lt;br /&gt;
'''Note on Signing Requirement:''' Methods marked with an asterisk (*) '''do not''' require [[Account_limits#Account_signing|account signing]] to lift the initial low buying limit. All other listed fiat methods generally require signing.&lt;br /&gt;
&lt;br /&gt;
'''Note on Trade Limits:''' The maximum trade sizes listed below may not be available immediately for new payment accounts. Please refer to [[Account_limits]] for details on account aging and signing required to enable larger trade sizes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ Supported Fiat Payment Methods (Bisq v1)&lt;br /&gt;
|-&lt;br /&gt;
! Payment Method [* = Signing Not Required] !! Region !! Trading Period !! Per-Trade Limit (BTC) !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ACH]]* || USA || 5 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| Advanced Cash* || Global (BRL, EUR, GBP, KZT, RUB, UAH, USD) || 1 day || 0.5 || Not available in the USA.&lt;br /&gt;
|-&lt;br /&gt;
| Alipay* || China || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Amazon_eGift_card|Amazon eGift Card]]* || Global (AUD, CAD, EUR, GBP, INR, JPY, SAR, SEK, SGD, TRY, USD) || 1 day || 0.0625 || Check supported markets in [[Amazon_eGift_card|article]].&lt;br /&gt;
|-&lt;br /&gt;
| Australian PayID* || Australia || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Bizum]]* || Spain|| 1 day || 0.02 || Bizum limits: ~1000 EUR/trade, ~2000 EUR/day.&lt;br /&gt;
|-&lt;br /&gt;
| [[Capitual]]* || Global (BRL, EUR, GBP, USD) || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Cash by Mail]]* || Global || 8 days || 0.0625 || Follow [[Cash_by_Mail|instructions carefully]].&lt;br /&gt;
|-&lt;br /&gt;
| Cash Deposit* || Global || 4 days || 0.0625 || Check if payee bank allows 3rd party deposits.&lt;br /&gt;
|-&lt;br /&gt;
| [[CelPay]]* || Global (AUD, CAD, GBP, HKD, USD) || 1 day || 0.0625 || CelPay limit: ~$2,500/day.&lt;br /&gt;
|-&lt;br /&gt;
| Domestic Wire Transfer* || USA || 3 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Face-to-face_(payment_method)|Face-to-Face (F2F)]]* || Global || 4 days || 0.25 || See [[Face-to-face_(payment_method)|F2F article]] for guidance.&lt;br /&gt;
|-&lt;br /&gt;
| [[Faster Payments]]* || UK || 1 day || 0.0625 || See [[Faster_Payments|article]] for usage notes.&lt;br /&gt;
|-&lt;br /&gt;
| [[Faster_Payments_System_SBP|Faster Payments System (SBP)]]* || Russia || 1 day || 0.05 || &lt;br /&gt;
|-&lt;br /&gt;
| HalCash* || Spain || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| [[IMPS]]* || India || 1 day || 0.0625 || IMPS limit: ~1,000,000 INR/day.&lt;br /&gt;
|-&lt;br /&gt;
| Interac-e-Transfer || Canada || 1 day || 0.0625 || Interac Autodeposit is '''not''' supported.&lt;br /&gt;
|-&lt;br /&gt;
| Japan Zengin Furikomi* || Japan || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| MercadoPago || Argentina || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Monese]]* || Europe (GBP, EUR, RON) || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| MoneyBeam (N26) || Europe || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| MoneyGram* || Global || 4 days || 0.125 ||&lt;br /&gt;
|-&lt;br /&gt;
| National Bank Transfer || Global || 4 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Nequi]]*|| Colombia || 1 day || 0.0625 || Nequi limit: ~7,000,000 COP/month.&lt;br /&gt;
|-&lt;br /&gt;
| [[NEFT]]* || India || 1 day || 0.10 || NEFT limit: ~50,000 INR/transaction.&lt;br /&gt;
|-&lt;br /&gt;
| [[Paxum]]* || Global || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Paysera]]* || Global || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[PayTM]]* || India || 1 day || 0.0250 || PayTM limit: ~100,000 INR/transaction.&lt;br /&gt;
|-&lt;br /&gt;
| Perfect Money* || Global || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Pix]]*|| Brazil || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| Popmoney || USA || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| PromptPay* || Thailand || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Revolut]] || Global || 1 day || 0.0625 || See [[Revolut|article]] for usage notes.&lt;br /&gt;
|-&lt;br /&gt;
| [[RTGS]]* || India || 1 day || 0.10 || RTGS limits: Min 200,000 INR, Max 1,000,000 INR/transaction.&lt;br /&gt;
|-&lt;br /&gt;
| [[Satispay]]* || Italy || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[SEPA]] || Europe || 6 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[SEPA Instant]] || Europe || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Strike]]* || USA || 1 day || 0.0625 || Non-KYC Strike users have lower limits.&lt;br /&gt;
|-&lt;br /&gt;
| [[SWIFT]]* || Global || 7 days || 0.125 || &lt;br /&gt;
|-&lt;br /&gt;
| Swish* || Sweden || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Tikkie]]* || The Netherlands || 1 day || 0.0250 || Tikkie limit: ~2500 EUR/24 hours.&lt;br /&gt;
|-&lt;br /&gt;
| Transfer with Same Bank || Global || 2 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| Transfer from Specific Banks || Global || 4 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[US Postal Money Order]]* || USA || 8 days || 0.0625 || USPS limits: Max 1000 USD/order, check daily limits.&lt;br /&gt;
|-&lt;br /&gt;
| Uphold || Global || 1 day || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[UPI]]* || India || 1 day || 0.0250 || UPI limit: ~100,000 INR/transaction.&lt;br /&gt;
|-&lt;br /&gt;
| [[Verse]]* || Europe (EUR, SEK, HUF, DKK, PLN) || 1 day || 0.0625 || Verse limit: ~10,000 EUR/year.&lt;br /&gt;
|-&lt;br /&gt;
| WeChat Pay* || China || 1 day || 0.25 || &lt;br /&gt;
|-&lt;br /&gt;
| Western Union || Global || 4 days || 0.125 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Wise]]* || Global ('''non-USD''' trades) || 4 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Wise-USD]]* || Global ('''USD''' trades) || 4 days || 0.0625 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Zelle]] || USA || 4 days || 0.0625 || Check your bank's Zelle support &amp;amp; limits.&lt;br /&gt;
|}&lt;br /&gt;
=== Payment method guides ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=&amp;quot;150px&amp;quot;&amp;gt;&lt;br /&gt;
File:Payment-methods-advice-eur.png|EUR payment methods overview.&lt;br /&gt;
File:Payment-methods-advice-usd.png|USD payment methods overview.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Altcoin payment methods ==&lt;br /&gt;
&lt;br /&gt;
Bisq also supports trading Bitcoin against various cryptocurrencies, like XMR, ETH, ZEC, L-BTC or LTC. A full list is available on the [https://bisq.network/markets/ Bisq Network Markets page].&lt;br /&gt;
&lt;br /&gt;
Because cryptocurrency transfers are generally irreversible and fast, altcoin trades usually have higher limits (up to 0.5 BTC) available immediately, without the need for account aging or signing required for many fiat methods.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Supported Altcoin Payment Methods (Bisq v1)&lt;br /&gt;
|-&lt;br /&gt;
! Payment Method !! Trading Period !! Per-Trade Limit (BTC)&lt;br /&gt;
|-&lt;br /&gt;
| [[Altcoins]] || 1 day || 0.5&lt;br /&gt;
|-&lt;br /&gt;
| [[Altcoins Instant]] || 1 hour || 0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Warning for Instant Trades:''' Altcoins Instant trades require quick confirmation (within 1 hour). Remember to disable any open Instant offers (via `Portfolio` &amp;gt; `My Open Offers`) if you might be unavailable to complete the trade promptly.&lt;br /&gt;
&lt;br /&gt;
See the general Account setup process within Bisq for adding altcoin accounts.&lt;br /&gt;
&lt;br /&gt;
[[Category:Features]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Howto&amp;diff=4082</id>
		<title>Howto</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Howto&amp;diff=4082"/>
		<updated>2025-10-31T16:15:13Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: remove interac e-transfer reference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;List of short how-to guides for new Bisq users:&lt;br /&gt;
&lt;br /&gt;
1. Getting started&lt;br /&gt;
&lt;br /&gt;
*[[How to back up your Bisq wallet seed]]&lt;br /&gt;
*[[Set up a Revolut payment account]] &lt;br /&gt;
*[[Set up a SEPA payment account]] (EUR)&lt;br /&gt;
*[[Set up a Zelle payment account]] (USD)&lt;br /&gt;
*[[Set up a UK Faster Payments account]] (GBP)&lt;br /&gt;
*[[Set up a National bank transfer account]] (BRL)&lt;br /&gt;
*How to back up your payment accounts on Bisq&lt;br /&gt;
&lt;br /&gt;
2. Trade&lt;br /&gt;
&lt;br /&gt;
*[[How to buy BSQ on Bisq]]&lt;br /&gt;
*[[How to buy BTC on Bisq with EUR]]&lt;br /&gt;
*[[How to buy BTC on Bisq with CAD]]&lt;br /&gt;
*How to buy BTC on Bisq with USD&lt;br /&gt;
*[[How to buy ETH on Bisq]]&lt;br /&gt;
*[[How to buy USDT on Bisq]]&lt;br /&gt;
*[[How to buy XMR on Bisq]]&lt;br /&gt;
*[[How to buy BTC on Bisq with CNY]]&lt;br /&gt;
*[[How to buy BTC on Bisq with NGN]]&lt;br /&gt;
*[[How to buy BTC on Bisq with INR]]&lt;br /&gt;
*[[How to buy BTC on Bisq with ARS]]&lt;br /&gt;
*[[How to sell BSQ on Bisq]]&lt;br /&gt;
*[[How to sell BTC on Bisq with EUR]]&lt;br /&gt;
*How to sell BTC on Bisq with USD&lt;br /&gt;
*[[How to sell USDT on Bisq]]&lt;br /&gt;
*[[How to sell XMR on Bisq]]&lt;br /&gt;
*[[How to create an offer to buy BTC with EUR]]&lt;br /&gt;
*[[How to create an offer to sell BTC with EUR]]&lt;br /&gt;
&lt;br /&gt;
3. Contribute&lt;br /&gt;
*[[How to be a market maker on Bisq]]&lt;br /&gt;
*[[How to do arbitrage on Bisq]]&lt;br /&gt;
*[[How to do remittance on Bisq]]&lt;br /&gt;
*Educational resources&lt;br /&gt;
*Marketing&lt;br /&gt;
*How to be a developer on Bisq&lt;br /&gt;
*How to make a compensation request on Bisq&lt;br /&gt;
&lt;br /&gt;
4. DAO&lt;br /&gt;
*How to vote on the Bisq DAO&lt;br /&gt;
*How to make a proposal on the Bisq DAO&lt;br /&gt;
&lt;br /&gt;
==Bitcoin Wisdom==&lt;br /&gt;
*DON'T TRUST. VERIFY.&lt;br /&gt;
*Trusted Third Parties are security holes.&lt;br /&gt;
*Not your keys, not your coins.&lt;br /&gt;
*Vires in numeris.&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=How_to_buy_BTC_on_Bisq_with_CAD&amp;diff=4081</id>
		<title>How to buy BTC on Bisq with CAD</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=How_to_buy_BTC_on_Bisq_with_CAD&amp;diff=4081"/>
		<updated>2025-10-31T16:13:36Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: remove interac e-transfer reference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;First download, install Bisq and create a backup (copy seed words - see [[How to back up your Bisq wallet seed]]).&lt;br /&gt;
&lt;br /&gt;
Make sure you have a fiat payment account set up.&lt;br /&gt;
&lt;br /&gt;
1. On '''Market''' tab select CAD - Canadian Dollar&lt;br /&gt;
&lt;br /&gt;
2. Click on '''BUY BTC'''.&lt;br /&gt;
&lt;br /&gt;
3. Select an offer and click on '''TAKE OFFER'''.&lt;br /&gt;
&lt;br /&gt;
4. Review offer details including amount, price. Then click on '''NEXT STEP'''.&lt;br /&gt;
&lt;br /&gt;
5. Fund your trade (from Bisq wallet or external wallet).&lt;br /&gt;
&lt;br /&gt;
6. Click on '''CONFIRM TAKE OFFER'''.&lt;br /&gt;
&lt;br /&gt;
7. After 1 blockchain confirmation (~10 minutes) you will be prompted to initiate payment. Make a transfer to the seller using your fiat payment method, then click on '''PAYMENT STARTED'''.&lt;br /&gt;
&lt;br /&gt;
8. When the seller confirms payment received the trade is complete and you can '''withdraw your BTC'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*For more short guides see [[Howto]]. You can also find support on '''[https://bisq.chat Matrix]'''.&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4080</id>
		<title>Automatic backup script</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4080"/>
		<updated>2025-10-13T09:11:03Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The biggest issues for users happen when data files are lost or corrupted, leading to missing or borked trades, or unrecoverable Delayed Payout Transactions.&lt;br /&gt;
&lt;br /&gt;
Having an automated backup solution helps covering that risk, by removing the need to manually run a backup after every application state change (mainly &amp;quot;offer created&amp;quot;, &amp;quot;trade started&amp;quot;, &amp;quot;trade completed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Issues could still happen when a critical event occurs right after a state change was saved to disk, and before an automated backup was taken, but there are strategies to mitigate that possibility, which will be discussed.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Common requirements and backup strategy =&lt;br /&gt;
&lt;br /&gt;
All scripts require 7z compression (7-zip on Windows, p7zip-full on Linux, p7zip on MacOS).&lt;br /&gt;
&lt;br /&gt;
The provided code will backup all functional files in the data directory, leaving out non-unique files that the Bisq application will fetch/re-create autonomously, and compress them into a 7zip archive, keeping the number of last backups that you define, while deleting the oldest one(s) if the existing number of backups is higher.&lt;br /&gt;
&lt;br /&gt;
It is advised that you direct the backups to either an external drive, or a NAS, or an encrypted cloud storage.&lt;br /&gt;
&lt;br /&gt;
Depending on how bulletproof of a backup schedule you want, you can increase the number of backups to keep on disk to 10 or more (the size of each depends on the history of your instance, but it usually resides in a few tens of MB, often less) and the frequency the script runs with, for example every 1 or 2 hours.&lt;br /&gt;
&lt;br /&gt;
= Bisq1 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/home/YOURUSERNAME/.local/share/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
&amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
&amp;quot;BallotList&amp;quot;&lt;br /&gt;
&amp;quot;DisputeList&amp;quot;&lt;br /&gt;
&amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
&amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
&amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
&amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
&amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
&amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
&amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
&amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
&amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
&amp;quot;UserPayload&amp;quot;&lt;br /&gt;
&amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
&amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
&amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
&amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
&amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
&amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
&amp;quot;PeerList&amp;quot;&lt;br /&gt;
&amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
&amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
&amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;$SOURCE_DIR/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;$FOLDER_KEYS&amp;quot; &amp;quot;$FOLDER_WALLET&amp;quot;; do&lt;br /&gt;
  find &amp;quot;$SOURCE_DIR/$subfolder&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;$SOURCE_DIR/$FOLDER_TOR&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;$FOLDER_TOR_PATH&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;$FOLDER_TOR_PATH&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;$ARCHIVE_PATH&amp;quot; @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Inside this folder, create a new file named &amp;lt;code&amp;gt;bisq1backup.ps1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$SOURCE_DIR = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq\btc_mainnet&amp;quot;&lt;br /&gt;
$TARGET_FOLDER = &amp;quot;D:\BACKUPS\BISQ1&amp;quot;&lt;br /&gt;
$BACKUP_COUNT = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ARCHIVE_ROOT = &amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
$timestamp = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$BACKUP_FILE = &amp;quot;$ARCHIVE_ROOT$timestamp.7z&amp;quot;&lt;br /&gt;
$ARCHIVE_PATH = Join-Path $TARGET_FOLDER $BACKUP_FILE&lt;br /&gt;
&lt;br /&gt;
$SELECTED_FILES = @(&lt;br /&gt;
    &amp;quot;BsqSwapTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;BallotList&amp;quot;,&lt;br /&gt;
    &amp;quot;DisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;RefundDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;SequenceNumberMap&amp;quot;,&lt;br /&gt;
    &amp;quot;MyVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;OpenOffers&amp;quot;,&lt;br /&gt;
    &amp;quot;MyBlindVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;ClosedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MediationDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProposalList&amp;quot;,&lt;br /&gt;
    &amp;quot;MailboxMessageList&amp;quot;,&lt;br /&gt;
    &amp;quot;AccountAgeWitnessStore&amp;quot;,&lt;br /&gt;
    &amp;quot;PendingTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProofOfBurnList&amp;quot;,&lt;br /&gt;
    &amp;quot;PreferencesPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;UserPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;AddressEntryList&amp;quot;,&lt;br /&gt;
    &amp;quot;FailedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyReputationList&amp;quot;,&lt;br /&gt;
    &amp;quot;TempProposalStore&amp;quot;,&lt;br /&gt;
    &amp;quot;NavigationPath&amp;quot;,&lt;br /&gt;
    &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;,&lt;br /&gt;
    &amp;quot;IgnoredMailboxMap&amp;quot;,&lt;br /&gt;
    &amp;quot;PeerList&amp;quot;,&lt;br /&gt;
    &amp;quot;RemovedPayloadsMap&amp;quot;,&lt;br /&gt;
    &amp;quot;TradeStatistics3Store&amp;quot;,&lt;br /&gt;
    &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
$FOLDER_KEYS = &amp;quot;keys&amp;quot;&lt;br /&gt;
$FOLDER_WALLET = &amp;quot;wallet&amp;quot;&lt;br /&gt;
$FOLDER_TOR = &amp;quot;tor\hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$FILE_LIST = [System.IO.Path]::GetTempFileName()&lt;br /&gt;
&lt;br /&gt;
$SUBFOLDER_DB_PATH = Join-Path $SOURCE_DIR &amp;quot;db&amp;quot;&lt;br /&gt;
foreach ($file in $SELECTED_FILES) {&lt;br /&gt;
    $path = Join-Path $SUBFOLDER_DB_PATH $file&lt;br /&gt;
    if (Test-Path $path -PathType Leaf) {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $path&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach ($subfolder in @($FOLDER_KEYS, $FOLDER_WALLET)) {&lt;br /&gt;
    $dir = Join-Path $SOURCE_DIR $subfolder&lt;br /&gt;
    if (Test-Path $dir) {&lt;br /&gt;
        Get-ChildItem -Path $dir -File | ForEach-Object {&lt;br /&gt;
            Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$FOLDER_TOR_PATH = Join-Path $SOURCE_DIR $FOLDER_TOR&lt;br /&gt;
if (Test-Path $FOLDER_TOR_PATH -PathType Container) {&lt;br /&gt;
    Get-ChildItem -Path $FOLDER_TOR_PATH -File -Recurse | ForEach-Object {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -m0=lzma2 -mmt=on -spf $ARCHIVE_PATH @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Remove-Item $FILE_LIST&lt;br /&gt;
&lt;br /&gt;
Write-Output &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$backupFiles = Get-ChildItem -Path $TARGET_FOLDER -Filter &amp;quot;$ARCHIVE_ROOT*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
if ($backupFiles.Count -gt $BACKUP_COUNT) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($backupFiles.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $backupFiles | Select-Object -Skip $BACKUP_COUNT | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq1backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq1backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
Open the Terminal and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following code and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/Users/YOURUSERNAME/Library/Application\ Support/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/Volumes/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
  &amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
  &amp;quot;BallotList&amp;quot;&lt;br /&gt;
  &amp;quot;DisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
  &amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
  &amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
  &amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
  &amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
  &amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
  &amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
  &amp;quot;UserPayload&amp;quot;&lt;br /&gt;
  &amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
  &amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
  &amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
  &amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
  &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
  &amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
  &amp;quot;PeerList&amp;quot;&lt;br /&gt;
  &amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
  &amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
  &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;${SOURCE_DIR}/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;${FOLDER_KEYS}&amp;quot; &amp;quot;${FOLDER_WALLET}&amp;quot;; do&lt;br /&gt;
  find &amp;quot;${SOURCE_DIR}/${subfolder}&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;${SOURCE_DIR}/${FOLDER_TOR}&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;${FOLDER_TOR_PATH}&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;${FOLDER_TOR_PATH}&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;${ARCHIVE_PATH}&amp;quot; @&amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: ${BACKUP_FILE}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the backup every 8 hours, edit your crontab using&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /Users/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log 2&amp;gt;&amp;amp;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bisq2 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/home/YOURUSERNAME/.local/share/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/private&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/settings&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${TARGET_FOLDER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named scripts.&lt;br /&gt;
* Inside this folder, create a new file named bisq2backup.ps1.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$FolderToBackup = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq2\db&amp;quot;&lt;br /&gt;
$TargetFolder   = &amp;quot;D:\BACKUPS\BISQ2&amp;quot;&lt;br /&gt;
$BackupCount    = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ArchiveRoot = &amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
$Timestamp   = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$ArchiveName = &amp;quot;$ArchiveRoot$Timestamp.7z&amp;quot;&lt;br /&gt;
$TempArchive = Join-Path $env:TEMP $ArchiveName&lt;br /&gt;
$FinalArchive = Join-Path $TargetFolder $ArchiveName&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;`&amp;quot;$TempArchive`&amp;quot;&amp;quot; &amp;quot;`&amp;quot;$FolderToBackup\private`&amp;quot;&amp;quot; &amp;quot;`&amp;quot;$FolderToBackup\settings`&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Move-Item -Path $TempArchive -Destination $FinalArchive -Force&lt;br /&gt;
&lt;br /&gt;
$Archives = Get-ChildItem -Path $TargetFolder -Filter &amp;quot;$ArchiveRoot*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
&lt;br /&gt;
if ($Archives.Count -gt $BackupCount) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($Archives.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $Archives | Select-Object -Skip $BackupCount | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq2backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq2backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
Open the Terminal and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following code and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/Users/YOURUSERNAME/Library/Application Support/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/Volumes/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/private&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/settings&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${ARCHIVE_PATH}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the backup every 8 hours, edit your crontab using:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /Users/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq2backup.log 2&amp;gt;&amp;amp;1&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Bisq_2_mobile_applications&amp;diff=4079</id>
		<title>Bisq 2 mobile applications</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Bisq_2_mobile_applications&amp;diff=4079"/>
		<updated>2025-10-11T17:37:54Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: typo fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The mobile version of Bisq 2 allows you to access the [[Bisq Easy]] protocol from a smartphone, and it comes in two versions:&lt;br /&gt;
&lt;br /&gt;
* Bisq Easy full node&lt;br /&gt;
* Bisq 2 remote&lt;br /&gt;
&lt;br /&gt;
== Bisq Easy full node ==&lt;br /&gt;
&lt;br /&gt;
This is the full experience of Bisq Easy on mobile: the application acts as an autonomous node on the Bisq 2 p2p network, getting its own onion address and hosting all the features of the Bisq Easy trading protocol in your pocket.&lt;br /&gt;
It is tailored mostly for buyers, who:&lt;br /&gt;
* are completely new to Bitcoin and want to get their first satoshis, so they can use them to cover for the security deposit on [[Bisq 1]], in order to access a more advanced trading protocol, with larger liquidity and better prices&lt;br /&gt;
* do not own a desktop computer, or share it with other people, and prefer not to expose their trading&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* it will use more of your battery, because it has to manage the full p2p stack to be online&lt;br /&gt;
* you phone might kill the process after a while to free up resources, so you will need to start it again&lt;br /&gt;
&lt;br /&gt;
== Bisq 2 remote ==&lt;br /&gt;
&lt;br /&gt;
It works in a similar way to what a remote desktop does, since you need a running Bisq 2 instance on your desktop computer at home, or a headless instance on a VPS, or even some trusted third party who runs Bisq 2 and allows you to piggyback on his desktop connection.&lt;br /&gt;
It is the preferred option for sellers, or frequent buyers:&lt;br /&gt;
* lightweight if compared to the Bisq Easy full node version&lt;br /&gt;
* all the profile information and offer book activity is managed in a single place (your desktop computer) so access to trades can be transparently available on two different devices&lt;br /&gt;
* even if your phone kills its process, the current state will be preserved on the desktop application&lt;br /&gt;
* this will be the version where access to new protocols could be added in the future, for example the MuSig upgrade of the existing Bisq1 multisig protocol&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* you need a desktop instance running somewhere (this is the only downside, really)&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Bisq_2_mobile_applications&amp;diff=4078</id>
		<title>Bisq 2 mobile applications</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Bisq_2_mobile_applications&amp;diff=4078"/>
		<updated>2025-10-11T16:49:25Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: updated on henrik's input&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The mobile version of Bisq 2 allows you to access the [[Bisq Easy]] protocol from a smartphone, and it comes in two versions:&lt;br /&gt;
&lt;br /&gt;
* Bisq Easy full node&lt;br /&gt;
* Bisq 2 remote&lt;br /&gt;
&lt;br /&gt;
== Bisq Easy full node ==&lt;br /&gt;
&lt;br /&gt;
This is the full experience of Bisq Easy on mobile: the application acts as an autonomous node on the Bisq 2 p2p network, getting its own onion address and hosting all the features of the Bisq Easy trading protocol in your pocket.&lt;br /&gt;
It is tailored mostly for buyers, who:&lt;br /&gt;
* are completely new to Bitcoin and want to get their first satoshis, so they can use them to cover for the security deposit on [[Bisq 1]], in order to access a more advanced trading protocol, with larger liquidity and better prices&lt;br /&gt;
* do not own a desktop computer, or share it with other people, and prefer not to expose their trading&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* it will use more of your battery, because it has to manage the full p2p stack to be online&lt;br /&gt;
* you phone might kill the process after a while to free up resources, so you will need to start it again&lt;br /&gt;
&lt;br /&gt;
== Bisq 2 remote ==&lt;br /&gt;
&lt;br /&gt;
It works in a similar way to what a remote desktop does, since you need a running Bisq 2 instance on your desktop computer at home, or a headless instance on a VPN, or even some trusted third party who runs Bisq 2 and allows you to piggyback on his desktop connection.&lt;br /&gt;
It is the preferred option for sellers, or frequent buyers:&lt;br /&gt;
* lightweight if compared to the Bisq Easy full node version&lt;br /&gt;
* all the profile information and offer book activity is managed in a single place (your desktop computer) so access to trades can be transparently available on two different devices&lt;br /&gt;
* even if your phone kills its process, the current state will be preserved on the desktop application&lt;br /&gt;
* this will be the version where access to new protocols could be added in the future, for example the MuSig upgrade of the existing Bisq1 multisig protocol&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* you need a desktop instance running somewhere (this is the only downside, really)&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Bisq_2_mobile_applications&amp;diff=4077</id>
		<title>Bisq 2 mobile applications</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Bisq_2_mobile_applications&amp;diff=4077"/>
		<updated>2025-10-11T15:22:48Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: fixes and tweaks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The mobile version of Bisq 2 allows you to access the [[Bisq Easy]] protocol from a smartphone, and it comes in two versions:&lt;br /&gt;
&lt;br /&gt;
* Bisq Easy full node&lt;br /&gt;
* Bisq 2 remote&lt;br /&gt;
&lt;br /&gt;
== Bisq Easy full node ==&lt;br /&gt;
&lt;br /&gt;
This is the full experience of Bisq Easy on mobile: the application acts as an autonomous node on the Bisq 2 p2p network, getting its own onion address and hosting all the features of the Bisq Easy trading protocol in your pocket.&lt;br /&gt;
It is tailored mostly for buyers, who:&lt;br /&gt;
* are completely new to Bitcoin and want to get their first satoshis, so they can use them to cover for the security deposit on [[Bisq 1]], in order to access a more advanced trading protocol, with larger liquidity and better prices&lt;br /&gt;
* do not own a desktop computer, or share it with other people, and prefer not to expose their trading&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* it will use more of your battery, because it has to manage the full p2p stack to be online&lt;br /&gt;
* your phone will probably kill the process after a while to free up resources, so you will lose the current state&lt;br /&gt;
&lt;br /&gt;
== Bisq 2 remote ==&lt;br /&gt;
&lt;br /&gt;
It works in a similar way to what a remote desktop does, since you need a running Bisq 2 instance on your desktop computer at home, which will have to be turned on and connected, and will accept an incoming connection from the mobile remote app to make its features accessible.&lt;br /&gt;
It is the preferred option for sellers, or frequent buyers:&lt;br /&gt;
* lightweight if compared to the Bisq Easy full node version&lt;br /&gt;
* all the profile information and offer book activity is managed in a single place (your desktop computer) so access to trades can be transparently available on two different devices&lt;br /&gt;
* even if your phone kills its process, the current state will be preserved on the desktop application&lt;br /&gt;
* this will be the version where access to new protocols could be added in the future, for example the MuSig upgrade of the existing Bisq1 multisig protocol&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* you need a desktop computer always running and connected to the internet in order to use it (this is the only downside, really)&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Bisq_2&amp;diff=4076</id>
		<title>Bisq 2</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Bisq_2&amp;diff=4076"/>
		<updated>2025-10-11T15:18:44Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: add link to bisq 2 mobile&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bisq 2 is the successor to the original Bisq ([[Bisq 1|Bisq v1]]). It has been developed from the ground up to allow for multiple trade protocols to be accessed via a single decentralized exchange platform, and it also sports a proper mobile version, [[Bisq 2 mobile]]. &lt;br /&gt;
&lt;br /&gt;
At the initial launch of Bisq 2 will support only one trading protocol '[[Bisq Easy]]'. Over time more trading protocols will be added.&lt;br /&gt;
&lt;br /&gt;
Once the Bisq Multisig protocol is implemented in Bisq 2, the old version of Bisq can fade out. [[Bisq 1]] will still find its usage as Bisq DAO management tool and for BSQ-BTC trading.&lt;br /&gt;
&lt;br /&gt;
Similar to Bisq v1, Bisq 2 will be a decentralized bitcoin exchange that allows anyone to buy and sell bitcoin in exchange for national currencies or other cryptocurrencies.&lt;br /&gt;
&lt;br /&gt;
* Bisq 2 is a desktop application that works across platforms.&lt;br /&gt;
* Bisq 2 allows users to choose between multiple trading protocols to find the best fit for their preference. Aspects like privacy and security, convenience, costs and trade duration will differ and the user can make the choice. &lt;br /&gt;
* Bisq 2 is a peer-to-peer network that enables users to find people to trade with, make and take offers to buy and sell bitcoin, communicate with their trading peers and when necessary access support.&lt;br /&gt;
* Bisq 2 is privacy focused, no verified accounts or KYC will be required and run over the Tor network (as well as I2P in future).&lt;br /&gt;
* Bisq 2 is self custodial. Your keys are always under your control.&lt;br /&gt;
* Bisq 2 is open source (AGPL) and built and maintained by contributors who form the Bisq DAO.&lt;br /&gt;
&lt;br /&gt;
== Why Bisq 2? ==&lt;br /&gt;
&lt;br /&gt;
Bisq v1 is a powerful tool for bitcoiners that want to be able to buy and sell bitcoin peer to peer whilst maintaining their privacy, not having to undergo arduous KYC processes, and keeping control of their bitcoin.&lt;br /&gt;
&lt;br /&gt;
Bisq v1 was launched on mainnet in April 2016 and whilst there has been constant improvements to the trade protocol and user interface over the years it was designed from the outset to support only one trade protocol. As bitcoin has developed and Bisq user base has grown there has been an obvious need for Bisq to expand its offerings to offer more options to its users for example trades over lightning and access via mobile devices. Bisq 2 is the first step to develop something that is built from the ground up to be more accessible to users and provide access to multiple trading protocols that can expand over time.&lt;br /&gt;
&lt;br /&gt;
The core benefits of Bisq 2 are:&lt;br /&gt;
&lt;br /&gt;
=== Multiple Trade Protocols ===&lt;br /&gt;
&lt;br /&gt;
Bisq 2 will offer a variety of [[trade protocols]] for users. Each trade protocol will come with its own benefits and tradeoffs. Having multiple protocols allows users to choose what trade protocols are best for them based on; convenience, security, miner costs, trade fees, privacy, available support etc. All trade protocols can be accessed independently and users can switch between protocols for different trades. &lt;br /&gt;
&lt;br /&gt;
The follow trade protocols are on the roadmap:&lt;br /&gt;
&lt;br /&gt;
* [[Bisq_Easy|Bisq Easy]]: Reputation based trading with no security deposit requirements (included in the initial launch)&lt;br /&gt;
* Bisq Multisig: Similar to the current trade protocol used by Bisq 1 but with some improvements&lt;br /&gt;
&lt;br /&gt;
* Submarine Swaps: Atomic swap of LN BTC &amp;lt;-&amp;gt; mainnet BTC&lt;br /&gt;
&lt;br /&gt;
* Liquid Submarine Swaps: Atomic swap of LN BTC &amp;lt;-&amp;gt; Liquid BTC&lt;br /&gt;
&lt;br /&gt;
* Liquid Multisig: Bisq Multisig ported to Liquid network with faster confirmation, lower fees and better privacy (confidential transactions)&lt;br /&gt;
&lt;br /&gt;
* Bisq Lightning: LN BTC &amp;lt;-&amp;gt; Fiat (chain of multiple protocols: Liquid Submarine Swaps, Liquid Multisig)&lt;br /&gt;
* Liquid Swaps: Atomic swap of Liquid BTC &amp;lt;-&amp;gt; Liquid assets like L-USDT&lt;br /&gt;
&lt;br /&gt;
* BSQ Swaps: Atomic swap of BSQ &amp;lt;-&amp;gt; BTC&lt;br /&gt;
* Monero Swaps: Cross chain atomic swap of BTC &amp;lt;-&amp;gt; XMR&lt;br /&gt;
&lt;br /&gt;
Find out more about the [[Trade_Protocols|trade protocols]] Bisq 2 will use.&lt;br /&gt;
&lt;br /&gt;
=== Multiple privacy networks ===&lt;br /&gt;
Bisq 2 will support multiple privacy networks. Initially it will only support Tor but I2P support is already implemented but in an experimental state. Upcoming privacy networks like Nym could be added in future if they fit the requirements.&lt;br /&gt;
&lt;br /&gt;
Having multiple networks adds resilience in case one network has availability issues (as it happened multiple times with Tor when DoS attacks decreased the Tor network stability and with that Bisq's availability and stability).&lt;br /&gt;
&lt;br /&gt;
The P2P network has also a built in DoS protection using Proof of Work and comes with many improvements compared to the Bisq 1 P2P network.&lt;br /&gt;
&lt;br /&gt;
===Multiple Identities ===&lt;br /&gt;
&lt;br /&gt;
Bisq 1 used a single onion address and key pair which represent the user's identity. Bisq 2 will allow users to create multiple identities, giving the user more control and better privacy. The user can choose between the highest level of convenience and use just one global identity for all interactions (like Bisq 1) or at the other extreme use a separate identity for any type of interaction (e.g. use a different identity for each trade as well as for each chat room). And anything in between (separating fiat and altcoin trades,...).&lt;br /&gt;
&lt;br /&gt;
Find out more about how Bisq 2 manages [[Identity|identities]].&lt;br /&gt;
&lt;br /&gt;
=== Multiple applications ===&lt;br /&gt;
&lt;br /&gt;
The reference implementation will be the Bisq 2 JavaFx desktop application.&lt;br /&gt;
&lt;br /&gt;
But there is also ongoing work on a HTML interface with a headless application to be used on personal Node projects like Start9, Umbrel, MyNode,...&lt;br /&gt;
&lt;br /&gt;
Beside that there will be a REST API (useful for trading bots,...).&lt;br /&gt;
&lt;br /&gt;
Bisq Easy can be implemented as a mobile app (at least for Android there are no conceptual or technical hurdles).&lt;br /&gt;
&lt;br /&gt;
=== Multiple wallets ===&lt;br /&gt;
&lt;br /&gt;
At launch time Bisq 2 will not include a wallet, but work is underway to support multiple wallet options.&lt;br /&gt;
&lt;br /&gt;
Bitcoin core as a full wallet is already implemented (but not exposed in the UI). For users who do not want to run a full Bitcoin node, there will be a light wallet option. Currently Electrum is implemented but we might change to another solution.&lt;br /&gt;
&lt;br /&gt;
For the different trade protocols there will be the specific wallets required. E.g. for Liquid the Elements wallet is already integrated. For Monero Swaps we need to provide an interface for using the Monero wallet. Find out more about the [[Bisq_2_Wallet|Bisq 2 wallet]].&lt;br /&gt;
&lt;br /&gt;
=== Bonded Roles ===&lt;br /&gt;
&lt;br /&gt;
The contributors providing the resources and infrastructure for Bisq 2 will require their roles to be bonded. This concept was also used in Bisq 1 but as it was not strictly enforced by the system, not all roles are secured by bonds as it was envisioned. In Bisq 2 having set up a BSQ bond is mandatory for most roles and node operators and enforced by the system.&lt;br /&gt;
&lt;br /&gt;
Find out more about the [[Bisq_2_Roles|Bisq 2 roles]].&lt;br /&gt;
&lt;br /&gt;
== Bisq 1 vs Bisq 2 ==&lt;br /&gt;
&lt;br /&gt;
When Bisq 2 is launched it will initially only use the one trade protocol '[[Bisq Easy]]' therefore the differences are based on a 2-of-2 multisig protocol (Bisq 1) vs a reputation based trade protocol (Bisq Easy).&lt;br /&gt;
&lt;br /&gt;
== Bisq Easy ==&lt;br /&gt;
&lt;br /&gt;
Bisq Easy was designed for new Bitcoin users who have not yet purchased Bitcoin and therefore cannot use Bisq 1 due the requirements of the security deposit. A lot of effort was put into making it as simple to use as possible.&lt;br /&gt;
&lt;br /&gt;
Bisq Easy tries to replicate the experience of a novice Bitcoiner visiting a Bitcoin meetup and getting a gentle and friendly introduction into the Bitcoin world as well as the opportunity to purchase their first Bitcoin from a helpful peer. This is inspired by the famous Satoshi Squares (early days informal Bitcoin meetups), which was also the initial name inspiration for Bitsquare - the previous brand name of Bisq.&lt;br /&gt;
&lt;br /&gt;
The seller is expected to be an experienced Bitcoin and Bisq user and to have built up a reputation. The seller should be helpful and serve as guide through the newbie's first Bitcoin trade.&lt;br /&gt;
&lt;br /&gt;
Bisq Easy tries to be a much more social experience as it is the case on Bisq 2. It also provides a &amp;quot;learn&amp;quot; section where newbies can learn about important topics like wallets, privacy and security. The various sections for chat rooms should also boost the social and communicative aspect of Bisq Easy.&lt;br /&gt;
&lt;br /&gt;
=== Main differences for BTC buyers === &lt;br /&gt;
&lt;br /&gt;
Initially when Bisq 2 is launched the difference between versions will be that Bisq 2 will allow for users to buy bitcoin with no security deposit, no trade fees and no miner fees. Whereas, Bisq 1 will allow users to buy bitcoin with a security deposit and incur trade fees and miner costs.&lt;br /&gt;
&lt;br /&gt;
The tradeoff for Bisq 2 is that the security of the trade will be based on seller reputation as opposed to Bisq 1 where the security of the trade is based on bitcoin collateral secured in the multisig. &lt;br /&gt;
&lt;br /&gt;
Therefore, Bisq 2 will be cheaper and more convenient to trade for bitcoin buyers but at the cost of less robust security than Bisq 1. This is opposed to Bisq 1 that will be more secure but also more expensive, in terms of trade and miner fees, and less convenient for bitcoin buyers. &lt;br /&gt;
&lt;br /&gt;
Bisq 2 will initially be more suitable for users wanting to complete trades for small amounts of bitcoin, whereas, Bisq 1 will continue to be suitable for users wanting to complete trades for larger amounts of bitcoin.&lt;br /&gt;
&lt;br /&gt;
=== Main differences for BTC sellers === &lt;br /&gt;
&lt;br /&gt;
Initially when Bisq 2 is launched the difference between versions will be that Bisq 2 will allow users to sell bitcoin with no security deposit, no trade fees and no security deposit. Whereas, Bisq 1 will allow users to sell bitcoin with a security deposit and incur trade fees and miner costs.&lt;br /&gt;
&lt;br /&gt;
Sellers on Bisq 2 will be expected to build their reputation. This can be done in multiple ways but to achieve a high reputation they will need to either burn BSQ and / or create a BSQ bond that locks in a specific amount of BSQ for a specified length of time.&lt;br /&gt;
&lt;br /&gt;
The first iteration of Bisq 2 will have more buyers than sellers. That means a small number of sellers will be servicing the buyers. Bitcoin sellers on Bisq 2 will be required to make a judgement on how best to achieve their reputation and what the cost of doing so will involve. Bitcoin seller's using Bisq 2 will also need to account for the fact that bitcoin buyers are not putting down a security deposit for their trades so there will likely be a higher trade abandonment than in Bisq 1.&lt;br /&gt;
&lt;br /&gt;
It is expected that some bitcoin sellers currently active on Bisq 1 may choose to experiment with Bisq 2, and the number of buyers and sellers on Bisq 2 will grow over time.&lt;br /&gt;
&lt;br /&gt;
As in Bisq 1 seller's will be able to choose the price above or below market they wish to sell their bitcoin for.&lt;br /&gt;
&lt;br /&gt;
Due to the requirements on bonds and the potential higher effort on communication with a newbie Bitcoiner, the price premium can be expected to be much higher than in Bisq 1 (maybe 10-15% above market). The Seller is the one who sets the price.&lt;br /&gt;
&lt;br /&gt;
== How Bisq 2 keeps data private ==&lt;br /&gt;
&lt;br /&gt;
Bisq 2 achieves data privacy for users in the same way as Bisq 1:&lt;br /&gt;
&lt;br /&gt;
* Using Bisq requires no registration or centralized identity verification&lt;br /&gt;
* Every Bisq application connects to the Bisq network with a Tor hidden service (as well as I2P in future)&lt;br /&gt;
* Bisq has no central servers or databases to record data&lt;br /&gt;
* Data is encrypted such that trade details are readable only by counter-parties&lt;br /&gt;
&lt;br /&gt;
== How Bisq 2 resists censorship ==&lt;br /&gt;
&lt;br /&gt;
Bisq 2 achieves censorship resistance in the same way as Bisq 1:&lt;br /&gt;
&lt;br /&gt;
* Bisq’s network is a fully distributed P2P network, and thus difficult to shut down&lt;br /&gt;
* Bisq’s network is built on top of Tor (I2P), and thus inherits Tor’s own censorship resistance&lt;br /&gt;
* Bisq is an open source project and a DAO, not a company; it is not incorporated, and thus cannot be dis-incorporated&lt;br /&gt;
&lt;br /&gt;
== Advanced configurations for Bisq 2 ==&lt;br /&gt;
&lt;br /&gt;
For users that want to tinker with the default config setting. Bisq 2 supports users to add a config file in the data directory which overrides the default config.&lt;br /&gt;
&lt;br /&gt;
This can be useful instead of dealing with command line options. Command-line options override values set in the configuration file.&lt;br /&gt;
&lt;br /&gt;
For more info see the GitHub pull request [https://github.com/bisq-network/bisq2/pull/2201 here].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Download and verify ===&lt;br /&gt;
&lt;br /&gt;
Bisq2 can be downloaded [https://bisq.network/downloads/ here]. Before installing software that manages your funds, you should always verify the installer has not been tampered with, to avoid the risk of losing funds due to a compromised download.&lt;br /&gt;
&lt;br /&gt;
To import the key in Linux and MacOS:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;curl https://bisq.network/pubkey/E222AA02.asc | gpg --import &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GPG will return &amp;quot;This key is not certified with a trusted signature!&amp;quot;, this is normal (see https://serverfault.com/questions/569911/how-to-verify-an-imported-gpg-key for background information what it means)&lt;br /&gt;
&lt;br /&gt;
To verify the installer against the signature:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;gpg --digest-algo SHA256 --verify BINARY{.asc*,}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace BINARY with the name of the file you downloaded.&lt;br /&gt;
&lt;br /&gt;
In Windows you can import the key, and subsequently verify the installer, by using [https://www.gpg4win.org/download.html Kleopatra].&lt;br /&gt;
&lt;br /&gt;
=== Known issues with installation ===&lt;br /&gt;
&lt;br /&gt;
'''MacOS'''&lt;br /&gt;
&lt;br /&gt;
Notarization was removed from the build pipeline because of the risk of Apple certification revocation ([https://github.com/bisq-network/bisq/discussions/6341 GitHub issue]). Unfortunately this will require extra steps when installing Bisq on macOS.&lt;br /&gt;
&lt;br /&gt;
Please follow the guide at https://support.apple.com/en-us/HT202491 in the section &amp;quot;If you want to open an app that hasn’t been notarized or is from an unidentified developer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you are using macOS Ventura (13.0+) you need to execute the following in your terminal to be able to start Bisq 2:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo xattr -rd com.apple.quarantine /Applications/Bisq2.app&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will be prompted to enter your password to execute the command as super user, and this should allow you to start Bisq 2 normally.&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&lt;br /&gt;
The developer code signing was removed for the same reason as above. You can ignore the warning after having verified the installer.&lt;br /&gt;
&lt;br /&gt;
There are known issues with antivirus software: Bisq or Tor processes could be prevented from running, files could get deleted in the data directory [2] or the application directory [1]), or startup could be delayed to the point that Tor is terminated, and a lockfile is left behind preventing Bisq from being started again (this requires you to restart Windows in order to remove the lockfile). These issues are currently being evaluated and addressed.&lt;br /&gt;
&lt;br /&gt;
Windows suffers from a much wider attack surface compared to Linux or OSX, please consider using a different operating system when dealing with cryptocurrencies.&lt;br /&gt;
&lt;br /&gt;
[1] Application directory (contains application installation files): C:\Users&amp;lt;username&amp;gt;\AppData\Local\Bisq2&lt;br /&gt;
&lt;br /&gt;
[2] Data directory (contains all Bisq data): C:\Users&amp;lt;username&amp;gt;\AppData\Roaming\Bisq2&lt;br /&gt;
&lt;br /&gt;
'''Linux''' &lt;br /&gt;
&lt;br /&gt;
Debian users: if you have issues starting Bisq, run &amp;lt;code&amp;gt;/opt/bisq2/bin/Bisq2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your Linux distribution does not support .deb files please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
cd ~/Downloads&lt;br /&gt;
&lt;br /&gt;
mkdir tmp&lt;br /&gt;
&lt;br /&gt;
cd tmp&lt;br /&gt;
&lt;br /&gt;
ar x ../Bisq-64bit-2.1.2.deb&lt;br /&gt;
&lt;br /&gt;
sudo tar Jxvf data.tar.xz&lt;br /&gt;
&lt;br /&gt;
sudo cp -rp opt/Bisq2 /opt/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above is not tested in all distributions, if you encounter issues please report them [https://github.com/bisq-network/bisq2/issues here].&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Bisq_2_mobile_applications&amp;diff=4075</id>
		<title>Bisq 2 mobile applications</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Bisq_2_mobile_applications&amp;diff=4075"/>
		<updated>2025-10-11T15:17:18Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: second stump&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The mobile version of Bisq 2 allows to access the [[Bisq Easy]] protocol from a smartphone, and it comes in two versions:&lt;br /&gt;
&lt;br /&gt;
* Bisq Easy full node&lt;br /&gt;
* Bisq 2 remote&lt;br /&gt;
&lt;br /&gt;
== Bisq Easy full node ==&lt;br /&gt;
&lt;br /&gt;
This is the full experience of Bisq Easy on mobile: the application acts as an autonomous node on the Bisq 2 p2p network, getting its own onion address and hosting the feature of the Bisq Easy trading protocol in your pocket.&lt;br /&gt;
It is tailored mostly for buyers, who:&lt;br /&gt;
* are completely new to Bitcoin and want to get their first satoshis, so they can use them to cover for the security deposit on [[Bisq 1]], in order to access a stronger trading protocol, with larger liquidity and better prices&lt;br /&gt;
* do not own a desktop computer, or share it with other people, and prefer not to expose their trading&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* it will use more of your battery, because it has to manage the full p2p stack to be online&lt;br /&gt;
* your phone will probably kill the process after a while to free up resources, so you will lose the current state&lt;br /&gt;
&lt;br /&gt;
== Bisq 2 remote ==&lt;br /&gt;
&lt;br /&gt;
It works in a similar way to what a remote desktop does, since you need a running Bisq 2 instance on your home desktop computer, which will have to be turned on and connected, and will accept an incoming connection from the mobile remote app to make its features accessible.&lt;br /&gt;
It is the preferred option for sellers, or frequent buyers:&lt;br /&gt;
* lightweight if compared to the Bisq Easy full node version&lt;br /&gt;
* all the profile information and offerbook activity is managed in a single place (your desktop computer) so access to trades can be transparenly available on two different devices&lt;br /&gt;
* this will be the version where access to new protocols could be added in the future, for example the MuSig improvement of the existing Bisq1 multisig protocol&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* you need a desktop computer always running and connected to the internet in order to use it (this is the only downside, really)&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Bisq_2_mobile_applications&amp;diff=4074</id>
		<title>Bisq 2 mobile applications</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Bisq_2_mobile_applications&amp;diff=4074"/>
		<updated>2025-10-11T15:11:41Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: First stump&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The mobile version of Bisq 2 allows to access the [[Bisq Easy]] protocol from a smartphone, and it comes in two versions:&lt;br /&gt;
&lt;br /&gt;
* Bisq Easy full node&lt;br /&gt;
* Bisq 2 remote&lt;br /&gt;
&lt;br /&gt;
== Bisq Easy full node ==&lt;br /&gt;
&lt;br /&gt;
This is the full experience of Bisq Easy on mobile: the application acts as an autonomous node on the Bisq 2 p2p network, getting its own onion address and hosting the feature of the Bisq Easy trading protocol in your pocket.&lt;br /&gt;
It is tailored mostly for buyers, who:&lt;br /&gt;
* are completely new to Bitcoin and want to get their first satoshis, so they can use them to cover for the security deposit on [[Bisq 1]], in order to access a stronger trading protocol, with larger liquidity and better prices&lt;br /&gt;
* do not own a desktop computer, or share it with other people, and prefer not to expose their trading&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* it will use more of your battery, because it has to manage the full p2p stack to be online&lt;br /&gt;
* your phone will probably kill the process after a while to free up resources, so you will lose the current state&lt;br /&gt;
&lt;br /&gt;
== Bisq 2 remote ==&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=SEPA&amp;diff=4072</id>
		<title>SEPA</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=SEPA&amp;diff=4072"/>
		<updated>2025-09-04T11:44:30Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* How do I sell BTC with my SEPA account? */ fixed BTC/BIC typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''SEPA''' is a payment method used in Bisq for buying and selling BTC for Euros (EUR). SEPA is the most common way people in the EU send and receive payments to each other via their banks.&lt;br /&gt;
&lt;br /&gt;
SEPA payments usually take a couple of working days to complete, but can take up to 6 days depending on weekends and public holidays.&lt;br /&gt;
&lt;br /&gt;
== Where can I find out more about SEPA? ==&lt;br /&gt;
&lt;br /&gt;
Here's a list of SEPA resources:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Single_Euro_Payments_Area SEPA Wikipedia Page]&lt;br /&gt;
* [https://www.europeanpaymentscouncil.eu/ SEPA regulator]&lt;br /&gt;
&lt;br /&gt;
== What countries are available for SEPA? ==&lt;br /&gt;
&lt;br /&gt;
SEPA payments are available to most people in Europe. All EU users and some additional European countries can benefit from this service.&lt;br /&gt;
&lt;br /&gt;
== What currencies are available for SEPA? ==&lt;br /&gt;
&lt;br /&gt;
SEPA allows peer to peer payments of:&lt;br /&gt;
&lt;br /&gt;
* Euros (EUR)&lt;br /&gt;
&lt;br /&gt;
== What is the maximum trading duration for SEPA? ==&lt;br /&gt;
&lt;br /&gt;
The maximum trade time is 6 days. Generally, SEPA payments will be completed within 2 working days. SEPA payments are usually not processed on weekends or bank holidays.&lt;br /&gt;
&lt;br /&gt;
== What is the maximum BTC limit for a SEPA trade? ==&lt;br /&gt;
&lt;br /&gt;
{{MaxTradeSizeBisq1}}.&lt;br /&gt;
&lt;br /&gt;
== Is SEPA a payment method that can be signed? ==&lt;br /&gt;
&lt;br /&gt;
Yes, SEPA payment accounts on Bisq require [[Account_limits|signing]] to lift limits to above {{MaxTradeSizeUnsigned}}. &lt;br /&gt;
&lt;br /&gt;
== How do I set up a SEPA account? ==&lt;br /&gt;
&lt;br /&gt;
SEPA is supported by all EU-based banks, some EU-based payment providers, as well as some non-EU European banks and payment providers.&lt;br /&gt;
&lt;br /&gt;
== How do I add a SEPA account as a payment method in Bisq? ==&lt;br /&gt;
&lt;br /&gt;
It is easy to add your SEPA account to Bisq.&lt;br /&gt;
&lt;br /&gt;
# Go to the top menu in SEPA and select Account. &lt;br /&gt;
# Then select National Currency Accounts. &lt;br /&gt;
# Click add new account&lt;br /&gt;
# Select SEPA&lt;br /&gt;
# Complete the details&lt;br /&gt;
# Choose to use a custom account name this helps makes it easier for you to manage multiple payment methods in Bisq (this will be visible only to you, for example: SEPA - EUR - Jan Franco&lt;br /&gt;
# Click save new account&lt;br /&gt;
&lt;br /&gt;
Make sure all the details are correct when you add.&lt;br /&gt;
&lt;br /&gt;
Make sure to include both your Name as shown by the bank when you send payment (eg Jan Franco, or Franco. Jan), your IBAN and BIC number.&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Warn|Revolut SEPA accounts are not allowed on Bisq due to poor acceptance by other banks}}&lt;br /&gt;
&lt;br /&gt;
== How do I buy BTC with my SEPA account? ==&lt;br /&gt;
&lt;br /&gt;
You can buy BTC with SEPA on Bisq in 2 ways:&lt;br /&gt;
&lt;br /&gt;
# Make an offer to buy BTC on the EUR market.&lt;br /&gt;
# Take an offer to buy BTC on the EUR market.&lt;br /&gt;
&lt;br /&gt;
When the offer is confirmed, Bisq will provide you with the BTC seller's SEPA details for you to complete the payment. You should send the payment immediately and confirm you have done so in Bisq by clicking 'payment started'.&lt;br /&gt;
&lt;br /&gt;
If you have the option to include a payment reference, please leave it blank. If your bank requires one, please just use your name that matches your bank account.&lt;br /&gt;
&lt;br /&gt;
Once the BTC seller receives your payment, they will confirm in Bisq, and your security deposit and your purchased trade amount will be available in your wallet.&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Warn|Please send payment only to the details provided by the BTC Seller in their Bisq account. Please leave the payment description blank.}}&lt;br /&gt;
&lt;br /&gt;
== How do I sell BTC with my SEPA account? ==&lt;br /&gt;
&lt;br /&gt;
You can sell BTC using SEPA on Bisq in two ways:&lt;br /&gt;
&lt;br /&gt;
# Make an offer to sell BTC on the EUR market.&lt;br /&gt;
# Take an offer to sell BTC on the EUR market.&lt;br /&gt;
&lt;br /&gt;
Once your offer is confirmed, Bisq will provide the BTC buyer with your SEPA details for completing the payment. The buyer should send the payment promptly and confirm in Bisq by clicking 'payment started'.&lt;br /&gt;
&lt;br /&gt;
Upon receiving the payment, confirm it in Bisq. After you've done this, the BTC buyer will receive their funds, and you will get your security deposit back.&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Warn|BTC Sellers should expect to receive payment from the name shown in the BTC Buyer's Bisq account. Not all banks will show the IBAN and BIC number the payment came from but the name must match.}}&lt;br /&gt;
&lt;br /&gt;
== Are there any limits for me to be aware of when using my SEPA account? ==&lt;br /&gt;
&lt;br /&gt;
Limits are set by your bank. Check with your bank what the limits allowed are. Most limits are about €50,000 per day. There is no minimum limit.&lt;br /&gt;
&lt;br /&gt;
== Are there any fees for me to be aware of when using my SEPA account? ==&lt;br /&gt;
&lt;br /&gt;
It is free to send and receive SEPA payments (as in the SEPA network itself do not charge fees to the operators). However, some banks might add changes to send or receive SEPA payments. If your bank has SEPA charges consider looking to open a new bank with fee free banking.&lt;br /&gt;
&lt;br /&gt;
== How does dispute resolution when trading with SEPA? ==&lt;br /&gt;
&lt;br /&gt;
If a dispute arises, the mediator may request the buyer to submit information proving they made the payment of the correct amount to the BTC Seller within the specified time frame.&lt;br /&gt;
&lt;br /&gt;
The mediator may also ask the seller to provide information verifying their account details are accurate. In cases where the BTC Buyer makes a payment late or of the wrong amount, the seller should be prepared to provide this information as well.&lt;br /&gt;
&lt;br /&gt;
For more information see [[dispute resolution]].&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Table_of_penalties&amp;diff=4071</id>
		<title>Table of penalties</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Table_of_penalties&amp;diff=4071"/>
		<updated>2025-08-29T09:48:30Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* Trade Penalties */ clarify seller's liability in correctly setting up his account&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Penalties''' help enforce the [[Trading_rules|Bisq Trading Rules]], ensuring the process is as safe and fair as possible. The penalties detailed on this page apply specifically to trading protocols that utilize '''[[Security deposit|security deposits]]''' as their primary security mechanism. Protocols that do not use security deposits, like [[Bisq 2|Bisq Easy]] which relies on [[Reputation]], will have different consequences or mechanisms for handling rule violations.&lt;br /&gt;
&lt;br /&gt;
Penalties are calculated as a percentage of the trade amount and are deducted '''primarily''' from the offending peer's [[Security deposit|security deposit]]. During the [[Dispute_Resolution_in_Bisq_1|dispute resolution process]], this amount may be offered as compensation to the counterparty. ''(Note: See below regarding 100% penalties potentially affecting the trade amount as well).''&lt;br /&gt;
&lt;br /&gt;
'''Important Notes:'''&lt;br /&gt;
* The actual penalty applied is '''up to''' the maximum percentage listed below, considering the [[Security deposit|security deposit]] size and the [[Mediator]]'s discretion.&lt;br /&gt;
* 100% penalties represent serious violations and usually mean losing the entire [[Security deposit|security deposit]] '''and potentially the trade amount itself'''.&lt;br /&gt;
* Penalties are '''not cumulative'''; if multiple violations occur, the single highest applicable penalty percentage is typically used.&lt;br /&gt;
* Peers experiencing issues are encouraged to communicate via [[Dispute_Resolution_in_Bisq_1|trader chat]]. If mutually agreed, they can suggest a specific penalty amount to the [[Mediator]].&lt;br /&gt;
* To incentivize resolution via mediation, any penalty proposal will generally leave the penalized peer with at least 5% of the trade amount (deducted from the deposit), encouraging acceptance over costly [[Arbitration|arbitration]].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Trade Penalties ==&lt;br /&gt;
&lt;br /&gt;
=== Penalties Applicable to Either Trader ===&lt;br /&gt;
These penalties can apply to either the BTC Buyer or the BTC Seller, depending on who commits the violation in a protocol using security deposits.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | Max Penalty (%) !! style=&amp;quot;width: 85%;&amp;quot; | Violation Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 100 || Fraud attempt (e.g., unauthorized debiting of peer's account, malicious code tampering).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 50 || Attempting to solicit off-platform communication by including contact information in offer details (e.g., in 'additional information' field for [[Cash by mail|Cash by Mail]] or [[Face-to-face (payment method)|Face-to-Face]] offers).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 25 || Not responding to [[Mediator]] inquiries within 48 hours during an active dispute resolution process.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 25 || Contacting trading peer outside of Bisq [[Dispute_Resolution_in_Bisq_1|trader chat]] without prior consent or a clear, necessary reason related to completing the payment.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 20 || Cancelling an accepted trade without a valid reason according to [[Trading_rules|Trading Rules]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 20 || Requesting payment be sent to, or insisting on paying from, a different account/name than agreed in the trade details, without [[Mediator]] approval.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 10 || Requiring excessive personal data from the counterparty beyond what is strictly necessary for the chosen payment method (e.g., demanding ID copies, proof of address unless intrinsic to the method like [[Cash by mail|Cash by Mail]]).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 10 || Abusive or disrespectful behavior towards the trading peer, [[Mediator]], or [[Arbitration|Arbitrator]] during the dispute process.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Penalties Applicable Specifically to the BTC Buyer ===&lt;br /&gt;
These penalties apply only to the trader buying BTC (sending fiat or altcoins) in a protocol using security deposits.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | Max Penalty (%) !! style=&amp;quot;width: 85%;&amp;quot; | Violation Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 100 || Payment chargeback after trade completion.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 25 || Using Bitcoin-related terms (e.g., &amp;quot;BTC&amp;quot;, &amp;quot;Bisq&amp;quot;, &amp;quot;Bitcoin&amp;quot;) in payment references/notes.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 25 || Paying from an account with a significantly different name (indicating a likely third party). ''Note: Seller may cancel trade without penalty.''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 20 || Payment sent is 72+ hours late (beyond the trade period).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 15 || Payment sent is 48-72 hours late.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 15 || Paying from an account with the correct name but different account details (e.g., wrong bank/account number) than specified for the payment method. ''Note: Seller may cancel trade without penalty.''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 10 || Payment sent is 24-48 hours late.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 10 || Using a similar but incorrect payment method that causes issues (e.g., sending via standard SWIFT when SEPA was agreed).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 10 || Paying the wrong fiat amount. ''Note: Buyer usually has the option to correct the amount within the trade window. Seller may cancel trade without penalty if not corrected promptly.''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 10 || Using an unagreed payment reference/memo, including potentially problematic neutral terms or the Trade ID itself.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 10 || Delayed altcoin payment due to Buyer choosing an extremely low network fee. ''Note: Penalty may be reduced if Buyer uses transaction acceleration techniques (RBF, CPFP).''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 5 || Payment sent is up to 24 hours late.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Penalties Applicable Specifically to the BTC Seller ===&lt;br /&gt;
These penalties apply only to the trader selling BTC (receiving fiat or altcoins) in a protocol using security deposits.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 15%;&amp;quot; | Max Penalty (%) !! style=&amp;quot;width: 85%;&amp;quot; | Violation Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 25 || Incorrect data in fiat account setup, used as-is by the buyer, causes buyer's bank to intervene (penalty amount depends on the nature of the bank's intervention)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 15 || BTC is released significantly outside the expected timeframe after payment confirmation, without valid reason.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Trading_rules&amp;diff=4070</id>
		<title>Trading rules</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Trading_rules&amp;diff=4070"/>
		<updated>2025-08-29T09:42:40Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* Common rules */ clarify rule to use real data in account creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Both Bisq traders must follow these '''trading rules''' to ensure smooth and successful trades.&lt;br /&gt;
&lt;br /&gt;
To trade on Bisq, you assume one of two roles, no matter what national currency or cryptocurrency you’re trading: you either ''buy bitcoin'' or ''sell bitcoin''.&lt;br /&gt;
&lt;br /&gt;
The rules below are '''default''' rules for every transaction. Offer makers sometimes specify their own additional terms for handling payments. For example, a seller using cash deposits might require a picture of a receipt torn in half with &amp;quot;NO REFUND&amp;quot; written on it. Face-to-face traders often specify terms about where and how to meet. &lt;br /&gt;
&lt;br /&gt;
Make sure you’re okay with an offer-maker’s terms '''before''' you accept an offer!&lt;br /&gt;
&lt;br /&gt;
Trade rules also help with the following:&lt;br /&gt;
&lt;br /&gt;
* Promoting good behavior from traders&lt;br /&gt;
* Penalizing bad behavior from traders&lt;br /&gt;
* Promoting good payment accounts of traders&lt;br /&gt;
* Penalizing bad payment accounts of traders&lt;br /&gt;
* Put the 'wrong doer' in a worse position and the person 'not at fault' in a better position&lt;br /&gt;
&lt;br /&gt;
= Common rules =&lt;br /&gt;
&lt;br /&gt;
=== Match Bisq account details with real data ===&lt;br /&gt;
&lt;br /&gt;
The data you enter during fiat account creation in Bisq must match with the real data associated to the fiat account (for example, but not limited to, filling in your full account holder name instead of placing just your initials).&lt;br /&gt;
&lt;br /&gt;
=== No requirement to reply in trader chat ===&lt;br /&gt;
&lt;br /&gt;
While using the available trade chat can be helpful to resolve issues directly among traders without the overhead of mediation, and being communicative is a good way to ease the process for new traders, there is no obligation to reply to a peer's messages.&lt;br /&gt;
&lt;br /&gt;
=== Do not communicate with your peer away from Bisq ===&lt;br /&gt;
&lt;br /&gt;
Using email addresses, phone numbers, and other means to contact traders is strongly discouraged. The trader chat feature built into Bisq should be used instead: not only is it more private, but the chat record can more easily be made available to mediators and arbitrators (useful in case a trader’s chat messages indicate they broke a rule). This includes advertising offers to sell BTC with a way to contact you, for example a website, Telegram user name, or email.&lt;br /&gt;
&lt;br /&gt;
In any case, it is forbidden to contact the peer using contacts obtained from their payment details, without their prior consent, or missing a compelling reason to do so.&lt;br /&gt;
&lt;br /&gt;
=== Be responsive during a dispute ===&lt;br /&gt;
&lt;br /&gt;
Traders are expected to reply within 48hrs to either mediators or arbitrators, and could lose the dispute based on unresponsiveness.&lt;br /&gt;
&lt;br /&gt;
Mediators may take up to 48 hours to respond to messages, and arbitrators may take up to 5 days to respond to messages.&lt;br /&gt;
&lt;br /&gt;
=== Do not change payment details once trade is in progress ===&lt;br /&gt;
&lt;br /&gt;
Once the deposit transaction is published, the trade is in progress, and its terms cannot be changed. Traders agreed to use the payment details specified in the trade contract.&lt;br /&gt;
&lt;br /&gt;
In the event of an unexpected circumstance (e.g. hitting a bank-imposed transfer limit, or a payment institution interfering with the transaction), traders can propose alternatives through trader chat or mediation, but the peer is not required to comply. It is each trader's responsibility to ensure that the payment account in their offer will work before an offer is taken.&lt;br /&gt;
&lt;br /&gt;
= Rules for bitcoin sellers =&lt;br /&gt;
&lt;br /&gt;
Whether making or taking an offer, bitcoin sellers put all the bitcoin they’re selling in the multisig escrow, so there’s less for them to do and fewer rules they need to follow.&lt;br /&gt;
&lt;br /&gt;
=== Click &amp;lt;code&amp;gt;Confirm payment&amp;lt;/code&amp;gt; after receiving payment ===&lt;br /&gt;
&lt;br /&gt;
Sellers have until the end of the maximum trade period to do so.&lt;br /&gt;
&lt;br /&gt;
[[Account_limits#Account_signing|Account signing]], introduced in Bisq v1.2, enables a seller with a signed payment account to sign a buyer’s payment account when they successfully receive a payment. For such trades, it is recommended that the seller take as long as possible (i.e., wait until close to the end of the trade period) to confirm receipt of payment to reduce the chance of a chargeback.&lt;br /&gt;
&lt;br /&gt;
=== Do not confirm payments with mismatching details ===&lt;br /&gt;
&lt;br /&gt;
Payer name, account numbers, payment method, institution, and other details of a payment should match the details in the trade contract. If there are any concerns that buyer's payment details do not match (e.g. wrong name, account number etc) payment should not be accepted.'''&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Warn|This is especially relevant for trades in which a signed seller trades with an unsigned buyer, because confirmation of payment receipt signs the buyer’s payment account. In case of such an issue, a dispute should be opened.}}&lt;br /&gt;
&lt;br /&gt;
= Rules for bitcoin buyers =&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Warn|To avoid unexpected issues, make sure you can actually carry out a payment with the payment method you’ve set up in Bisq. Examples: Wells Fargo doesn’t allow cash deposits into bank accounts not owned by the depositor, and Zelle has weekly and monthly transfer maximums that are easy to overlook. The software will warn you about known issues, but cannot possibly keep up with all the newest banking and money transfer rules.}}&lt;br /&gt;
&lt;br /&gt;
=== Make payment reasonably early within trade period ===&lt;br /&gt;
&lt;br /&gt;
Buyer should complete at a time such that the seller has enough time to acknowledge receipt of the payment before the trade period is over. Waiting until the very end of the trade period to make a payment is not advised, as then the seller cannot reasonably act in time to acknowledge receipt (also, it’s annoying). The lengths of trade periods vary based on [[Payment methods|payment method]].&lt;br /&gt;
&lt;br /&gt;
This is especially important for buyers with unsigned payment accounts trading with sellers with signed payment accounts. A seller will not want to confirm receipt of a payment made at the last minute from an untrusted account, so if you’re a buyer looking to get your payment account signed, you should make the payment ''as soon as possible''.&lt;br /&gt;
&lt;br /&gt;
Some payment methods include an option to cancel a payment after you have sent it eg Revolut and Interac e-Transfer. If you cancel payment without agreement with the seller or mediator you might end up being penalized for cancelling the trade.&lt;br /&gt;
&lt;br /&gt;
=== Click Payment started after sending payment ===&lt;br /&gt;
&lt;br /&gt;
Seller cannot mark payment as received until buyer confirms that they have sent it. &lt;br /&gt;
&lt;br /&gt;
Don’t forget to do this!&lt;br /&gt;
&lt;br /&gt;
=== Leave the &amp;quot;reason for payment&amp;quot; field empty ===&lt;br /&gt;
&lt;br /&gt;
{{Admonition_Warn|Before 1.5.5, it was required to put the trade ID in the 'reason for payment' field of a payment. As of 1.5.5, reason for payment should be left BLANK.}}&lt;br /&gt;
&lt;br /&gt;
Some payments offer a way to specify a reason for payment (some payment methods call it &amp;quot;Message&amp;quot; or &amp;quot;Information for recipient&amp;quot; or similar). '''Leave this field BLANK.''' Do not put the trade ID, any mentions of &amp;quot;Bisq&amp;quot; or &amp;quot;Bitcoin&amp;quot; or &amp;quot;crypto&amp;quot;, or any other text whatsoever.&lt;br /&gt;
&lt;br /&gt;
If you are required to fill in a reason, use your account name eg &amp;quot;Joe Bloggs&amp;quot; alternatively enter something non-descriptive like a dash &amp;quot;-&amp;quot;. If you would prefer to use other text please agree this with your peer in trader chat. Please remember your peer is not obligated to agree anything and may not want to agree to anything other than leaving the description blank, your name or a dash. &lt;br /&gt;
&lt;br /&gt;
Violating this rule will likely result in a [[Table of penalties|trade penalty]]. &lt;br /&gt;
&lt;br /&gt;
Many banks don’t like anything related to Bitcoin, and may take draconian measures if they sense such a transaction.&lt;br /&gt;
&lt;br /&gt;
Many users trade from personal accounts and may object to using anything that looks like it could be a commercial transaction.&lt;br /&gt;
&lt;br /&gt;
=== Pay any transaction fees ===&lt;br /&gt;
&lt;br /&gt;
Any fees incurred to make the payment via the agreed payment method (e.g., bank fees for bank transfer, money-order fees for money orders, etc) are the buyer’s responsibility to pay.&lt;br /&gt;
&lt;br /&gt;
The seller should receive the exact amount of the trade. The only exception to this rule is if the receiving institution imposes a fee on incoming payments—these fees are borne by the seller.&lt;br /&gt;
&lt;br /&gt;
= What happens when things go wrong? =&lt;br /&gt;
&lt;br /&gt;
Sometimes trades do not go to plan for whatever reason. &lt;br /&gt;
&lt;br /&gt;
It is prudent for all traders to know when entering into the trade what will happen when things go wrong. Traders would be wise to make themselves aware of the [[dispute resolution]] process to ensure there are no surprises.&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4059</id>
		<title>Automatic backup script</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4059"/>
		<updated>2025-08-12T22:14:53Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The biggest issues for users happen when data files are lost or corrupted, leading to missing or borked trades, or unrecoverable Delayed Payout Transactions.&lt;br /&gt;
&lt;br /&gt;
Having an automated backup solution helps covering that risk, by removing the need to manually run a backup after every application state change (mainly &amp;quot;offer created&amp;quot;, &amp;quot;trade started&amp;quot;, &amp;quot;trade completed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Issues could still happen when a critical event occurs right after a state change was saved to disk, and before an automated backup was taken, but there are strategies to mitigate that possibility, which will be discussed.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Common requirements and backup strategy =&lt;br /&gt;
&lt;br /&gt;
All scripts require 7z compression (7-zip on Windows, p7zip-full on Linux, p7zip on MacOS).&lt;br /&gt;
&lt;br /&gt;
The provided code will backup all functional files in the data directory, leaving out non-unique files that the Bisq application will fetch/re-create autonomously, and compress them into a 7zip archive, keeping the number of last backups that you define, while deleting the oldest one(s) if the existing number of backups is higher.&lt;br /&gt;
&lt;br /&gt;
It is advised that you direct the backups to either an external drive, or a NAS, or an encrypted cloud storage.&lt;br /&gt;
&lt;br /&gt;
Depending on how bulletproof of a backup schedule you want, you can increase the number of backups to keep on disk to 10 or more (the size of each depends on the history of your instance, but it usually resides in a few tens of MB, often less) and the frequency the script runs with, for example every 1 or 2 hours.&lt;br /&gt;
&lt;br /&gt;
= Bisq1 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/home/YOURUSERNAME/local/share/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
&amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
&amp;quot;BallotList&amp;quot;&lt;br /&gt;
&amp;quot;DisputeList&amp;quot;&lt;br /&gt;
&amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
&amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
&amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
&amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
&amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
&amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
&amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
&amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
&amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
&amp;quot;UserPayload&amp;quot;&lt;br /&gt;
&amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
&amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
&amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
&amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
&amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
&amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
&amp;quot;PeerList&amp;quot;&lt;br /&gt;
&amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
&amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
&amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;$SOURCE_DIR/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;$FOLDER_KEYS&amp;quot; &amp;quot;$FOLDER_WALLET&amp;quot;; do&lt;br /&gt;
  find &amp;quot;$SOURCE_DIR/$subfolder&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;$SOURCE_DIR/$FOLDER_TOR&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;$FOLDER_TOR_PATH&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;$FOLDER_TOR_PATH&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;$ARCHIVE_PATH&amp;quot; @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Inside this folder, create a new file named &amp;lt;code&amp;gt;bisq1backup.ps1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$SOURCE_DIR = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq\btc_mainnet&amp;quot;&lt;br /&gt;
$TARGET_FOLDER = &amp;quot;D:\BACKUPS\BISQ1&amp;quot;&lt;br /&gt;
$BACKUP_COUNT = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ARCHIVE_ROOT = &amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
$timestamp = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$BACKUP_FILE = &amp;quot;$ARCHIVE_ROOT$timestamp.7z&amp;quot;&lt;br /&gt;
$ARCHIVE_PATH = Join-Path $TARGET_FOLDER $BACKUP_FILE&lt;br /&gt;
&lt;br /&gt;
$SELECTED_FILES = @(&lt;br /&gt;
    &amp;quot;BsqSwapTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;BallotList&amp;quot;,&lt;br /&gt;
    &amp;quot;DisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;RefundDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;SequenceNumberMap&amp;quot;,&lt;br /&gt;
    &amp;quot;MyVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;OpenOffers&amp;quot;,&lt;br /&gt;
    &amp;quot;MyBlindVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;ClosedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MediationDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProposalList&amp;quot;,&lt;br /&gt;
    &amp;quot;MailboxMessageList&amp;quot;,&lt;br /&gt;
    &amp;quot;AccountAgeWitnessStore&amp;quot;,&lt;br /&gt;
    &amp;quot;PendingTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProofOfBurnList&amp;quot;,&lt;br /&gt;
    &amp;quot;PreferencesPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;UserPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;AddressEntryList&amp;quot;,&lt;br /&gt;
    &amp;quot;FailedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyReputationList&amp;quot;,&lt;br /&gt;
    &amp;quot;TempProposalStore&amp;quot;,&lt;br /&gt;
    &amp;quot;NavigationPath&amp;quot;,&lt;br /&gt;
    &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;,&lt;br /&gt;
    &amp;quot;IgnoredMailboxMap&amp;quot;,&lt;br /&gt;
    &amp;quot;PeerList&amp;quot;,&lt;br /&gt;
    &amp;quot;RemovedPayloadsMap&amp;quot;,&lt;br /&gt;
    &amp;quot;TradeStatistics3Store&amp;quot;,&lt;br /&gt;
    &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
$FOLDER_KEYS = &amp;quot;keys&amp;quot;&lt;br /&gt;
$FOLDER_WALLET = &amp;quot;wallet&amp;quot;&lt;br /&gt;
$FOLDER_TOR = &amp;quot;tor\hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$FILE_LIST = [System.IO.Path]::GetTempFileName()&lt;br /&gt;
&lt;br /&gt;
$SUBFOLDER_DB_PATH = Join-Path $SOURCE_DIR &amp;quot;db&amp;quot;&lt;br /&gt;
foreach ($file in $SELECTED_FILES) {&lt;br /&gt;
    $path = Join-Path $SUBFOLDER_DB_PATH $file&lt;br /&gt;
    if (Test-Path $path -PathType Leaf) {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $path&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach ($subfolder in @($FOLDER_KEYS, $FOLDER_WALLET)) {&lt;br /&gt;
    $dir = Join-Path $SOURCE_DIR $subfolder&lt;br /&gt;
    if (Test-Path $dir) {&lt;br /&gt;
        Get-ChildItem -Path $dir -File | ForEach-Object {&lt;br /&gt;
            Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$FOLDER_TOR_PATH = Join-Path $SOURCE_DIR $FOLDER_TOR&lt;br /&gt;
if (Test-Path $FOLDER_TOR_PATH -PathType Container) {&lt;br /&gt;
    Get-ChildItem -Path $FOLDER_TOR_PATH -File -Recurse | ForEach-Object {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -m0=lzma2 -mmt=on -spf $ARCHIVE_PATH @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Remove-Item $FILE_LIST&lt;br /&gt;
&lt;br /&gt;
Write-Output &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$backupFiles = Get-ChildItem -Path $TARGET_FOLDER -Filter &amp;quot;$ARCHIVE_ROOT*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
if ($backupFiles.Count -gt $BACKUP_COUNT) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($backupFiles.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $backupFiles | Select-Object -Skip $BACKUP_COUNT | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq1backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq1backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
Open the Terminal and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following code and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/Users/YOURUSERNAME/Library/Application\ Support/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/Volumes/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
  &amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
  &amp;quot;BallotList&amp;quot;&lt;br /&gt;
  &amp;quot;DisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
  &amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
  &amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
  &amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
  &amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
  &amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
  &amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
  &amp;quot;UserPayload&amp;quot;&lt;br /&gt;
  &amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
  &amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
  &amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
  &amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
  &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
  &amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
  &amp;quot;PeerList&amp;quot;&lt;br /&gt;
  &amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
  &amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
  &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;${SOURCE_DIR}/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;${FOLDER_KEYS}&amp;quot; &amp;quot;${FOLDER_WALLET}&amp;quot;; do&lt;br /&gt;
  find &amp;quot;${SOURCE_DIR}/${subfolder}&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;${SOURCE_DIR}/${FOLDER_TOR}&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;${FOLDER_TOR_PATH}&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;${FOLDER_TOR_PATH}&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;${ARCHIVE_PATH}&amp;quot; @&amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: ${BACKUP_FILE}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the backup every 8 hours, edit your crontab using&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /Users/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log 2&amp;gt;&amp;amp;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bisq2 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/home/YOURUSERNAME/local/share/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/private&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/settings&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${TARGET_FOLDER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named scripts.&lt;br /&gt;
* Inside this folder, create a new file named bisq2backup.ps1.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$FolderToBackup = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq2\db&amp;quot;&lt;br /&gt;
$TargetFolder   = &amp;quot;D:\BACKUPS\BISQ2&amp;quot;&lt;br /&gt;
$BackupCount    = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ArchiveRoot = &amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
$Timestamp   = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$ArchiveName = &amp;quot;$ArchiveRoot$Timestamp.7z&amp;quot;&lt;br /&gt;
$TempArchive = Join-Path $env:TEMP $ArchiveName&lt;br /&gt;
$FinalArchive = Join-Path $TargetFolder $ArchiveName&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;`&amp;quot;$TempArchive`&amp;quot;&amp;quot; &amp;quot;`&amp;quot;$FolderToBackup\private`&amp;quot;&amp;quot; &amp;quot;`&amp;quot;$FolderToBackup\settings`&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Move-Item -Path $TempArchive -Destination $FinalArchive -Force&lt;br /&gt;
&lt;br /&gt;
$Archives = Get-ChildItem -Path $TargetFolder -Filter &amp;quot;$ArchiveRoot*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
&lt;br /&gt;
if ($Archives.Count -gt $BackupCount) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($Archives.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $Archives | Select-Object -Skip $BackupCount | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq2backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq2backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
Open the Terminal and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following code and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/Users/YOURUSERNAME/Library/Application Support/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/Volumes/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/private&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/settings&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${ARCHIVE_PATH}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the backup every 8 hours, edit your crontab using:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /Users/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq2backup.log 2&amp;gt;&amp;amp;1&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Backing_up_application_data&amp;diff=4058</id>
		<title>Backing up application data</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Backing_up_application_data&amp;diff=4058"/>
		<updated>2025-08-03T17:21:21Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: add reference to automatic backup script guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Backing up''' your Bisq data is crucial to ensure you can retain control over trades, disputes, payment accounts, and funds in case of issues with your machine (e.g., drive failure) or Bisq itself (e.g., critical bugs).&lt;br /&gt;
&lt;br /&gt;
All Bisq data is stored right on your computer—it's never stored (or even sent) to a central server, so backing it up is your job.&lt;br /&gt;
&lt;br /&gt;
To see how to ''restore'' data to Bisq, see [[Restoring application data]].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Back up the entire Bisq data directory =&lt;br /&gt;
&lt;br /&gt;
The safest, quickest, easiest, and most comprehensive thing you can do to safeguard your data is to back up the whole data directory at regular intervals. See the various elements of the data directory detailed [[Data_directory#Data_Directory_Structure|here]].&lt;br /&gt;
&lt;br /&gt;
In addition, to make restoring payment accounts easier, you may want to back up an [[#Back_up_payment_accounts|export of your payment accounts]].&lt;br /&gt;
&lt;br /&gt;
== While Bisq is running ==&lt;br /&gt;
&lt;br /&gt;
Go to &amp;lt;code&amp;gt;Account&amp;lt;/code&amp;gt; &amp;gt; &amp;lt;code&amp;gt;Backup&amp;lt;/code&amp;gt; and put in a location for your backup to be exported to (note that this section is titled &amp;quot;Backup wallet&amp;quot; in the software but it actually exports the entire data directory).&lt;br /&gt;
&lt;br /&gt;
[[File:Backup-while-running.png|600px|thumb|left|Data directory backup screen.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== While Bisq is closed  ==&lt;br /&gt;
&lt;br /&gt;
When Bisq is closed, you can simply copy the entire data directory and paste it somewhere safe. Find the location of your data directory by clicking on the &amp;lt;code&amp;gt;Open Directory&amp;lt;/code&amp;gt; button (see screenshot above) or see [[Data_directory#Default_Locations|data directory locations here]].&lt;br /&gt;
&lt;br /&gt;
== Encrypt your backup ==&lt;br /&gt;
&lt;br /&gt;
'''Backup files are not encrypted.''' If you’ve set a wallet password, your wallet files will be encrypted, but all your other data will ''not'' be encrypted. &lt;br /&gt;
&lt;br /&gt;
We recommend encrypting the whole backup folder with something like gpg, 7-Zip, Cryptomator, etc.&lt;br /&gt;
&lt;br /&gt;
= Back up payment accounts =&lt;br /&gt;
&lt;br /&gt;
If you just want to back up your payment accounts, export them from &amp;lt;code&amp;gt;Account&amp;lt;/code&amp;gt; &amp;gt; &amp;lt;code&amp;gt;National Currency Accounts&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Be advised: exporting your accounts this way only exports metadata. '''Aging and signing status are not included'''. To include [[Account_limits|account aging and signing status]], you also need to save the &amp;lt;code&amp;gt;btc_mainnet/keys/sig.key&amp;lt;/code&amp;gt; file from your [[Data_directory|data directory]].&lt;br /&gt;
&lt;br /&gt;
Because of the way [[Restoring_application_data#Restore_payment_accounts|restoring payment accounts]] works, it's best for most users to back up the whole data directory ''and'' back up a payment account export.&lt;br /&gt;
&lt;br /&gt;
[[File:Export-payment-accounts.png|600px|thumb|left|Export fiat payment accounts here. You can export altcoin accounts from the Altcoin Accounts tab.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Back up your wallet seed =&lt;br /&gt;
&lt;br /&gt;
Please be sure to [[Backing_up_your_wallet_seed|properly back up your wallet seed]].&lt;br /&gt;
&lt;br /&gt;
= Export Tor state =&lt;br /&gt;
&lt;br /&gt;
If you want to carry over a particular onion address (and keep your local reputation), you can replace the &amp;lt;code&amp;gt;btc_mainnet/tor/hiddenservice&amp;lt;/code&amp;gt; folder in your data directory with the one from your backup.&lt;br /&gt;
&lt;br /&gt;
= Export trade history =&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;Portfolio&amp;lt;/code&amp;gt; &amp;gt; &amp;lt;code&amp;gt;History&amp;lt;/code&amp;gt; you'll find an &amp;lt;code&amp;gt;Export to CSV&amp;lt;/code&amp;gt; button to export your trade history.&lt;br /&gt;
&lt;br /&gt;
There's no way to import this data back into Bisq, but it can be useful to have a copy of this data for yourself for record-keeping, analysis, etc.&lt;br /&gt;
&lt;br /&gt;
= Export transaction history =&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;Funds&amp;lt;/code&amp;gt; &amp;gt; &amp;lt;code&amp;gt;Transactions&amp;lt;/code&amp;gt; you'll find an &amp;lt;code&amp;gt;Export to CSV&amp;lt;/code&amp;gt; button to export your trade history.&lt;br /&gt;
&lt;br /&gt;
There's no way to import this data back into Bisq, but it can be useful to have a copy of this data for yourself for record-keeping, analysis, etc.&lt;br /&gt;
&lt;br /&gt;
= Automatic backup with cyclic redundancy = &lt;br /&gt;
&lt;br /&gt;
Bisq doesn't directly implement a scheduled backup feature, but you can set up an [[Automatic_backup_script|automatic backup routine]] to store a versioned history of your data directory in a compact way.&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4057</id>
		<title>Automatic backup script</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4057"/>
		<updated>2025-07-23T14:38:36Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* macOS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The biggest issues for users happen when data files are lost or corrupted, leading to missing or borked trades, or unrecoverable Delayed Payout Transactions.&lt;br /&gt;
&lt;br /&gt;
Having an automated backup solution helps covering that risk, by removing the need to manually run a backup after every application state change (mainly &amp;quot;offer created&amp;quot;, &amp;quot;trade started&amp;quot;, &amp;quot;trade completed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Issues could still happen when a critical event occurs right after a state change was saved to disk, and before an automated backup was taken, but there are strategies to mitigate that possibility, which will be discussed.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Common requirements and backup strategy =&lt;br /&gt;
&lt;br /&gt;
All scripts require 7z compression (7-zip on Windows, p7zip-full on Linux, p7zip on MacOS).&lt;br /&gt;
&lt;br /&gt;
The code will backup all functional files in the data directory, leaving out non-unique files that the Bisq application will fetch/re-create autonomously, and compress them into a 7zip archive, keeping the number of last backups that you define, while deleting the oldest one(s) if the existing number of backups is higher.&lt;br /&gt;
&lt;br /&gt;
It is advised that you direct the backups to either an external drive, or a NAS, or an encrypted cloud storage.&lt;br /&gt;
&lt;br /&gt;
Depending on how bulletproof of a backup schedule you want, you can increase the number of backups to keep on disk to 10 or more (the size of each depends on the history of your instance, but it usually resides in a few tens of MB, often less) and the frequency the script runs with, for example every 1 or 2 hours.&lt;br /&gt;
&lt;br /&gt;
= Bisq1 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/home/YOURUSERNAME/local/share/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
&amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
&amp;quot;BallotList&amp;quot;&lt;br /&gt;
&amp;quot;DisputeList&amp;quot;&lt;br /&gt;
&amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
&amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
&amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
&amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
&amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
&amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
&amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
&amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
&amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
&amp;quot;UserPayload&amp;quot;&lt;br /&gt;
&amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
&amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
&amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
&amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
&amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
&amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
&amp;quot;PeerList&amp;quot;&lt;br /&gt;
&amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
&amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
&amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;$SOURCE_DIR/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;$FOLDER_KEYS&amp;quot; &amp;quot;$FOLDER_WALLET&amp;quot;; do&lt;br /&gt;
  find &amp;quot;$SOURCE_DIR/$subfolder&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;$SOURCE_DIR/$FOLDER_TOR&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;$FOLDER_TOR_PATH&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;$FOLDER_TOR_PATH&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;$ARCHIVE_PATH&amp;quot; @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Inside this folder, create a new file named &amp;lt;code&amp;gt;bisq1backup.ps1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$SOURCE_DIR = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq\btc_mainnet&amp;quot;&lt;br /&gt;
$TARGET_FOLDER = &amp;quot;D:\BACKUPS\BISQ1&amp;quot;&lt;br /&gt;
$BACKUP_COUNT = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ARCHIVE_ROOT = &amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
$timestamp = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$BACKUP_FILE = &amp;quot;$ARCHIVE_ROOT$timestamp.7z&amp;quot;&lt;br /&gt;
$ARCHIVE_PATH = Join-Path $TARGET_FOLDER $BACKUP_FILE&lt;br /&gt;
&lt;br /&gt;
$SELECTED_FILES = @(&lt;br /&gt;
    &amp;quot;BsqSwapTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;BallotList&amp;quot;,&lt;br /&gt;
    &amp;quot;DisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;RefundDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;SequenceNumberMap&amp;quot;,&lt;br /&gt;
    &amp;quot;MyVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;OpenOffers&amp;quot;,&lt;br /&gt;
    &amp;quot;MyBlindVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;ClosedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MediationDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProposalList&amp;quot;,&lt;br /&gt;
    &amp;quot;MailboxMessageList&amp;quot;,&lt;br /&gt;
    &amp;quot;AccountAgeWitnessStore&amp;quot;,&lt;br /&gt;
    &amp;quot;PendingTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProofOfBurnList&amp;quot;,&lt;br /&gt;
    &amp;quot;PreferencesPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;UserPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;AddressEntryList&amp;quot;,&lt;br /&gt;
    &amp;quot;FailedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyReputationList&amp;quot;,&lt;br /&gt;
    &amp;quot;TempProposalStore&amp;quot;,&lt;br /&gt;
    &amp;quot;NavigationPath&amp;quot;,&lt;br /&gt;
    &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;,&lt;br /&gt;
    &amp;quot;IgnoredMailboxMap&amp;quot;,&lt;br /&gt;
    &amp;quot;PeerList&amp;quot;,&lt;br /&gt;
    &amp;quot;RemovedPayloadsMap&amp;quot;,&lt;br /&gt;
    &amp;quot;TradeStatistics3Store&amp;quot;,&lt;br /&gt;
    &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
$FOLDER_KEYS = &amp;quot;keys&amp;quot;&lt;br /&gt;
$FOLDER_WALLET = &amp;quot;wallet&amp;quot;&lt;br /&gt;
$FOLDER_TOR = &amp;quot;tor\hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$FILE_LIST = [System.IO.Path]::GetTempFileName()&lt;br /&gt;
&lt;br /&gt;
$SUBFOLDER_DB_PATH = Join-Path $SOURCE_DIR &amp;quot;db&amp;quot;&lt;br /&gt;
foreach ($file in $SELECTED_FILES) {&lt;br /&gt;
    $path = Join-Path $SUBFOLDER_DB_PATH $file&lt;br /&gt;
    if (Test-Path $path -PathType Leaf) {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $path&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach ($subfolder in @($FOLDER_KEYS, $FOLDER_WALLET)) {&lt;br /&gt;
    $dir = Join-Path $SOURCE_DIR $subfolder&lt;br /&gt;
    if (Test-Path $dir) {&lt;br /&gt;
        Get-ChildItem -Path $dir -File | ForEach-Object {&lt;br /&gt;
            Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$FOLDER_TOR_PATH = Join-Path $SOURCE_DIR $FOLDER_TOR&lt;br /&gt;
if (Test-Path $FOLDER_TOR_PATH -PathType Container) {&lt;br /&gt;
    Get-ChildItem -Path $FOLDER_TOR_PATH -File -Recurse | ForEach-Object {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -m0=lzma2 -mmt=on -spf $ARCHIVE_PATH @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Remove-Item $FILE_LIST&lt;br /&gt;
&lt;br /&gt;
Write-Output &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$backupFiles = Get-ChildItem -Path $TARGET_FOLDER -Filter &amp;quot;$ARCHIVE_ROOT*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
if ($backupFiles.Count -gt $BACKUP_COUNT) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($backupFiles.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $backupFiles | Select-Object -Skip $BACKUP_COUNT | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq1backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq1backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
Open the Terminal and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following code and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/Users/YOURUSERNAME/Library/Application\ Support/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/Volumes/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
  &amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
  &amp;quot;BallotList&amp;quot;&lt;br /&gt;
  &amp;quot;DisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
  &amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
  &amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
  &amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
  &amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
  &amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
  &amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
  &amp;quot;UserPayload&amp;quot;&lt;br /&gt;
  &amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
  &amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
  &amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
  &amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
  &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
  &amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
  &amp;quot;PeerList&amp;quot;&lt;br /&gt;
  &amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
  &amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
  &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;${SOURCE_DIR}/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;${FOLDER_KEYS}&amp;quot; &amp;quot;${FOLDER_WALLET}&amp;quot;; do&lt;br /&gt;
  find &amp;quot;${SOURCE_DIR}/${subfolder}&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;${SOURCE_DIR}/${FOLDER_TOR}&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;${FOLDER_TOR_PATH}&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;${FOLDER_TOR_PATH}&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;${ARCHIVE_PATH}&amp;quot; @&amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: ${BACKUP_FILE}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the backup every 8 hours, edit your crontab using&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /Users/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log 2&amp;gt;&amp;amp;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bisq2 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/home/YOURUSERNAME/local/share/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/private&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/settings&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${TARGET_FOLDER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named scripts.&lt;br /&gt;
* Inside this folder, create a new file named bisq2backup.ps1.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$FolderToBackup = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq2\db&amp;quot;&lt;br /&gt;
$TargetFolder   = &amp;quot;D:\BACKUPS\BISQ2&amp;quot;&lt;br /&gt;
$BackupCount    = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ArchiveRoot = &amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
$Timestamp   = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$ArchiveName = &amp;quot;$ArchiveRoot$Timestamp.7z&amp;quot;&lt;br /&gt;
$TempArchive = Join-Path $env:TEMP $ArchiveName&lt;br /&gt;
$FinalArchive = Join-Path $TargetFolder $ArchiveName&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;`&amp;quot;$TempArchive`&amp;quot;&amp;quot; &amp;quot;`&amp;quot;$FolderToBackup\private`&amp;quot;&amp;quot; &amp;quot;`&amp;quot;$FolderToBackup\settings`&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Move-Item -Path $TempArchive -Destination $FinalArchive -Force&lt;br /&gt;
&lt;br /&gt;
$Archives = Get-ChildItem -Path $TargetFolder -Filter &amp;quot;$ArchiveRoot*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
&lt;br /&gt;
if ($Archives.Count -gt $BackupCount) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($Archives.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $Archives | Select-Object -Skip $BackupCount | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq2backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq2backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
Open the Terminal and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following code and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/Users/YOURUSERNAME/Library/Application Support/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/Volumes/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/private&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/settings&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${ARCHIVE_PATH}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the backup every 8 hours, edit your crontab using:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /Users/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq2backup.log 2&amp;gt;&amp;amp;1&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4056</id>
		<title>Automatic backup script</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4056"/>
		<updated>2025-07-21T09:33:51Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: only include `private` and `settings` folders for Bisq2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The biggest issues for users happen when data files are lost or corrupted, leading to missing or borked trades, or unrecoverable Delayed Payout Transactions.&lt;br /&gt;
&lt;br /&gt;
Having an automated backup solution helps covering that risk, by removing the need to manually run a backup after every application state change (mainly &amp;quot;offer created&amp;quot;, &amp;quot;trade started&amp;quot;, &amp;quot;trade completed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Issues could still happen when a critical event occurs right after a state change was saved to disk, and before an automated backup was taken, but there are strategies to mitigate that possibility, which will be discussed.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Common requirements and backup strategy =&lt;br /&gt;
&lt;br /&gt;
All scripts require 7z compression (7-zip on Windows, p7zip-full on Linux, p7zip on MacOS).&lt;br /&gt;
&lt;br /&gt;
The code will backup all functional files in the data directory, leaving out non-unique files that the Bisq application will fetch/re-create autonomously, and compress them into a 7zip archive, keeping the number of last backups that you define, while deleting the oldest one(s) if the existing number of backups is higher.&lt;br /&gt;
&lt;br /&gt;
It is advised that you direct the backups to either an external drive, or a NAS, or an encrypted cloud storage.&lt;br /&gt;
&lt;br /&gt;
Depending on how bulletproof of a backup schedule you want, you can increase the number of backups to keep on disk to 10 or more (the size of each depends on the history of your instance, but it usually resides in a few tens of MB, often less) and the frequency the script runs with, for example every 1 or 2 hours.&lt;br /&gt;
&lt;br /&gt;
= Bisq1 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/home/YOURUSERNAME/local/share/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
&amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
&amp;quot;BallotList&amp;quot;&lt;br /&gt;
&amp;quot;DisputeList&amp;quot;&lt;br /&gt;
&amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
&amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
&amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
&amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
&amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
&amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
&amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
&amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
&amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
&amp;quot;UserPayload&amp;quot;&lt;br /&gt;
&amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
&amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
&amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
&amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
&amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
&amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
&amp;quot;PeerList&amp;quot;&lt;br /&gt;
&amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
&amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
&amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;$SOURCE_DIR/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;$FOLDER_KEYS&amp;quot; &amp;quot;$FOLDER_WALLET&amp;quot;; do&lt;br /&gt;
  find &amp;quot;$SOURCE_DIR/$subfolder&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;$SOURCE_DIR/$FOLDER_TOR&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;$FOLDER_TOR_PATH&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;$FOLDER_TOR_PATH&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;$ARCHIVE_PATH&amp;quot; @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Inside this folder, create a new file named &amp;lt;code&amp;gt;bisq1backup.ps1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$SOURCE_DIR = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq\btc_mainnet&amp;quot;&lt;br /&gt;
$TARGET_FOLDER = &amp;quot;D:\BACKUPS\BISQ1&amp;quot;&lt;br /&gt;
$BACKUP_COUNT = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ARCHIVE_ROOT = &amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
$timestamp = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$BACKUP_FILE = &amp;quot;$ARCHIVE_ROOT$timestamp.7z&amp;quot;&lt;br /&gt;
$ARCHIVE_PATH = Join-Path $TARGET_FOLDER $BACKUP_FILE&lt;br /&gt;
&lt;br /&gt;
$SELECTED_FILES = @(&lt;br /&gt;
    &amp;quot;BsqSwapTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;BallotList&amp;quot;,&lt;br /&gt;
    &amp;quot;DisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;RefundDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;SequenceNumberMap&amp;quot;,&lt;br /&gt;
    &amp;quot;MyVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;OpenOffers&amp;quot;,&lt;br /&gt;
    &amp;quot;MyBlindVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;ClosedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MediationDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProposalList&amp;quot;,&lt;br /&gt;
    &amp;quot;MailboxMessageList&amp;quot;,&lt;br /&gt;
    &amp;quot;AccountAgeWitnessStore&amp;quot;,&lt;br /&gt;
    &amp;quot;PendingTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProofOfBurnList&amp;quot;,&lt;br /&gt;
    &amp;quot;PreferencesPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;UserPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;AddressEntryList&amp;quot;,&lt;br /&gt;
    &amp;quot;FailedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyReputationList&amp;quot;,&lt;br /&gt;
    &amp;quot;TempProposalStore&amp;quot;,&lt;br /&gt;
    &amp;quot;NavigationPath&amp;quot;,&lt;br /&gt;
    &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;,&lt;br /&gt;
    &amp;quot;IgnoredMailboxMap&amp;quot;,&lt;br /&gt;
    &amp;quot;PeerList&amp;quot;,&lt;br /&gt;
    &amp;quot;RemovedPayloadsMap&amp;quot;,&lt;br /&gt;
    &amp;quot;TradeStatistics3Store&amp;quot;,&lt;br /&gt;
    &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
$FOLDER_KEYS = &amp;quot;keys&amp;quot;&lt;br /&gt;
$FOLDER_WALLET = &amp;quot;wallet&amp;quot;&lt;br /&gt;
$FOLDER_TOR = &amp;quot;tor\hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$FILE_LIST = [System.IO.Path]::GetTempFileName()&lt;br /&gt;
&lt;br /&gt;
$SUBFOLDER_DB_PATH = Join-Path $SOURCE_DIR &amp;quot;db&amp;quot;&lt;br /&gt;
foreach ($file in $SELECTED_FILES) {&lt;br /&gt;
    $path = Join-Path $SUBFOLDER_DB_PATH $file&lt;br /&gt;
    if (Test-Path $path -PathType Leaf) {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $path&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach ($subfolder in @($FOLDER_KEYS, $FOLDER_WALLET)) {&lt;br /&gt;
    $dir = Join-Path $SOURCE_DIR $subfolder&lt;br /&gt;
    if (Test-Path $dir) {&lt;br /&gt;
        Get-ChildItem -Path $dir -File | ForEach-Object {&lt;br /&gt;
            Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$FOLDER_TOR_PATH = Join-Path $SOURCE_DIR $FOLDER_TOR&lt;br /&gt;
if (Test-Path $FOLDER_TOR_PATH -PathType Container) {&lt;br /&gt;
    Get-ChildItem -Path $FOLDER_TOR_PATH -File -Recurse | ForEach-Object {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -m0=lzma2 -mmt=on -spf $ARCHIVE_PATH @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Remove-Item $FILE_LIST&lt;br /&gt;
&lt;br /&gt;
Write-Output &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$backupFiles = Get-ChildItem -Path $TARGET_FOLDER -Filter &amp;quot;$ARCHIVE_ROOT*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
if ($backupFiles.Count -gt $BACKUP_COUNT) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($backupFiles.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $backupFiles | Select-Object -Skip $BACKUP_COUNT | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq1backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq1backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
Open the Terminal and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following code and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/Users/YOURUSERNAME/Library/Application\ Support/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/Volumes/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
  &amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
  &amp;quot;BallotList&amp;quot;&lt;br /&gt;
  &amp;quot;DisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
  &amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
  &amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
  &amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
  &amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
  &amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
  &amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
  &amp;quot;UserPayload&amp;quot;&lt;br /&gt;
  &amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
  &amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
  &amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
  &amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
  &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
  &amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
  &amp;quot;PeerList&amp;quot;&lt;br /&gt;
  &amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
  &amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
  &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;${SOURCE_DIR}/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;${FOLDER_KEYS}&amp;quot; &amp;quot;${FOLDER_WALLET}&amp;quot;; do&lt;br /&gt;
  find &amp;quot;${SOURCE_DIR}/${subfolder}&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;${SOURCE_DIR}/${FOLDER_TOR}&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;${FOLDER_TOR_PATH}&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;${FOLDER_TOR_PATH}&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;${ARCHIVE_PATH}&amp;quot; @&amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: ${BACKUP_FILE}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the backup every 8 hours, edit your crontab using&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /Users/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log 2&amp;gt;&amp;amp;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bisq2 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/home/YOURUSERNAME/local/share/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/private&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/settings&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${TARGET_FOLDER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named scripts.&lt;br /&gt;
* Inside this folder, create a new file named bisq2backup.ps1.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$FolderToBackup = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq2\db&amp;quot;&lt;br /&gt;
$TargetFolder   = &amp;quot;D:\BACKUPS\BISQ2&amp;quot;&lt;br /&gt;
$BackupCount    = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ArchiveRoot = &amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
$Timestamp   = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$ArchiveName = &amp;quot;$ArchiveRoot$Timestamp.7z&amp;quot;&lt;br /&gt;
$TempArchive = Join-Path $env:TEMP $ArchiveName&lt;br /&gt;
$FinalArchive = Join-Path $TargetFolder $ArchiveName&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;`&amp;quot;$TempArchive`&amp;quot;&amp;quot; &amp;quot;`&amp;quot;$FolderToBackup\private`&amp;quot;&amp;quot; &amp;quot;`&amp;quot;$FolderToBackup\settings`&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Move-Item -Path $TempArchive -Destination $FinalArchive -Force&lt;br /&gt;
&lt;br /&gt;
$Archives = Get-ChildItem -Path $TargetFolder -Filter &amp;quot;$ArchiveRoot*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
&lt;br /&gt;
if ($Archives.Count -gt $BackupCount) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($Archives.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $Archives | Select-Object -Skip $BackupCount | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq2backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq2backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== macOS ==&lt;br /&gt;
&lt;br /&gt;
Open the Terminal and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following code and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/Users/YOURUSERNAME/Library/Application Support/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/Volumes/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/private&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}/settings&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${ARCHIVE_PATH}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the backup every 8 hours, edit your crontab using:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /Users/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq2backup.log 2&amp;gt;&amp;amp;1&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4055</id>
		<title>Automatic backup script</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4055"/>
		<updated>2025-07-21T08:42:57Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* MacOS */ Add Bisq2 + MacOS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The biggest issues for users happen when data files are lost or corrupted, leading to missing or borked trades, or unrecoverable Delayed Payout Transactions.&lt;br /&gt;
&lt;br /&gt;
Having an automated backup solution helps covering that risk, by removing the need to manually run a backup after every application state change (mainly &amp;quot;offer created&amp;quot;, &amp;quot;trade started&amp;quot;, &amp;quot;trade completed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Issues could still happen when a critical event occurs right after a state change was saved to disk, and before an automated backup was taken, but there are strategies to mitigate that possibility, which will be discussed.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Common requirements and backup strategy =&lt;br /&gt;
&lt;br /&gt;
All scripts require 7z compression (7-zip on Windows, p7zip-full on Linux, p7zip on MacOS).&lt;br /&gt;
&lt;br /&gt;
The code will backup all functional files in the data directory, leaving out non-unique files that the Bisq application will fetch/re-create autonomously, and compress them into a 7zip archive, keeping the number of last backups that you define, while deleting the oldest one(s) if the existing number of backups is higher.&lt;br /&gt;
&lt;br /&gt;
It is advised that you direct the backups to either an external drive, or a NAS, or an encrypted cloud storage.&lt;br /&gt;
&lt;br /&gt;
Depending on how bulletproof of a backup schedule you want, you can increase the number of backups to keep on disk to 10 or more (the size of each depends on the history of your instance, but it usually resides in a few tens of MB, often less) and the frequency the script runs with, for example every 1 or 2 hours.&lt;br /&gt;
&lt;br /&gt;
= Bisq1 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/home/YOURUSERNAME/local/share/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
&amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
&amp;quot;BallotList&amp;quot;&lt;br /&gt;
&amp;quot;DisputeList&amp;quot;&lt;br /&gt;
&amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
&amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
&amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
&amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
&amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
&amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
&amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
&amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
&amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
&amp;quot;UserPayload&amp;quot;&lt;br /&gt;
&amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
&amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
&amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
&amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
&amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
&amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
&amp;quot;PeerList&amp;quot;&lt;br /&gt;
&amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
&amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
&amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;$SOURCE_DIR/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;$FOLDER_KEYS&amp;quot; &amp;quot;$FOLDER_WALLET&amp;quot;; do&lt;br /&gt;
  find &amp;quot;$SOURCE_DIR/$subfolder&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;$SOURCE_DIR/$FOLDER_TOR&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;$FOLDER_TOR_PATH&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;$FOLDER_TOR_PATH&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;$ARCHIVE_PATH&amp;quot; @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Inside this folder, create a new file named &amp;lt;code&amp;gt;bisq1backup.ps1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$SOURCE_DIR = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq\btc_mainnet&amp;quot;&lt;br /&gt;
$TARGET_FOLDER = &amp;quot;D:\BACKUPS\BISQ1&amp;quot;&lt;br /&gt;
$BACKUP_COUNT = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ARCHIVE_ROOT = &amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
$timestamp = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$BACKUP_FILE = &amp;quot;$ARCHIVE_ROOT$timestamp.7z&amp;quot;&lt;br /&gt;
$ARCHIVE_PATH = Join-Path $TARGET_FOLDER $BACKUP_FILE&lt;br /&gt;
&lt;br /&gt;
$SELECTED_FILES = @(&lt;br /&gt;
    &amp;quot;BsqSwapTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;BallotList&amp;quot;,&lt;br /&gt;
    &amp;quot;DisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;RefundDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;SequenceNumberMap&amp;quot;,&lt;br /&gt;
    &amp;quot;MyVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;OpenOffers&amp;quot;,&lt;br /&gt;
    &amp;quot;MyBlindVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;ClosedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MediationDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProposalList&amp;quot;,&lt;br /&gt;
    &amp;quot;MailboxMessageList&amp;quot;,&lt;br /&gt;
    &amp;quot;AccountAgeWitnessStore&amp;quot;,&lt;br /&gt;
    &amp;quot;PendingTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProofOfBurnList&amp;quot;,&lt;br /&gt;
    &amp;quot;PreferencesPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;UserPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;AddressEntryList&amp;quot;,&lt;br /&gt;
    &amp;quot;FailedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyReputationList&amp;quot;,&lt;br /&gt;
    &amp;quot;TempProposalStore&amp;quot;,&lt;br /&gt;
    &amp;quot;NavigationPath&amp;quot;,&lt;br /&gt;
    &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;,&lt;br /&gt;
    &amp;quot;IgnoredMailboxMap&amp;quot;,&lt;br /&gt;
    &amp;quot;PeerList&amp;quot;,&lt;br /&gt;
    &amp;quot;RemovedPayloadsMap&amp;quot;,&lt;br /&gt;
    &amp;quot;TradeStatistics3Store&amp;quot;,&lt;br /&gt;
    &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
$FOLDER_KEYS = &amp;quot;keys&amp;quot;&lt;br /&gt;
$FOLDER_WALLET = &amp;quot;wallet&amp;quot;&lt;br /&gt;
$FOLDER_TOR = &amp;quot;tor\hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$FILE_LIST = [System.IO.Path]::GetTempFileName()&lt;br /&gt;
&lt;br /&gt;
$SUBFOLDER_DB_PATH = Join-Path $SOURCE_DIR &amp;quot;db&amp;quot;&lt;br /&gt;
foreach ($file in $SELECTED_FILES) {&lt;br /&gt;
    $path = Join-Path $SUBFOLDER_DB_PATH $file&lt;br /&gt;
    if (Test-Path $path -PathType Leaf) {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $path&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach ($subfolder in @($FOLDER_KEYS, $FOLDER_WALLET)) {&lt;br /&gt;
    $dir = Join-Path $SOURCE_DIR $subfolder&lt;br /&gt;
    if (Test-Path $dir) {&lt;br /&gt;
        Get-ChildItem -Path $dir -File | ForEach-Object {&lt;br /&gt;
            Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$FOLDER_TOR_PATH = Join-Path $SOURCE_DIR $FOLDER_TOR&lt;br /&gt;
if (Test-Path $FOLDER_TOR_PATH -PathType Container) {&lt;br /&gt;
    Get-ChildItem -Path $FOLDER_TOR_PATH -File -Recurse | ForEach-Object {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -m0=lzma2 -mmt=on -spf $ARCHIVE_PATH @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Remove-Item $FILE_LIST&lt;br /&gt;
&lt;br /&gt;
Write-Output &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$backupFiles = Get-ChildItem -Path $TARGET_FOLDER -Filter &amp;quot;$ARCHIVE_ROOT*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
if ($backupFiles.Count -gt $BACKUP_COUNT) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($backupFiles.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $backupFiles | Select-Object -Skip $BACKUP_COUNT | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq1backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq1backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
Open the Terminal and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following code and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/Users/YOURUSERNAME/Library/Application\ Support/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/Volumes/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
  &amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
  &amp;quot;BallotList&amp;quot;&lt;br /&gt;
  &amp;quot;DisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
  &amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
  &amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
  &amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
  &amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
  &amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
  &amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
  &amp;quot;UserPayload&amp;quot;&lt;br /&gt;
  &amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
  &amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
  &amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
  &amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
  &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
  &amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
  &amp;quot;PeerList&amp;quot;&lt;br /&gt;
  &amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
  &amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
  &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;${SOURCE_DIR}/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;${FOLDER_KEYS}&amp;quot; &amp;quot;${FOLDER_WALLET}&amp;quot;; do&lt;br /&gt;
  find &amp;quot;${SOURCE_DIR}/${subfolder}&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;${SOURCE_DIR}/${FOLDER_TOR}&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;${FOLDER_TOR_PATH}&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;${FOLDER_TOR_PATH}&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;${ARCHIVE_PATH}&amp;quot; @&amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: ${BACKUP_FILE}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the backup every 8 hours, edit your crontab using&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /Users/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log 2&amp;gt;&amp;amp;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bisq2 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/home/YOURUSERNAME/local/share/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${TARGET_FOLDER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named scripts.&lt;br /&gt;
* Inside this folder, create a new file named bisq2backup.ps1.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$FolderToBackup = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq2\db&amp;quot;&lt;br /&gt;
$TargetFolder   = &amp;quot;D:\BACKUPS\BISQ2&amp;quot;&lt;br /&gt;
$BackupCount    = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ArchiveRoot = &amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
$Timestamp   = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$ArchiveName = &amp;quot;$ArchiveRoot$Timestamp.7z&amp;quot;&lt;br /&gt;
$TempArchive = Join-Path $env:TEMP $ArchiveName&lt;br /&gt;
$FinalArchive = Join-Path $TargetFolder $ArchiveName&lt;br /&gt;
&lt;br /&gt;
# Adjust 7z.exe path if needed&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;`&amp;quot;$TempArchive`&amp;quot;&amp;quot; &amp;quot;`&amp;quot;$FolderToBackup`&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Move-Item -Path $TempArchive -Destination $FinalArchive -Force&lt;br /&gt;
&lt;br /&gt;
$Archives = Get-ChildItem -Path $TargetFolder -Filter &amp;quot;$ArchiveRoot*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
&lt;br /&gt;
if ($Archives.Count -gt $BackupCount) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($Archives.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $Archives | Select-Object -Skip $BackupCount | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq2backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq2backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== macOS ==&lt;br /&gt;
&lt;br /&gt;
Open the Terminal and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following code and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/Users/YOURUSERNAME/Library/Application Support/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/Volumes/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${ARCHIVE_PATH}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the backup every 8 hours, edit your crontab using:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /Users/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq2backup.log 2&amp;gt;&amp;amp;1&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4054</id>
		<title>Automatic backup script</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4054"/>
		<updated>2025-07-21T08:40:19Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* Windows */ Add Bisq2 + Windows&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The biggest issues for users happen when data files are lost or corrupted, leading to missing or borked trades, or unrecoverable Delayed Payout Transactions.&lt;br /&gt;
&lt;br /&gt;
Having an automated backup solution helps covering that risk, by removing the need to manually run a backup after every application state change (mainly &amp;quot;offer created&amp;quot;, &amp;quot;trade started&amp;quot;, &amp;quot;trade completed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Issues could still happen when a critical event occurs right after a state change was saved to disk, and before an automated backup was taken, but there are strategies to mitigate that possibility, which will be discussed.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Common requirements and backup strategy =&lt;br /&gt;
&lt;br /&gt;
All scripts require 7z compression (7-zip on Windows, p7zip-full on Linux, p7zip on MacOS).&lt;br /&gt;
&lt;br /&gt;
The code will backup all functional files in the data directory, leaving out non-unique files that the Bisq application will fetch/re-create autonomously, and compress them into a 7zip archive, keeping the number of last backups that you define, while deleting the oldest one(s) if the existing number of backups is higher.&lt;br /&gt;
&lt;br /&gt;
It is advised that you direct the backups to either an external drive, or a NAS, or an encrypted cloud storage.&lt;br /&gt;
&lt;br /&gt;
Depending on how bulletproof of a backup schedule you want, you can increase the number of backups to keep on disk to 10 or more (the size of each depends on the history of your instance, but it usually resides in a few tens of MB, often less) and the frequency the script runs with, for example every 1 or 2 hours.&lt;br /&gt;
&lt;br /&gt;
= Bisq1 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/home/YOURUSERNAME/local/share/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
&amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
&amp;quot;BallotList&amp;quot;&lt;br /&gt;
&amp;quot;DisputeList&amp;quot;&lt;br /&gt;
&amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
&amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
&amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
&amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
&amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
&amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
&amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
&amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
&amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
&amp;quot;UserPayload&amp;quot;&lt;br /&gt;
&amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
&amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
&amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
&amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
&amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
&amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
&amp;quot;PeerList&amp;quot;&lt;br /&gt;
&amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
&amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
&amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;$SOURCE_DIR/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;$FOLDER_KEYS&amp;quot; &amp;quot;$FOLDER_WALLET&amp;quot;; do&lt;br /&gt;
  find &amp;quot;$SOURCE_DIR/$subfolder&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;$SOURCE_DIR/$FOLDER_TOR&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;$FOLDER_TOR_PATH&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;$FOLDER_TOR_PATH&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;$ARCHIVE_PATH&amp;quot; @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Inside this folder, create a new file named &amp;lt;code&amp;gt;bisq1backup.ps1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$SOURCE_DIR = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq\btc_mainnet&amp;quot;&lt;br /&gt;
$TARGET_FOLDER = &amp;quot;D:\BACKUPS\BISQ1&amp;quot;&lt;br /&gt;
$BACKUP_COUNT = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ARCHIVE_ROOT = &amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
$timestamp = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$BACKUP_FILE = &amp;quot;$ARCHIVE_ROOT$timestamp.7z&amp;quot;&lt;br /&gt;
$ARCHIVE_PATH = Join-Path $TARGET_FOLDER $BACKUP_FILE&lt;br /&gt;
&lt;br /&gt;
$SELECTED_FILES = @(&lt;br /&gt;
    &amp;quot;BsqSwapTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;BallotList&amp;quot;,&lt;br /&gt;
    &amp;quot;DisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;RefundDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;SequenceNumberMap&amp;quot;,&lt;br /&gt;
    &amp;quot;MyVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;OpenOffers&amp;quot;,&lt;br /&gt;
    &amp;quot;MyBlindVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;ClosedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MediationDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProposalList&amp;quot;,&lt;br /&gt;
    &amp;quot;MailboxMessageList&amp;quot;,&lt;br /&gt;
    &amp;quot;AccountAgeWitnessStore&amp;quot;,&lt;br /&gt;
    &amp;quot;PendingTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProofOfBurnList&amp;quot;,&lt;br /&gt;
    &amp;quot;PreferencesPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;UserPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;AddressEntryList&amp;quot;,&lt;br /&gt;
    &amp;quot;FailedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyReputationList&amp;quot;,&lt;br /&gt;
    &amp;quot;TempProposalStore&amp;quot;,&lt;br /&gt;
    &amp;quot;NavigationPath&amp;quot;,&lt;br /&gt;
    &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;,&lt;br /&gt;
    &amp;quot;IgnoredMailboxMap&amp;quot;,&lt;br /&gt;
    &amp;quot;PeerList&amp;quot;,&lt;br /&gt;
    &amp;quot;RemovedPayloadsMap&amp;quot;,&lt;br /&gt;
    &amp;quot;TradeStatistics3Store&amp;quot;,&lt;br /&gt;
    &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
$FOLDER_KEYS = &amp;quot;keys&amp;quot;&lt;br /&gt;
$FOLDER_WALLET = &amp;quot;wallet&amp;quot;&lt;br /&gt;
$FOLDER_TOR = &amp;quot;tor\hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$FILE_LIST = [System.IO.Path]::GetTempFileName()&lt;br /&gt;
&lt;br /&gt;
$SUBFOLDER_DB_PATH = Join-Path $SOURCE_DIR &amp;quot;db&amp;quot;&lt;br /&gt;
foreach ($file in $SELECTED_FILES) {&lt;br /&gt;
    $path = Join-Path $SUBFOLDER_DB_PATH $file&lt;br /&gt;
    if (Test-Path $path -PathType Leaf) {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $path&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach ($subfolder in @($FOLDER_KEYS, $FOLDER_WALLET)) {&lt;br /&gt;
    $dir = Join-Path $SOURCE_DIR $subfolder&lt;br /&gt;
    if (Test-Path $dir) {&lt;br /&gt;
        Get-ChildItem -Path $dir -File | ForEach-Object {&lt;br /&gt;
            Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$FOLDER_TOR_PATH = Join-Path $SOURCE_DIR $FOLDER_TOR&lt;br /&gt;
if (Test-Path $FOLDER_TOR_PATH -PathType Container) {&lt;br /&gt;
    Get-ChildItem -Path $FOLDER_TOR_PATH -File -Recurse | ForEach-Object {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -m0=lzma2 -mmt=on -spf $ARCHIVE_PATH @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Remove-Item $FILE_LIST&lt;br /&gt;
&lt;br /&gt;
Write-Output &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$backupFiles = Get-ChildItem -Path $TARGET_FOLDER -Filter &amp;quot;$ARCHIVE_ROOT*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
if ($backupFiles.Count -gt $BACKUP_COUNT) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($backupFiles.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $backupFiles | Select-Object -Skip $BACKUP_COUNT | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq1backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq1backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
Open the Terminal and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following code and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/Users/YOURUSERNAME/Library/Application\ Support/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/Volumes/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
  &amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
  &amp;quot;BallotList&amp;quot;&lt;br /&gt;
  &amp;quot;DisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
  &amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
  &amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
  &amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
  &amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
  &amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
  &amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
  &amp;quot;UserPayload&amp;quot;&lt;br /&gt;
  &amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
  &amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
  &amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
  &amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
  &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
  &amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
  &amp;quot;PeerList&amp;quot;&lt;br /&gt;
  &amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
  &amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
  &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;${SOURCE_DIR}/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;${FOLDER_KEYS}&amp;quot; &amp;quot;${FOLDER_WALLET}&amp;quot;; do&lt;br /&gt;
  find &amp;quot;${SOURCE_DIR}/${subfolder}&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;${SOURCE_DIR}/${FOLDER_TOR}&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;${FOLDER_TOR_PATH}&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;${FOLDER_TOR_PATH}&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;${ARCHIVE_PATH}&amp;quot; @&amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: ${BACKUP_FILE}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the backup every 8 hours, edit your crontab using&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /Users/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log 2&amp;gt;&amp;amp;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bisq2 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/home/YOURUSERNAME/local/share/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${TARGET_FOLDER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named scripts.&lt;br /&gt;
* Inside this folder, create a new file named bisq2backup.ps1.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$FolderToBackup = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq2\db&amp;quot;&lt;br /&gt;
$TargetFolder   = &amp;quot;D:\BACKUPS\BISQ2&amp;quot;&lt;br /&gt;
$BackupCount    = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ArchiveRoot = &amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
$Timestamp   = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$ArchiveName = &amp;quot;$ArchiveRoot$Timestamp.7z&amp;quot;&lt;br /&gt;
$TempArchive = Join-Path $env:TEMP $ArchiveName&lt;br /&gt;
$FinalArchive = Join-Path $TargetFolder $ArchiveName&lt;br /&gt;
&lt;br /&gt;
# Adjust 7z.exe path if needed&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;`&amp;quot;$TempArchive`&amp;quot;&amp;quot; &amp;quot;`&amp;quot;$FolderToBackup`&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Move-Item -Path $TempArchive -Destination $FinalArchive -Force&lt;br /&gt;
&lt;br /&gt;
$Archives = Get-ChildItem -Path $TargetFolder -Filter &amp;quot;$ArchiveRoot*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
&lt;br /&gt;
if ($Archives.Count -gt $BackupCount) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($Archives.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $Archives | Select-Object -Skip $BackupCount | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq2backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq2backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
MacOS&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4053</id>
		<title>Automatic backup script</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4053"/>
		<updated>2025-07-21T08:31:02Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* Linux */  make cosmetic changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The biggest issues for users happen when data files are lost or corrupted, leading to missing or borked trades, or unrecoverable Delayed Payout Transactions.&lt;br /&gt;
&lt;br /&gt;
Having an automated backup solution helps covering that risk, by removing the need to manually run a backup after every application state change (mainly &amp;quot;offer created&amp;quot;, &amp;quot;trade started&amp;quot;, &amp;quot;trade completed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Issues could still happen when a critical event occurs right after a state change was saved to disk, and before an automated backup was taken, but there are strategies to mitigate that possibility, which will be discussed.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Common requirements and backup strategy =&lt;br /&gt;
&lt;br /&gt;
All scripts require 7z compression (7-zip on Windows, p7zip-full on Linux, p7zip on MacOS).&lt;br /&gt;
&lt;br /&gt;
The code will backup all functional files in the data directory, leaving out non-unique files that the Bisq application will fetch/re-create autonomously, and compress them into a 7zip archive, keeping the number of last backups that you define, while deleting the oldest one(s) if the existing number of backups is higher.&lt;br /&gt;
&lt;br /&gt;
It is advised that you direct the backups to either an external drive, or a NAS, or an encrypted cloud storage.&lt;br /&gt;
&lt;br /&gt;
Depending on how bulletproof of a backup schedule you want, you can increase the number of backups to keep on disk to 10 or more (the size of each depends on the history of your instance, but it usually resides in a few tens of MB, often less) and the frequency the script runs with, for example every 1 or 2 hours.&lt;br /&gt;
&lt;br /&gt;
= Bisq1 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/home/YOURUSERNAME/local/share/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
&amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
&amp;quot;BallotList&amp;quot;&lt;br /&gt;
&amp;quot;DisputeList&amp;quot;&lt;br /&gt;
&amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
&amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
&amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
&amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
&amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
&amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
&amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
&amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
&amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
&amp;quot;UserPayload&amp;quot;&lt;br /&gt;
&amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
&amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
&amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
&amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
&amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
&amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
&amp;quot;PeerList&amp;quot;&lt;br /&gt;
&amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
&amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
&amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;$SOURCE_DIR/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;$FOLDER_KEYS&amp;quot; &amp;quot;$FOLDER_WALLET&amp;quot;; do&lt;br /&gt;
  find &amp;quot;$SOURCE_DIR/$subfolder&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;$SOURCE_DIR/$FOLDER_TOR&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;$FOLDER_TOR_PATH&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;$FOLDER_TOR_PATH&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;$ARCHIVE_PATH&amp;quot; @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Inside this folder, create a new file named &amp;lt;code&amp;gt;bisq1backup.ps1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$SOURCE_DIR = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq\btc_mainnet&amp;quot;&lt;br /&gt;
$TARGET_FOLDER = &amp;quot;D:\BACKUPS\BISQ1&amp;quot;&lt;br /&gt;
$BACKUP_COUNT = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ARCHIVE_ROOT = &amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
$timestamp = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$BACKUP_FILE = &amp;quot;$ARCHIVE_ROOT$timestamp.7z&amp;quot;&lt;br /&gt;
$ARCHIVE_PATH = Join-Path $TARGET_FOLDER $BACKUP_FILE&lt;br /&gt;
&lt;br /&gt;
$SELECTED_FILES = @(&lt;br /&gt;
    &amp;quot;BsqSwapTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;BallotList&amp;quot;,&lt;br /&gt;
    &amp;quot;DisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;RefundDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;SequenceNumberMap&amp;quot;,&lt;br /&gt;
    &amp;quot;MyVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;OpenOffers&amp;quot;,&lt;br /&gt;
    &amp;quot;MyBlindVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;ClosedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MediationDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProposalList&amp;quot;,&lt;br /&gt;
    &amp;quot;MailboxMessageList&amp;quot;,&lt;br /&gt;
    &amp;quot;AccountAgeWitnessStore&amp;quot;,&lt;br /&gt;
    &amp;quot;PendingTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProofOfBurnList&amp;quot;,&lt;br /&gt;
    &amp;quot;PreferencesPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;UserPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;AddressEntryList&amp;quot;,&lt;br /&gt;
    &amp;quot;FailedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyReputationList&amp;quot;,&lt;br /&gt;
    &amp;quot;TempProposalStore&amp;quot;,&lt;br /&gt;
    &amp;quot;NavigationPath&amp;quot;,&lt;br /&gt;
    &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;,&lt;br /&gt;
    &amp;quot;IgnoredMailboxMap&amp;quot;,&lt;br /&gt;
    &amp;quot;PeerList&amp;quot;,&lt;br /&gt;
    &amp;quot;RemovedPayloadsMap&amp;quot;,&lt;br /&gt;
    &amp;quot;TradeStatistics3Store&amp;quot;,&lt;br /&gt;
    &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
$FOLDER_KEYS = &amp;quot;keys&amp;quot;&lt;br /&gt;
$FOLDER_WALLET = &amp;quot;wallet&amp;quot;&lt;br /&gt;
$FOLDER_TOR = &amp;quot;tor\hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$FILE_LIST = [System.IO.Path]::GetTempFileName()&lt;br /&gt;
&lt;br /&gt;
$SUBFOLDER_DB_PATH = Join-Path $SOURCE_DIR &amp;quot;db&amp;quot;&lt;br /&gt;
foreach ($file in $SELECTED_FILES) {&lt;br /&gt;
    $path = Join-Path $SUBFOLDER_DB_PATH $file&lt;br /&gt;
    if (Test-Path $path -PathType Leaf) {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $path&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach ($subfolder in @($FOLDER_KEYS, $FOLDER_WALLET)) {&lt;br /&gt;
    $dir = Join-Path $SOURCE_DIR $subfolder&lt;br /&gt;
    if (Test-Path $dir) {&lt;br /&gt;
        Get-ChildItem -Path $dir -File | ForEach-Object {&lt;br /&gt;
            Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$FOLDER_TOR_PATH = Join-Path $SOURCE_DIR $FOLDER_TOR&lt;br /&gt;
if (Test-Path $FOLDER_TOR_PATH -PathType Container) {&lt;br /&gt;
    Get-ChildItem -Path $FOLDER_TOR_PATH -File -Recurse | ForEach-Object {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -m0=lzma2 -mmt=on -spf $ARCHIVE_PATH @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Remove-Item $FILE_LIST&lt;br /&gt;
&lt;br /&gt;
Write-Output &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$backupFiles = Get-ChildItem -Path $TARGET_FOLDER -Filter &amp;quot;$ARCHIVE_ROOT*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
if ($backupFiles.Count -gt $BACKUP_COUNT) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($backupFiles.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $backupFiles | Select-Object -Skip $BACKUP_COUNT | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq1backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq1backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
Open the Terminal and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following code and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/Users/YOURUSERNAME/Library/Application\ Support/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/Volumes/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
  &amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
  &amp;quot;BallotList&amp;quot;&lt;br /&gt;
  &amp;quot;DisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
  &amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
  &amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
  &amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
  &amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
  &amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
  &amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
  &amp;quot;UserPayload&amp;quot;&lt;br /&gt;
  &amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
  &amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
  &amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
  &amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
  &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
  &amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
  &amp;quot;PeerList&amp;quot;&lt;br /&gt;
  &amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
  &amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
  &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;${SOURCE_DIR}/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;${FOLDER_KEYS}&amp;quot; &amp;quot;${FOLDER_WALLET}&amp;quot;; do&lt;br /&gt;
  find &amp;quot;${SOURCE_DIR}/${subfolder}&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;${SOURCE_DIR}/${FOLDER_TOR}&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;${FOLDER_TOR_PATH}&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;${FOLDER_TOR_PATH}&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;${ARCHIVE_PATH}&amp;quot; @&amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: ${BACKUP_FILE}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the backup every 8 hours, edit your crontab using&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /Users/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log 2&amp;gt;&amp;amp;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bisq2 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/home/YOURUSERNAME/local/share/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${TARGET_FOLDER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
windows&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
MacOS&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4052</id>
		<title>Automatic backup script</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4052"/>
		<updated>2025-07-21T08:29:38Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* Linux */  make cosmetic changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The biggest issues for users happen when data files are lost or corrupted, leading to missing or borked trades, or unrecoverable Delayed Payout Transactions.&lt;br /&gt;
&lt;br /&gt;
Having an automated backup solution helps covering that risk, by removing the need to manually run a backup after every application state change (mainly &amp;quot;offer created&amp;quot;, &amp;quot;trade started&amp;quot;, &amp;quot;trade completed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Issues could still happen when a critical event occurs right after a state change was saved to disk, and before an automated backup was taken, but there are strategies to mitigate that possibility, which will be discussed.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Common requirements and backup strategy =&lt;br /&gt;
&lt;br /&gt;
All scripts require 7z compression (7-zip on Windows, p7zip-full on Linux, p7zip on MacOS).&lt;br /&gt;
&lt;br /&gt;
The code will backup all functional files in the data directory, leaving out non-unique files that the Bisq application will fetch/re-create autonomously, and compress them into a 7zip archive, keeping the number of last backups that you define, while deleting the oldest one(s) if the existing number of backups is higher.&lt;br /&gt;
&lt;br /&gt;
It is advised that you direct the backups to either an external drive, or a NAS, or an encrypted cloud storage.&lt;br /&gt;
&lt;br /&gt;
Depending on how bulletproof of a backup schedule you want, you can increase the number of backups to keep on disk to 10 or more (the size of each depends on the history of your instance, but it usually resides in a few tens of MB, often less) and the frequency the script runs with, for example every 1 or 2 hours.&lt;br /&gt;
&lt;br /&gt;
= Bisq1 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/home/YOURUSERNAME/local/share/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
&amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
&amp;quot;BallotList&amp;quot;&lt;br /&gt;
&amp;quot;DisputeList&amp;quot;&lt;br /&gt;
&amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
&amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
&amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
&amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
&amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
&amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
&amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
&amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
&amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
&amp;quot;UserPayload&amp;quot;&lt;br /&gt;
&amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
&amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
&amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
&amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
&amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
&amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
&amp;quot;PeerList&amp;quot;&lt;br /&gt;
&amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
&amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
&amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;$SOURCE_DIR/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;$FOLDER_KEYS&amp;quot; &amp;quot;$FOLDER_WALLET&amp;quot;; do&lt;br /&gt;
  find &amp;quot;$SOURCE_DIR/$subfolder&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;$SOURCE_DIR/$FOLDER_TOR&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;$FOLDER_TOR_PATH&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;$FOLDER_TOR_PATH&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;$ARCHIVE_PATH&amp;quot; @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Inside this folder, create a new file named &amp;lt;code&amp;gt;bisq1backup.ps1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$SOURCE_DIR = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq\btc_mainnet&amp;quot;&lt;br /&gt;
$TARGET_FOLDER = &amp;quot;D:\BACKUPS\BISQ1&amp;quot;&lt;br /&gt;
$BACKUP_COUNT = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ARCHIVE_ROOT = &amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
$timestamp = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$BACKUP_FILE = &amp;quot;$ARCHIVE_ROOT$timestamp.7z&amp;quot;&lt;br /&gt;
$ARCHIVE_PATH = Join-Path $TARGET_FOLDER $BACKUP_FILE&lt;br /&gt;
&lt;br /&gt;
$SELECTED_FILES = @(&lt;br /&gt;
    &amp;quot;BsqSwapTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;BallotList&amp;quot;,&lt;br /&gt;
    &amp;quot;DisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;RefundDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;SequenceNumberMap&amp;quot;,&lt;br /&gt;
    &amp;quot;MyVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;OpenOffers&amp;quot;,&lt;br /&gt;
    &amp;quot;MyBlindVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;ClosedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MediationDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProposalList&amp;quot;,&lt;br /&gt;
    &amp;quot;MailboxMessageList&amp;quot;,&lt;br /&gt;
    &amp;quot;AccountAgeWitnessStore&amp;quot;,&lt;br /&gt;
    &amp;quot;PendingTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProofOfBurnList&amp;quot;,&lt;br /&gt;
    &amp;quot;PreferencesPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;UserPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;AddressEntryList&amp;quot;,&lt;br /&gt;
    &amp;quot;FailedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyReputationList&amp;quot;,&lt;br /&gt;
    &amp;quot;TempProposalStore&amp;quot;,&lt;br /&gt;
    &amp;quot;NavigationPath&amp;quot;,&lt;br /&gt;
    &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;,&lt;br /&gt;
    &amp;quot;IgnoredMailboxMap&amp;quot;,&lt;br /&gt;
    &amp;quot;PeerList&amp;quot;,&lt;br /&gt;
    &amp;quot;RemovedPayloadsMap&amp;quot;,&lt;br /&gt;
    &amp;quot;TradeStatistics3Store&amp;quot;,&lt;br /&gt;
    &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
$FOLDER_KEYS = &amp;quot;keys&amp;quot;&lt;br /&gt;
$FOLDER_WALLET = &amp;quot;wallet&amp;quot;&lt;br /&gt;
$FOLDER_TOR = &amp;quot;tor\hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$FILE_LIST = [System.IO.Path]::GetTempFileName()&lt;br /&gt;
&lt;br /&gt;
$SUBFOLDER_DB_PATH = Join-Path $SOURCE_DIR &amp;quot;db&amp;quot;&lt;br /&gt;
foreach ($file in $SELECTED_FILES) {&lt;br /&gt;
    $path = Join-Path $SUBFOLDER_DB_PATH $file&lt;br /&gt;
    if (Test-Path $path -PathType Leaf) {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $path&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach ($subfolder in @($FOLDER_KEYS, $FOLDER_WALLET)) {&lt;br /&gt;
    $dir = Join-Path $SOURCE_DIR $subfolder&lt;br /&gt;
    if (Test-Path $dir) {&lt;br /&gt;
        Get-ChildItem -Path $dir -File | ForEach-Object {&lt;br /&gt;
            Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$FOLDER_TOR_PATH = Join-Path $SOURCE_DIR $FOLDER_TOR&lt;br /&gt;
if (Test-Path $FOLDER_TOR_PATH -PathType Container) {&lt;br /&gt;
    Get-ChildItem -Path $FOLDER_TOR_PATH -File -Recurse | ForEach-Object {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -m0=lzma2 -mmt=on -spf $ARCHIVE_PATH @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Remove-Item $FILE_LIST&lt;br /&gt;
&lt;br /&gt;
Write-Output &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$backupFiles = Get-ChildItem -Path $TARGET_FOLDER -Filter &amp;quot;$ARCHIVE_ROOT*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
if ($backupFiles.Count -gt $BACKUP_COUNT) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($backupFiles.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $backupFiles | Select-Object -Skip $BACKUP_COUNT | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq1backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq1backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
Open the Terminal and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following code and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/Users/YOURUSERNAME/Library/Application\ Support/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/Volumes/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
  &amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
  &amp;quot;BallotList&amp;quot;&lt;br /&gt;
  &amp;quot;DisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
  &amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
  &amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
  &amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
  &amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
  &amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
  &amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
  &amp;quot;UserPayload&amp;quot;&lt;br /&gt;
  &amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
  &amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
  &amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
  &amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
  &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
  &amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
  &amp;quot;PeerList&amp;quot;&lt;br /&gt;
  &amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
  &amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
  &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;${SOURCE_DIR}/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;${FOLDER_KEYS}&amp;quot; &amp;quot;${FOLDER_WALLET}&amp;quot;; do&lt;br /&gt;
  find &amp;quot;${SOURCE_DIR}/${subfolder}&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;${SOURCE_DIR}/${FOLDER_TOR}&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;${FOLDER_TOR_PATH}&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;${FOLDER_TOR_PATH}&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;${ARCHIVE_PATH}&amp;quot; @&amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: ${BACKUP_FILE}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the backup every 8 hours, edit your crontab using&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /Users/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log 2&amp;gt;&amp;amp;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bisq2 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# EDIT THE FOLLOWING&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/home/YOURUSERNAME/local/share/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ##&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${TARGET_FOLDER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; (in Debian derivatives), and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
windows&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
MacOS&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4051</id>
		<title>Automatic backup script</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4051"/>
		<updated>2025-07-21T08:28:40Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* MacOS */ add MacOs instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The biggest issues for users happen when data files are lost or corrupted, leading to missing or borked trades, or unrecoverable Delayed Payout Transactions.&lt;br /&gt;
&lt;br /&gt;
Having an automated backup solution helps covering that risk, by removing the need to manually run a backup after every application state change (mainly &amp;quot;offer created&amp;quot;, &amp;quot;trade started&amp;quot;, &amp;quot;trade completed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Issues could still happen when a critical event occurs right after a state change was saved to disk, and before an automated backup was taken, but there are strategies to mitigate that possibility, which will be discussed.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Common requirements and backup strategy =&lt;br /&gt;
&lt;br /&gt;
All scripts require 7z compression (7-zip on Windows, p7zip-full on Linux, p7zip on MacOS).&lt;br /&gt;
&lt;br /&gt;
The code will backup all functional files in the data directory, leaving out non-unique files that the Bisq application will fetch/re-create autonomously, and compress them into a 7zip archive, keeping the number of last backups that you define, while deleting the oldest one(s) if the existing number of backups is higher.&lt;br /&gt;
&lt;br /&gt;
It is advised that you direct the backups to either an external drive, or a NAS, or an encrypted cloud storage.&lt;br /&gt;
&lt;br /&gt;
Depending on how bulletproof of a backup schedule you want, you can increase the number of backups to keep on disk to 10 or more (the size of each depends on the history of your instance, but it usually resides in a few tens of MB, often less) and the frequency the script runs with, for example every 1 or 2 hours.&lt;br /&gt;
&lt;br /&gt;
= Bisq1 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/home/YOURUSERNAME/local/share/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
&amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
&amp;quot;BallotList&amp;quot;&lt;br /&gt;
&amp;quot;DisputeList&amp;quot;&lt;br /&gt;
&amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
&amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
&amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
&amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
&amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
&amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
&amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
&amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
&amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
&amp;quot;UserPayload&amp;quot;&lt;br /&gt;
&amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
&amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
&amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
&amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
&amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
&amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
&amp;quot;PeerList&amp;quot;&lt;br /&gt;
&amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
&amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
&amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;$SOURCE_DIR/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;$FOLDER_KEYS&amp;quot; &amp;quot;$FOLDER_WALLET&amp;quot;; do&lt;br /&gt;
  find &amp;quot;$SOURCE_DIR/$subfolder&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;$SOURCE_DIR/$FOLDER_TOR&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;$FOLDER_TOR_PATH&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;$FOLDER_TOR_PATH&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;$ARCHIVE_PATH&amp;quot; @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; (in Debian derivatives), and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Inside this folder, create a new file named &amp;lt;code&amp;gt;bisq1backup.ps1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$SOURCE_DIR = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq\btc_mainnet&amp;quot;&lt;br /&gt;
$TARGET_FOLDER = &amp;quot;D:\BACKUPS\BISQ1&amp;quot;&lt;br /&gt;
$BACKUP_COUNT = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ARCHIVE_ROOT = &amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
$timestamp = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$BACKUP_FILE = &amp;quot;$ARCHIVE_ROOT$timestamp.7z&amp;quot;&lt;br /&gt;
$ARCHIVE_PATH = Join-Path $TARGET_FOLDER $BACKUP_FILE&lt;br /&gt;
&lt;br /&gt;
$SELECTED_FILES = @(&lt;br /&gt;
    &amp;quot;BsqSwapTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;BallotList&amp;quot;,&lt;br /&gt;
    &amp;quot;DisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;RefundDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;SequenceNumberMap&amp;quot;,&lt;br /&gt;
    &amp;quot;MyVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;OpenOffers&amp;quot;,&lt;br /&gt;
    &amp;quot;MyBlindVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;ClosedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MediationDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProposalList&amp;quot;,&lt;br /&gt;
    &amp;quot;MailboxMessageList&amp;quot;,&lt;br /&gt;
    &amp;quot;AccountAgeWitnessStore&amp;quot;,&lt;br /&gt;
    &amp;quot;PendingTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProofOfBurnList&amp;quot;,&lt;br /&gt;
    &amp;quot;PreferencesPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;UserPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;AddressEntryList&amp;quot;,&lt;br /&gt;
    &amp;quot;FailedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyReputationList&amp;quot;,&lt;br /&gt;
    &amp;quot;TempProposalStore&amp;quot;,&lt;br /&gt;
    &amp;quot;NavigationPath&amp;quot;,&lt;br /&gt;
    &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;,&lt;br /&gt;
    &amp;quot;IgnoredMailboxMap&amp;quot;,&lt;br /&gt;
    &amp;quot;PeerList&amp;quot;,&lt;br /&gt;
    &amp;quot;RemovedPayloadsMap&amp;quot;,&lt;br /&gt;
    &amp;quot;TradeStatistics3Store&amp;quot;,&lt;br /&gt;
    &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
$FOLDER_KEYS = &amp;quot;keys&amp;quot;&lt;br /&gt;
$FOLDER_WALLET = &amp;quot;wallet&amp;quot;&lt;br /&gt;
$FOLDER_TOR = &amp;quot;tor\hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$FILE_LIST = [System.IO.Path]::GetTempFileName()&lt;br /&gt;
&lt;br /&gt;
$SUBFOLDER_DB_PATH = Join-Path $SOURCE_DIR &amp;quot;db&amp;quot;&lt;br /&gt;
foreach ($file in $SELECTED_FILES) {&lt;br /&gt;
    $path = Join-Path $SUBFOLDER_DB_PATH $file&lt;br /&gt;
    if (Test-Path $path -PathType Leaf) {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $path&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach ($subfolder in @($FOLDER_KEYS, $FOLDER_WALLET)) {&lt;br /&gt;
    $dir = Join-Path $SOURCE_DIR $subfolder&lt;br /&gt;
    if (Test-Path $dir) {&lt;br /&gt;
        Get-ChildItem -Path $dir -File | ForEach-Object {&lt;br /&gt;
            Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$FOLDER_TOR_PATH = Join-Path $SOURCE_DIR $FOLDER_TOR&lt;br /&gt;
if (Test-Path $FOLDER_TOR_PATH -PathType Container) {&lt;br /&gt;
    Get-ChildItem -Path $FOLDER_TOR_PATH -File -Recurse | ForEach-Object {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -m0=lzma2 -mmt=on -spf $ARCHIVE_PATH @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Remove-Item $FILE_LIST&lt;br /&gt;
&lt;br /&gt;
Write-Output &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$backupFiles = Get-ChildItem -Path $TARGET_FOLDER -Filter &amp;quot;$ARCHIVE_ROOT*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
if ($backupFiles.Count -gt $BACKUP_COUNT) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($backupFiles.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $backupFiles | Select-Object -Skip $BACKUP_COUNT | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq1backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq1backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
Open the Terminal and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paste the following code and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/Users/YOURUSERNAME/Library/Application\ Support/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/Volumes/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
  &amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
  &amp;quot;BallotList&amp;quot;&lt;br /&gt;
  &amp;quot;DisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
  &amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
  &amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
  &amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
  &amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
  &amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
  &amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
  &amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
  &amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
  &amp;quot;UserPayload&amp;quot;&lt;br /&gt;
  &amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
  &amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
  &amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
  &amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
  &amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
  &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
  &amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
  &amp;quot;PeerList&amp;quot;&lt;br /&gt;
  &amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
  &amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
  &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;${SOURCE_DIR}/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;${SUBFOLDER_DB_PATH}/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;${FOLDER_KEYS}&amp;quot; &amp;quot;${FOLDER_WALLET}&amp;quot;; do&lt;br /&gt;
  find &amp;quot;${SOURCE_DIR}/${subfolder}&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;${SOURCE_DIR}/${FOLDER_TOR}&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;${FOLDER_TOR_PATH}&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;${FOLDER_TOR_PATH}&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;${ARCHIVE_PATH}&amp;quot; @&amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;${FILE_LIST}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: ${BACKUP_FILE}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the backup every 8 hours, edit your crontab using&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;0 */8 * * * /Users/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log 2&amp;gt;&amp;amp;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Bisq2 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# EDIT THE FOLLOWING&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/home/YOURUSERNAME/local/share/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ##&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${TARGET_FOLDER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; (in Debian derivatives), and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
windows&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
MacOS&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4050</id>
		<title>Automatic backup script</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4050"/>
		<updated>2025-07-21T08:24:01Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The biggest issues for users happen when data files are lost or corrupted, leading to missing or borked trades, or unrecoverable Delayed Payout Transactions.&lt;br /&gt;
&lt;br /&gt;
Having an automated backup solution helps covering that risk, by removing the need to manually run a backup after every application state change (mainly &amp;quot;offer created&amp;quot;, &amp;quot;trade started&amp;quot;, &amp;quot;trade completed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Issues could still happen when a critical event occurs right after a state change was saved to disk, and before an automated backup was taken, but there are strategies to mitigate that possibility, which will be discussed.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Common requirements and backup strategy =&lt;br /&gt;
&lt;br /&gt;
All scripts require 7z compression (7-zip on Windows, p7zip-full on Linux, p7zip on MacOS).&lt;br /&gt;
&lt;br /&gt;
The code will backup all functional files in the data directory, leaving out non-unique files that the Bisq application will fetch/re-create autonomously, and compress them into a 7zip archive, keeping the number of last backups that you define, while deleting the oldest one(s) if the existing number of backups is higher.&lt;br /&gt;
&lt;br /&gt;
It is advised that you direct the backups to either an external drive, or a NAS, or an encrypted cloud storage.&lt;br /&gt;
&lt;br /&gt;
Depending on how bulletproof of a backup schedule you want, you can increase the number of backups to keep on disk to 10 or more (the size of each depends on the history of your instance, but it usually resides in a few tens of MB, often less) and the frequency the script runs with, for example every 1 or 2 hours.&lt;br /&gt;
&lt;br /&gt;
= Bisq1 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
SOURCE_DIR=&amp;quot;/home/YOURUSERNAME/local/share/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
&amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
&amp;quot;BallotList&amp;quot;&lt;br /&gt;
&amp;quot;DisputeList&amp;quot;&lt;br /&gt;
&amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
&amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
&amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
&amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
&amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
&amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
&amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
&amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
&amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
&amp;quot;UserPayload&amp;quot;&lt;br /&gt;
&amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
&amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
&amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
&amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
&amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
&amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
&amp;quot;PeerList&amp;quot;&lt;br /&gt;
&amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
&amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
&amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;$SOURCE_DIR/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;$FOLDER_KEYS&amp;quot; &amp;quot;$FOLDER_WALLET&amp;quot;; do&lt;br /&gt;
  find &amp;quot;$SOURCE_DIR/$subfolder&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;$SOURCE_DIR/$FOLDER_TOR&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;$FOLDER_TOR_PATH&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;$FOLDER_TOR_PATH&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;$ARCHIVE_PATH&amp;quot; @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; (in Debian derivatives), and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Inside this folder, create a new file named &amp;lt;code&amp;gt;bisq1backup.ps1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$SOURCE_DIR = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq\btc_mainnet&amp;quot;&lt;br /&gt;
$TARGET_FOLDER = &amp;quot;D:\BACKUPS\BISQ1&amp;quot;&lt;br /&gt;
$BACKUP_COUNT = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ARCHIVE_ROOT = &amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
$timestamp = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$BACKUP_FILE = &amp;quot;$ARCHIVE_ROOT$timestamp.7z&amp;quot;&lt;br /&gt;
$ARCHIVE_PATH = Join-Path $TARGET_FOLDER $BACKUP_FILE&lt;br /&gt;
&lt;br /&gt;
$SELECTED_FILES = @(&lt;br /&gt;
    &amp;quot;BsqSwapTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;BallotList&amp;quot;,&lt;br /&gt;
    &amp;quot;DisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;RefundDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;SequenceNumberMap&amp;quot;,&lt;br /&gt;
    &amp;quot;MyVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;OpenOffers&amp;quot;,&lt;br /&gt;
    &amp;quot;MyBlindVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;ClosedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MediationDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProposalList&amp;quot;,&lt;br /&gt;
    &amp;quot;MailboxMessageList&amp;quot;,&lt;br /&gt;
    &amp;quot;AccountAgeWitnessStore&amp;quot;,&lt;br /&gt;
    &amp;quot;PendingTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProofOfBurnList&amp;quot;,&lt;br /&gt;
    &amp;quot;PreferencesPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;UserPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;AddressEntryList&amp;quot;,&lt;br /&gt;
    &amp;quot;FailedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyReputationList&amp;quot;,&lt;br /&gt;
    &amp;quot;TempProposalStore&amp;quot;,&lt;br /&gt;
    &amp;quot;NavigationPath&amp;quot;,&lt;br /&gt;
    &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;,&lt;br /&gt;
    &amp;quot;IgnoredMailboxMap&amp;quot;,&lt;br /&gt;
    &amp;quot;PeerList&amp;quot;,&lt;br /&gt;
    &amp;quot;RemovedPayloadsMap&amp;quot;,&lt;br /&gt;
    &amp;quot;TradeStatistics3Store&amp;quot;,&lt;br /&gt;
    &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
$FOLDER_KEYS = &amp;quot;keys&amp;quot;&lt;br /&gt;
$FOLDER_WALLET = &amp;quot;wallet&amp;quot;&lt;br /&gt;
$FOLDER_TOR = &amp;quot;tor\hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$FILE_LIST = [System.IO.Path]::GetTempFileName()&lt;br /&gt;
&lt;br /&gt;
$SUBFOLDER_DB_PATH = Join-Path $SOURCE_DIR &amp;quot;db&amp;quot;&lt;br /&gt;
foreach ($file in $SELECTED_FILES) {&lt;br /&gt;
    $path = Join-Path $SUBFOLDER_DB_PATH $file&lt;br /&gt;
    if (Test-Path $path -PathType Leaf) {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $path&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach ($subfolder in @($FOLDER_KEYS, $FOLDER_WALLET)) {&lt;br /&gt;
    $dir = Join-Path $SOURCE_DIR $subfolder&lt;br /&gt;
    if (Test-Path $dir) {&lt;br /&gt;
        Get-ChildItem -Path $dir -File | ForEach-Object {&lt;br /&gt;
            Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$FOLDER_TOR_PATH = Join-Path $SOURCE_DIR $FOLDER_TOR&lt;br /&gt;
if (Test-Path $FOLDER_TOR_PATH -PathType Container) {&lt;br /&gt;
    Get-ChildItem -Path $FOLDER_TOR_PATH -File -Recurse | ForEach-Object {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -m0=lzma2 -mmt=on -spf $ARCHIVE_PATH @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Remove-Item $FILE_LIST&lt;br /&gt;
&lt;br /&gt;
Write-Output &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$backupFiles = Get-ChildItem -Path $TARGET_FOLDER -Filter &amp;quot;$ARCHIVE_ROOT*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
if ($backupFiles.Count -gt $BACKUP_COUNT) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($backupFiles.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $backupFiles | Select-Object -Skip $BACKUP_COUNT | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq1backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq1backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
MacOS&lt;br /&gt;
&lt;br /&gt;
= Bisq2 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# EDIT THE FOLLOWING&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/home/YOURUSERNAME/local/share/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ##&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${TARGET_FOLDER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; (in Debian derivatives), and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
windows&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
MacOS&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4049</id>
		<title>Automatic backup script</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4049"/>
		<updated>2025-07-21T08:23:30Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The biggest issues for users happen when data files are lost or corrupted, leading to missing or borked trades, or unrecoverable Delayed Payout Transactions.&lt;br /&gt;
&lt;br /&gt;
Having an automated backup solution helps covering that risk, by removing the need to manually run a backup after every application state change (mainly &amp;quot;offer created&amp;quot;, &amp;quot;trade started&amp;quot;, &amp;quot;trade completed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Issues could still happen when a critical event occurs right after a state change was saved to disk, and before an automated backup was taken, but there are strategies to mitigate that possibility, which will be discussed.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Common requirements and backup strategy =&lt;br /&gt;
&lt;br /&gt;
All scripts require 7z compression (7-zip on Windows, p7zip-full on Linux, p7zip on MacOS).&lt;br /&gt;
&lt;br /&gt;
The code will backup all functional files in the data directory, leaving out non-unique files that the Bisq application will fetch/re-create autonomously, and compress them into a 7zip archive, keeping the number of last backups that you define, while deleting the oldest one(s) if the existing number of backups is higher.&lt;br /&gt;
&lt;br /&gt;
It is advised that you direct the backups to either an external drive, or a NAS, or an encrypted cloud storage.&lt;br /&gt;
&lt;br /&gt;
Depending on how bulletproof of a backup schedule you want, you can increase the number of backups to keep on disk to 10 or more (the size of each depends on the history of your instance, but it usually resides in a few tens of MB, often less) and the frequency the script runs with, for example every 1 or 2 hours.&lt;br /&gt;
&lt;br /&gt;
= Bisq1 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# EDIT THE FOLLOWING&lt;br /&gt;
SOURCE_DIR=&amp;quot;/home/YOURUSERNAME/local/share/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ##&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
&amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
&amp;quot;BallotList&amp;quot;&lt;br /&gt;
&amp;quot;DisputeList&amp;quot;&lt;br /&gt;
&amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
&amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
&amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
&amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
&amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
&amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
&amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
&amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
&amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
&amp;quot;UserPayload&amp;quot;&lt;br /&gt;
&amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
&amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
&amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
&amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
&amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
&amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
&amp;quot;PeerList&amp;quot;&lt;br /&gt;
&amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
&amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
&amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;$SOURCE_DIR/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;$FOLDER_KEYS&amp;quot; &amp;quot;$FOLDER_WALLET&amp;quot;; do&lt;br /&gt;
  find &amp;quot;$SOURCE_DIR/$subfolder&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;$SOURCE_DIR/$FOLDER_TOR&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;$FOLDER_TOR_PATH&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;$FOLDER_TOR_PATH&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;$ARCHIVE_PATH&amp;quot; @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; (in Debian derivatives), and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
Create a scripts solder and a PowerShell script:&lt;br /&gt;
&lt;br /&gt;
* Open File Explorer and navigate to your user directory (e.g. C:\Users\YOURUSERNAME).&lt;br /&gt;
* Create a folder named &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Inside this folder, create a new file named &amp;lt;code&amp;gt;bisq1backup.ps1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Right-click the script file and open it in Notepad, then paste and edit the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ==== EDIT THE FOLLOWING ====&lt;br /&gt;
$SOURCE_DIR = &amp;quot;C:\Users\YOURUSERNAME\AppData\Roaming\Bisq\btc_mainnet&amp;quot;&lt;br /&gt;
$TARGET_FOLDER = &amp;quot;D:\BACKUPS\BISQ1&amp;quot;&lt;br /&gt;
$BACKUP_COUNT = 4&lt;br /&gt;
# ============================&lt;br /&gt;
&lt;br /&gt;
$ARCHIVE_ROOT = &amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
$timestamp = Get-Date -Format &amp;quot;yyyyMMdd_HHmmss&amp;quot;&lt;br /&gt;
$BACKUP_FILE = &amp;quot;$ARCHIVE_ROOT$timestamp.7z&amp;quot;&lt;br /&gt;
$ARCHIVE_PATH = Join-Path $TARGET_FOLDER $BACKUP_FILE&lt;br /&gt;
&lt;br /&gt;
$SELECTED_FILES = @(&lt;br /&gt;
    &amp;quot;BsqSwapTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;BallotList&amp;quot;,&lt;br /&gt;
    &amp;quot;DisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;RefundDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;SequenceNumberMap&amp;quot;,&lt;br /&gt;
    &amp;quot;MyVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;OpenOffers&amp;quot;,&lt;br /&gt;
    &amp;quot;MyBlindVoteList&amp;quot;,&lt;br /&gt;
    &amp;quot;ClosedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MediationDisputeList&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProposalList&amp;quot;,&lt;br /&gt;
    &amp;quot;MailboxMessageList&amp;quot;,&lt;br /&gt;
    &amp;quot;AccountAgeWitnessStore&amp;quot;,&lt;br /&gt;
    &amp;quot;PendingTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyProofOfBurnList&amp;quot;,&lt;br /&gt;
    &amp;quot;PreferencesPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;UserPayload&amp;quot;,&lt;br /&gt;
    &amp;quot;AddressEntryList&amp;quot;,&lt;br /&gt;
    &amp;quot;FailedTrades&amp;quot;,&lt;br /&gt;
    &amp;quot;MyReputationList&amp;quot;,&lt;br /&gt;
    &amp;quot;TempProposalStore&amp;quot;,&lt;br /&gt;
    &amp;quot;NavigationPath&amp;quot;,&lt;br /&gt;
    &amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;,&lt;br /&gt;
    &amp;quot;IgnoredMailboxMap&amp;quot;,&lt;br /&gt;
    &amp;quot;PeerList&amp;quot;,&lt;br /&gt;
    &amp;quot;RemovedPayloadsMap&amp;quot;,&lt;br /&gt;
    &amp;quot;TradeStatistics3Store&amp;quot;,&lt;br /&gt;
    &amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
$FOLDER_KEYS = &amp;quot;keys&amp;quot;&lt;br /&gt;
$FOLDER_WALLET = &amp;quot;wallet&amp;quot;&lt;br /&gt;
$FOLDER_TOR = &amp;quot;tor\hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$FILE_LIST = [System.IO.Path]::GetTempFileName()&lt;br /&gt;
&lt;br /&gt;
$SUBFOLDER_DB_PATH = Join-Path $SOURCE_DIR &amp;quot;db&amp;quot;&lt;br /&gt;
foreach ($file in $SELECTED_FILES) {&lt;br /&gt;
    $path = Join-Path $SUBFOLDER_DB_PATH $file&lt;br /&gt;
    if (Test-Path $path -PathType Leaf) {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $path&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach ($subfolder in @($FOLDER_KEYS, $FOLDER_WALLET)) {&lt;br /&gt;
    $dir = Join-Path $SOURCE_DIR $subfolder&lt;br /&gt;
    if (Test-Path $dir) {&lt;br /&gt;
        Get-ChildItem -Path $dir -File | ForEach-Object {&lt;br /&gt;
            Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$FOLDER_TOR_PATH = Join-Path $SOURCE_DIR $FOLDER_TOR&lt;br /&gt;
if (Test-Path $FOLDER_TOR_PATH -PathType Container) {&lt;br /&gt;
    Get-ChildItem -Path $FOLDER_TOR_PATH -File -Recurse | ForEach-Object {&lt;br /&gt;
        Add-Content -Path $FILE_LIST -Value $_.FullName&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;amp; &amp;quot;C:\Program Files\7-Zip\7z.exe&amp;quot; a -t7z -mx=9 -m0=lzma2 -mmt=on -spf $ARCHIVE_PATH @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Remove-Item $FILE_LIST&lt;br /&gt;
&lt;br /&gt;
Write-Output &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$backupFiles = Get-ChildItem -Path $TARGET_FOLDER -Filter &amp;quot;$ARCHIVE_ROOT*.7z&amp;quot; | Sort-Object LastWriteTime -Descending&lt;br /&gt;
if ($backupFiles.Count -gt $BACKUP_COUNT) {&lt;br /&gt;
    Write-Output &amp;quot;Found $($backupFiles.Count) backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
    $backupFiles | Select-Object -Skip $BACKUP_COUNT | ForEach-Object {&lt;br /&gt;
        Remove-Item $_.FullName -Force&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the script every 8 hours:&lt;br /&gt;
* Open Task Scheduler.&lt;br /&gt;
* Create a new task and give it a name (for example, &amp;quot;bisq1backup&amp;quot;).&lt;br /&gt;
* In the Triggers tab, set a new trigger to begin the task on a schedule, repeating every 8 hours.&lt;br /&gt;
* In the Actions tab, add a new action:&lt;br /&gt;
** Program/script: powershell.exe&lt;br /&gt;
** Add arguments: -ExecutionPolicy Bypass -File &amp;quot;C:\Users\YOURUSERNAME\scripts\bisq1backup.ps1&amp;quot;&lt;br /&gt;
*  Adjust settings as needed and save the task.&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
MacOS&lt;br /&gt;
&lt;br /&gt;
= Bisq2 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# EDIT THE FOLLOWING&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/home/YOURUSERNAME/local/share/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ##&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${TARGET_FOLDER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; (in Debian derivatives), and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
windows&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
MacOS&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4048</id>
		<title>Automatic backup script</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4048"/>
		<updated>2025-07-21T08:15:23Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: Add Windows and MacOS stubs to make editing easier&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The biggest issues for users happen when data files are lost or corrupted, leading to missing or borked trades, or unrecoverable Delayed Payout Transactions.&lt;br /&gt;
&lt;br /&gt;
Having an automated backup solution helps covering that risk, by removing the need to manually run a backup after every application state change (mainly &amp;quot;offer created&amp;quot;, &amp;quot;trade started&amp;quot;, &amp;quot;trade completed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Issues could still happen when a critical event occurs right after a state change was saved to disk, and before an automated backup was taken, but there are strategies to mitigate that possibility, which will be discussed.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Common requirements and backup strategy =&lt;br /&gt;
&lt;br /&gt;
All scripts require 7z compression (7-zip on Windows, p7zip-full on Linux, p7zip on MacOS).&lt;br /&gt;
&lt;br /&gt;
The code will backup all functional files in the data directory, leaving out non-unique files that the Bisq application will fetch/re-create autonomously, and compress them into a 7zip archive, keeping the number of last backups that you define, while deleting the oldest one(s) if the existing number of backups is higher.&lt;br /&gt;
&lt;br /&gt;
It is advised that you direct the backups to either an external drive, or a NAS, or an encrypted cloud storage.&lt;br /&gt;
&lt;br /&gt;
Depending on how bulletproof of a backup schedule you want, you can increase the number of backups to keep on disk to 10 or more (the size of each depends on the history of your instance, but it usually resides in a few tens of MB, often less) and the frequency the script runs with, for example every 1 or 2 hours.&lt;br /&gt;
&lt;br /&gt;
= Bisq1 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# EDIT THE FOLLOWING&lt;br /&gt;
SOURCE_DIR=&amp;quot;/home/YOURUSERNAME/local/share/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ##&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
&amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
&amp;quot;BallotList&amp;quot;&lt;br /&gt;
&amp;quot;DisputeList&amp;quot;&lt;br /&gt;
&amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
&amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
&amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
&amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
&amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
&amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
&amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
&amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
&amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
&amp;quot;UserPayload&amp;quot;&lt;br /&gt;
&amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
&amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
&amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
&amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
&amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
&amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
&amp;quot;PeerList&amp;quot;&lt;br /&gt;
&amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
&amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
&amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;$SOURCE_DIR/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;$FOLDER_KEYS&amp;quot; &amp;quot;$FOLDER_WALLET&amp;quot;; do&lt;br /&gt;
  find &amp;quot;$SOURCE_DIR/$subfolder&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;$SOURCE_DIR/$FOLDER_TOR&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;$FOLDER_TOR_PATH&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;$FOLDER_TOR_PATH&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;$ARCHIVE_PATH&amp;quot; @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; (in Debian derivatives), and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
windows&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
MacOS&lt;br /&gt;
&lt;br /&gt;
= Bisq2 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# EDIT THE FOLLOWING&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/home/YOURUSERNAME/local/share/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ##&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${TARGET_FOLDER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; (in Debian derivatives), and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
windows&lt;br /&gt;
&lt;br /&gt;
== MacOS ==&lt;br /&gt;
&lt;br /&gt;
MacOS&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4047</id>
		<title>Automatic backup script</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4047"/>
		<updated>2025-07-21T08:08:47Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: Consolidated most common text, added Bisq2 on linux&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The biggest issues for users happen when data files are lost or corrupted, leading to missing or borked trades, or unrecoverable Delayed Payout Transactions.&lt;br /&gt;
&lt;br /&gt;
Having an automated backup solution helps covering that risk, by removing the need to manually run a backup after every application state change (mainly &amp;quot;offer created&amp;quot;, &amp;quot;trade started&amp;quot;, &amp;quot;trade completed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Issues could still happen when a critical event occurs right after a state change was saved to disk, and before an automated backup was taken, but there are strategies to mitigate that possibility, which will be discussed.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Common requirements and backup strategy =&lt;br /&gt;
&lt;br /&gt;
All scripts require 7z compression (7-zip on Windows, p7zip-full on Linux, p7zip on MacOS).&lt;br /&gt;
&lt;br /&gt;
The code will backup all functional files in the data directory, leaving out non-unique files that the Bisq application will fetch/re-create autonomously, and compress them into a 7zip archive, keeping the number of last backups that you define, while deleting the oldest one(s) if the existing number of backups is higher.&lt;br /&gt;
&lt;br /&gt;
It is advised that you direct the backups to either an external drive, or a NAS, or an encrypted cloud storage.&lt;br /&gt;
&lt;br /&gt;
Depending on how bulletproof of a backup schedule you want, you can increase the number of backups to keep on disk to 10 or more (the size of each depends on the history of your instance, but it usually resides in a few tens of MB, often less) and the frequency the script runs with, for example every 1 or 2 hours.&lt;br /&gt;
&lt;br /&gt;
= Bisq1 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# EDIT THE FOLLOWING&lt;br /&gt;
SOURCE_DIR=&amp;quot;/home/YOURUSERNAME/local/share/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ##&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
&amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
&amp;quot;BallotList&amp;quot;&lt;br /&gt;
&amp;quot;DisputeList&amp;quot;&lt;br /&gt;
&amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
&amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
&amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
&amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
&amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
&amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
&amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
&amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
&amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
&amp;quot;UserPayload&amp;quot;&lt;br /&gt;
&amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
&amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
&amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
&amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
&amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
&amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
&amp;quot;PeerList&amp;quot;&lt;br /&gt;
&amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
&amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
&amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;$SOURCE_DIR/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;$FOLDER_KEYS&amp;quot; &amp;quot;$FOLDER_WALLET&amp;quot;; do&lt;br /&gt;
  find &amp;quot;$SOURCE_DIR/$subfolder&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;$SOURCE_DIR/$FOLDER_TOR&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;$FOLDER_TOR_PATH&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;$FOLDER_TOR_PATH&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;$ARCHIVE_PATH&amp;quot; @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; (in Debian derivatives), and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bisq2 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq2backup&lt;br /&gt;
chmod +x bisq2backup&lt;br /&gt;
nano bisq2backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
paste the following code in the file, and edit where needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# EDIT THE FOLLOWING&lt;br /&gt;
FOLDER_TO_BACKUP=&amp;quot;/home/YOURUSERNAME/local/share/Bisq2/db&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ2&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
# ##&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq2_backup_&amp;quot;&lt;br /&gt;
ARCHIVE_NAME=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${ARCHIVE_NAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -mfb=64 -md=32m -ms=on -mmt=on &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${FOLDER_TO_BACKUP}&amp;quot;&lt;br /&gt;
mv &amp;quot;/tmp/${ARCHIVE_NAME}&amp;quot; &amp;quot;${TARGET_FOLDER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; (in Debian derivatives), and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq2backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
	<entry>
		<id>https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4046</id>
		<title>Automatic backup script</title>
		<link rel="alternate" type="text/html" href="https://bisq.wiki/index.php?title=Automatic_backup_script&amp;diff=4046"/>
		<updated>2025-07-21T07:44:57Z</updated>

		<summary type="html">&lt;p&gt;SuddenWhipVapor: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The biggest issues for users happen when data files are lost or corrupted, leading to missing or borked trades, or unrecoverable Delayed Payout Transactions.&lt;br /&gt;
&lt;br /&gt;
Having an automated backup solution helps covering that risk, by removing the need to manually run a backup after every application state change (mainly &amp;quot;offer created&amp;quot;, &amp;quot;trade started&amp;quot;, &amp;quot;trade completed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Issues could still happen when a critical event occurs right after a state change was saved to disk, and before an automated backup was taken, but there are strategies to mitigate that possibility, which will be discussed.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Bisq1 =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
This script requires &amp;lt;code&amp;gt;p7zip-full&amp;lt;/code&amp;gt; to be installed, use &amp;lt;code&amp;gt;sudo apt install p7zip-full&amp;lt;/code&amp;gt; in debian derivatives if needed.&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; folder in your &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; directory, prepare an executable file and open it with an editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir -p scripts&lt;br /&gt;
cd scripts&lt;br /&gt;
touch bisq1backup&lt;br /&gt;
chmod +x bisq1backup&lt;br /&gt;
nano bisq1backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the following code, that you need to paste in the file and edit where needed, will backup all functional files in the data directory, leaving out non-unique files that the Bisq application will fetch autonomously, and compress them into a 7zip archive, keeping the last N amount of backups that you define (default is 4), while deleting the oldest one if the existing number of backups is higher.&lt;br /&gt;
&lt;br /&gt;
It is advised that you direct the backups to either an external drive, or a NAS, or an encrypted cloud storage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
SOURCE_DIR=&amp;quot;/home/YOURUSERNAME/local/share/Bisq/btc_mainnet&amp;quot;&lt;br /&gt;
TARGET_FOLDER=&amp;quot;/mnt/BACKUPS/BISQ1&amp;quot;&lt;br /&gt;
BACKUP_COUNT=4&lt;br /&gt;
ARCHIVE_ROOT=&amp;quot;bisq1_backup_&amp;quot;&lt;br /&gt;
BACKUP_FILE=&amp;quot;${ARCHIVE_ROOT}$(date +%Y%m%d_%H%M%S).7z&amp;quot;&lt;br /&gt;
ARCHIVE_PATH=&amp;quot;${TARGET_FOLDER}/${BACKUP_FILE}&amp;quot;&lt;br /&gt;
SELECTED_FILES=(&lt;br /&gt;
&amp;quot;BsqSwapTrades&amp;quot;&lt;br /&gt;
&amp;quot;BallotList&amp;quot;&lt;br /&gt;
&amp;quot;DisputeList&amp;quot;&lt;br /&gt;
&amp;quot;RefundDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;SequenceNumberMap&amp;quot;&lt;br /&gt;
&amp;quot;MyVoteList&amp;quot;&lt;br /&gt;
&amp;quot;OpenOffers&amp;quot;&lt;br /&gt;
&amp;quot;MyBlindVoteList&amp;quot;&lt;br /&gt;
&amp;quot;ClosedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MediationDisputeList&amp;quot;&lt;br /&gt;
&amp;quot;MyProposalList&amp;quot;&lt;br /&gt;
&amp;quot;MailboxMessageList&amp;quot;&lt;br /&gt;
&amp;quot;AccountAgeWitnessStore&amp;quot;&lt;br /&gt;
&amp;quot;PendingTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyProofOfBurnList&amp;quot;&lt;br /&gt;
&amp;quot;PreferencesPayload&amp;quot;&lt;br /&gt;
&amp;quot;UserPayload&amp;quot;&lt;br /&gt;
&amp;quot;AddressEntryList&amp;quot;&lt;br /&gt;
&amp;quot;FailedTrades&amp;quot;&lt;br /&gt;
&amp;quot;MyReputationList&amp;quot;&lt;br /&gt;
&amp;quot;TempProposalStore&amp;quot;&lt;br /&gt;
&amp;quot;NavigationPath&amp;quot;&lt;br /&gt;
&amp;quot;UnconfirmedBsqChangeOutputList&amp;quot;&lt;br /&gt;
&amp;quot;IgnoredMailboxMap&amp;quot;&lt;br /&gt;
&amp;quot;PeerList&amp;quot;&lt;br /&gt;
&amp;quot;RemovedPayloadsMap&amp;quot;&lt;br /&gt;
&amp;quot;TradeStatistics3Store&amp;quot;&lt;br /&gt;
&amp;quot;SignedWitnessStore&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
FOLDER_KEYS=&amp;quot;keys&amp;quot;&lt;br /&gt;
FOLDER_WALLET=&amp;quot;wallet&amp;quot;&lt;br /&gt;
FOLDER_TOR=&amp;quot;tor/hiddenservice&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FILE_LIST=$(mktemp)&lt;br /&gt;
&lt;br /&gt;
SUBFOLDER_DB_PATH=&amp;quot;$SOURCE_DIR/db&amp;quot;&lt;br /&gt;
for file in &amp;quot;${SELECTED_FILES[@]}&amp;quot;; do&lt;br /&gt;
  if [ -f &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$SUBFOLDER_DB_PATH/$file&amp;quot; &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for subfolder in &amp;quot;$FOLDER_KEYS&amp;quot; &amp;quot;$FOLDER_WALLET&amp;quot;; do&lt;br /&gt;
  find &amp;quot;$SOURCE_DIR/$subfolder&amp;quot; -maxdepth 1 -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
FOLDER_TOR_PATH=&amp;quot;$SOURCE_DIR/$FOLDER_TOR&amp;quot;&lt;br /&gt;
if [ -d &amp;quot;$FOLDER_TOR_PATH&amp;quot; ]; then&lt;br /&gt;
  find &amp;quot;$FOLDER_TOR_PATH&amp;quot; -type f &amp;gt;&amp;gt; &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
7z a -t7z -mx=9 -m0=lzma2 -mmt=on -spf &amp;quot;$ARCHIVE_PATH&amp;quot; @&amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm &amp;quot;$FILE_LIST&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $BACKUP_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ARCHIVE_COUNT=$(find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | wc -l)&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${ARCHIVE_COUNT}&amp;quot; -gt &amp;quot;${BACKUP_COUNT}&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;found ${ARCHIVE_COUNT} backups, removing oldest one(s)&amp;quot;&lt;br /&gt;
  find &amp;quot;${TARGET_FOLDER}&amp;quot; -maxdepth 1 -type f -name &amp;quot;${ARCHIVE_ROOT}*.7z&amp;quot; | sort -r | tail -n +&amp;quot;${BACKUP_COUNT}&amp;quot; | xargs -I {} rm -f {}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, edit the system &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; (in Debian derivatives), and add the following line to have a backup taken every 8 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;0 */8 * * * /home/YOURUSERNAME/scripts/bisq1backup &amp;gt; /tmp/bisq1backup.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
depending on how bulletproof of a backup strategy you want, you can increase the number of backups to keep on disk (the size of each depends on the history of your instance, but it usually resides in less than a few tens of MB) and the frequency the script runs, for example every 1 or 2 hours.&lt;/div&gt;</summary>
		<author><name>SuddenWhipVapor</name></author>
		
	</entry>
</feed>