| 
									
										
										
										
											2022-07-03 11:19:24 +02:00
										 |  |  |  | ..
 | 
					
						
							|  |  |  |  |   Normally, there are no heading levels assigned to certain characters as the structure is
 | 
					
						
							|  |  |  |  |   determined from the succession of headings. However, this convention is used in Python’s
 | 
					
						
							|  |  |  |  |   Style Guide for documenting which you may follow:
 | 
					
						
							|  |  |  |  |   # with overline, for parts
 | 
					
						
							|  |  |  |  |   * for chapters
 | 
					
						
							|  |  |  |  |   = for sections
 | 
					
						
							|  |  |  |  |   - for subsections
 | 
					
						
							|  |  |  |  |   ^ for subsubsections
 | 
					
						
							|  |  |  |  |   " for paragraphs
 | 
					
						
							| 
									
										
										
										
											2022-04-30 15:16:00 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-03 11:19:24 +02:00
										 |  |  |  | ########################
 | 
					
						
							|  |  |  |  | Tuning Backup Parameters
 | 
					
						
							|  |  |  |  | ########################
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Restic offers a few parameters that allow tuning the backup. The default values should
 | 
					
						
							|  |  |  |  | work well in general although specific use cases can benefit from different non-default
 | 
					
						
							|  |  |  |  | values. As the restic commands evolve over time, the optimal value for each parameter
 | 
					
						
							|  |  |  |  | can also change across restic versions.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Backend Connections
 | 
					
						
							|  |  |  |  | ===================
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Restic uses a global limit for the number of concurrent connections to a backend.
 | 
					
						
							|  |  |  |  | This limit can be configured using ``-o <backend-name>.connections=5``, for example for
 | 
					
						
							|  |  |  |  | the REST backend the parameter would be ``-o rest.connections=5``. By default restic uses
 | 
					
						
							|  |  |  |  | ``5`` connections for each backend, except for the local backend which uses a limit of ``2``.
 | 
					
						
							|  |  |  |  | The defaults should work well in most cases. For high-latency backends it can be beneficial
 | 
					
						
							|  |  |  |  | to increase the number of connections. Please be aware that this increases the resource
 | 
					
						
							|  |  |  |  | consumption of restic and that a too high connection count *will degrade performace*.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-03 12:11:28 +02:00
										 |  |  |  | CPU Usage
 | 
					
						
							|  |  |  |  | =========
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | By default, restic uses all available CPU cores. You can set the environment variable
 | 
					
						
							|  |  |  |  | `GOMAXPROCS` to limit the number of used CPU cores. For example to use a single CPU core,
 | 
					
						
							|  |  |  |  | use `GOMAXPROCS=1`. Limiting the number of usable CPU cores, can slightly reduce the memory
 | 
					
						
							|  |  |  |  | usage of restic.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-03 11:19:24 +02:00
										 |  |  |  | Compression
 | 
					
						
							|  |  |  |  | ===========
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-05 20:06:27 +01:00
										 |  |  |  | For a repository using at least repository format version 2, you can configure how data
 | 
					
						
							| 
									
										
										
										
											2022-07-03 11:19:24 +02:00
										 |  |  |  | is compressed with the option ``--compression``. It can be set to ```auto``` (the default,
 | 
					
						
							|  |  |  |  | which will compress very fast), ``max`` (which will trade backup speed and CPU usage for
 | 
					
						
							|  |  |  |  | slightly better compression), or ``off`` (which disables compression). Each setting is
 | 
					
						
							| 
									
										
										
										
											2022-07-30 16:21:53 +02:00
										 |  |  |  | only applied for the single run of restic. The option can also be set via the environment
 | 
					
						
							|  |  |  |  | variable ``RESTIC_COMPRESSION``.
 | 
					
						
							| 
									
										
										
										
											2022-04-30 15:16:00 -07:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Pack Size
 | 
					
						
							|  |  |  |  | =========
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-12 13:03:59 +02:00
										 |  |  |  | In certain instances, such as very large repositories (in the TiB range) or very fast
 | 
					
						
							|  |  |  |  | upload connections, it is desirable to use larger pack sizes to reduce the number of
 | 
					
						
							|  |  |  |  | files in the repository and improve upload performance.  Notable examples are OpenStack
 | 
					
						
							| 
									
										
										
										
											2022-04-30 15:16:00 -07:00
										 |  |  |  | Swift and some Google Drive Team accounts, where there are hard limits on the total
 | 
					
						
							| 
									
										
										
										
											2022-06-12 13:07:42 +02:00
										 |  |  |  | number of files.  Larger pack sizes can also improve the backup speed for a repository
 | 
					
						
							|  |  |  |  | stored on a local HDD.  This can be achieved by either using the ``--min-packsize`` option
 | 
					
						
							| 
									
										
										
										
											2022-04-30 15:16:00 -07:00
										 |  |  |  | or defining the ``$RESTIC_MIN_PACKSIZE`` environment variable.  Restic currently defaults
 | 
					
						
							| 
									
										
										
										
											2022-06-12 13:07:42 +02:00
										 |  |  |  | to a 16 MiB pack size.
 | 
					
						
							| 
									
										
										
										
											2022-06-12 13:03:59 +02:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | The side effect of increasing the pack size is requiring more disk space for temporary pack
 | 
					
						
							|  |  |  |  | files created before uploading.  The space must be available in the system default temp
 | 
					
						
							|  |  |  |  | directory, unless overwritten by setting the ``$TMPDIR`` environment variable.  In addition,
 | 
					
						
							|  |  |  |  | depending on the backend the memory usage can also increase by a similar amount. Restic
 | 
					
						
							|  |  |  |  | requires temporary space according to the pack size, multiplied by the number
 | 
					
						
							|  |  |  |  | of backend connections plus one. For example, if the backend uses 5 connections (the default
 | 
					
						
							| 
									
										
										
										
											2022-06-12 13:07:42 +02:00
										 |  |  |  | for most backends), with a target pack size of 64 MiB, you'll need a *minimum* of 384 MiB
 | 
					
						
							| 
									
										
										
										
											2022-06-12 13:03:59 +02:00
										 |  |  |  | of space in the temp directory. A bit of tuning may be required to strike a balance between
 | 
					
						
							|  |  |  |  | resource usage at the backup client and the number of pack files in the repository.
 |