usage.rst 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. .. include:: global.rst.inc
  2. .. _detailed_usage:
  3. Usage
  4. =====
  5. |project_name| consists of a number of commands. Each command accepts
  6. a number of arguments and options. The following sections will describe each
  7. command in detail.
  8. Quiet by default
  9. ----------------
  10. Like most UNIX commands |project_name| is quiet by default but the ``-v`` or
  11. ``--verbose`` option can be used to get the program to output more status
  12. messages as it is processing.
  13. Return codes
  14. ------------
  15. |project_name| can exit with the following return codes (rc):
  16. ::
  17. 0 no error, normal termination
  18. 1 some error occurred (this can be a complete or a partial failure)
  19. 128+N killed by signal N (e.g. 137 == kill -9)
  20. Note: we are aware that more distinct return codes might be useful, but it is
  21. not clear yet which return codes should be used for which precise conditions.
  22. See issue #61 for a discussion about that. Depending on the outcome of the
  23. discussion there, return codes may change in future (the only thing rather sure
  24. is that 0 will always mean some sort of success and "not 0" will always mean
  25. some sort of warning / error / failure - but the definition of success might
  26. change).
  27. Environment Variables
  28. ---------------------
  29. |project_name| uses some environment variables for automation:
  30. ::
  31. Specifying a passphrase:
  32. BORG_PASSPHRASE : When set, use the value to answer the passphrase question for encrypted repositories.
  33. Some "yes" sayers (if set, they automatically confirm that you really want to do X even if there is that warning):
  34. BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK : For "Warning: Attempting to access a previously unknown unencrypted repository"
  35. BORG_RELOCATED_REPO_ACCESS_IS_OK : For "Warning: The repository at location ... was previously located at ..."
  36. BORG_CHECK_I_KNOW_WHAT_I_AM_DOING : For "Warning: 'check --repair' is an experimental feature that might result in data loss."
  37. Directories:
  38. BORG_KEYS_DIR : Default to '~/.borg/keys'. This directory contains keys for encrypted repositories.
  39. BORG_CACHE_DIR : Default to '~/.cache/borg'. This directory contains the local cache.
  40. Building:
  41. BORG_OPENSSL_PREFIX : Adds given OpenSSL header file directory to the default locations (setup.py).
  42. Please note:
  43. - be very careful when using the "yes" sayers, the warnings with prompt exist for your / your data's security/safety
  44. - also be very careful when putting your passphrase into a script, make sure it has appropriate file permissions
  45. (e.g. mode 600, root:root).
  46. .. include:: usage/init.rst.inc
  47. Examples
  48. ~~~~~~~~
  49. ::
  50. # Local repository
  51. $ borg init /mnt/backup
  52. # Remote repository (accesses a remote borg via ssh)
  53. $ borg init user@hostname:backup
  54. # Encrypted remote repository, using a local key file
  55. $ borg init --encryption=keyfile user@hostname:backup
  56. .. include:: usage/create.rst.inc
  57. Examples
  58. ~~~~~~~~
  59. ::
  60. # Backup ~/Documents into an archive named "my-documents"
  61. $ borg create /mnt/backup::my-documents ~/Documents
  62. # Backup ~/Documents and ~/src but exclude pyc files
  63. $ borg create /mnt/backup::my-files \
  64. ~/Documents \
  65. ~/src \
  66. --exclude '*.pyc'
  67. # Backup the root filesystem into an archive named "root-YYYY-MM-DD"
  68. NAME="root-`date +%Y-%m-%d`"
  69. $ borg create /mnt/backup::$NAME / --do-not-cross-mountpoints
  70. # Backup huge files with little chunk management overhead
  71. $ borg create --chunker-params 19,23,21,4095 /mnt/backup::VMs /srv/VMs
  72. .. include:: usage/extract.rst.inc
  73. Examples
  74. ~~~~~~~~
  75. ::
  76. # Extract entire archive
  77. $ borg extract /mnt/backup::my-files
  78. # Extract entire archive and list files while processing
  79. $ borg extract -v /mnt/backup::my-files
  80. # Extract the "src" directory
  81. $ borg extract /mnt/backup::my-files home/USERNAME/src
  82. # Extract the "src" directory but exclude object files
  83. $ borg extract /mnt/backup::my-files home/USERNAME/src --exclude '*.o'
  84. Note: currently, extract always writes into the current working directory ("."),
  85. so make sure you ``cd`` to the right place before calling ``borg extract``.
  86. .. include:: usage/check.rst.inc
  87. .. include:: usage/delete.rst.inc
  88. .. include:: usage/list.rst.inc
  89. Examples
  90. ~~~~~~~~
  91. ::
  92. $ borg list /mnt/backup
  93. my-files Thu Aug 1 23:33:22 2013
  94. my-documents Thu Aug 1 23:35:43 2013
  95. root-2013-08-01 Thu Aug 1 23:43:55 2013
  96. root-2013-08-02 Fri Aug 2 15:18:17 2013
  97. ...
  98. $ borg list /mnt/backup::root-2013-08-02
  99. drwxr-xr-x root root 0 Jun 05 12:06 .
  100. lrwxrwxrwx root root 0 May 31 20:40 bin -> usr/bin
  101. drwxr-xr-x root root 0 Aug 01 22:08 etc
  102. drwxr-xr-x root root 0 Jul 15 22:07 etc/ImageMagick-6
  103. -rw-r--r-- root root 1383 May 22 22:25 etc/ImageMagick-6/colors.xml
  104. ...
  105. .. include:: usage/prune.rst.inc
  106. Examples
  107. ~~~~~~~~
  108. ::
  109. # Keep 7 end of day and 4 additional end of week archives:
  110. $ borg prune /mnt/backup --keep-daily=7 --keep-weekly=4
  111. # Same as above but only apply to archive names starting with "foo":
  112. $ borg prune /mnt/backup --keep-daily=7 --keep-weekly=4 --prefix=foo
  113. # Keep 7 end of day, 4 additional end of week archives,
  114. # and an end of month archive for every month:
  115. $ borg prune /mnt/backup --keep-daily=7 --keep-weekly=4 --keep-monthly=-1
  116. # Keep all backups in the last 10 days, 4 additional end of week archives,
  117. # and an end of month archive for every month:
  118. $ borg prune /mnt/backup --keep-within=10d --keep-weekly=4 --keep-monthly=-1
  119. .. include:: usage/info.rst.inc
  120. Examples
  121. ~~~~~~~~
  122. ::
  123. $ borg info /mnt/backup::root-2013-08-02
  124. Name: root-2013-08-02
  125. Fingerprint: bc3902e2c79b6d25f5d769b335c5c49331e6537f324d8d3badcb9a0917536dbb
  126. Hostname: myhostname
  127. Username: root
  128. Time: Fri Aug 2 15:18:17 2013
  129. Command line: /usr/bin/borg create --stats /mnt/backup::root-2013-08-02 / --do-not-cross-mountpoints
  130. Number of files: 147429
  131. Original size: 5344169493 (4.98 GB)
  132. Compressed size: 1748189642 (1.63 GB)
  133. Unique data: 64805454 (61.80 MB)
  134. .. include:: usage/mount.rst.inc
  135. Examples
  136. ~~~~~~~~
  137. ::
  138. $ borg mount /mnt/backup::root-2013-08-02 /tmp/mymountpoint
  139. $ ls /tmp/mymountpoint
  140. bin boot etc lib lib64 mnt opt root sbin srv usr var
  141. $ fusermount -u /tmp/mymountpoint
  142. .. include:: usage/change-passphrase.rst.inc
  143. Examples
  144. ~~~~~~~~
  145. ::
  146. # Create a key file protected repository
  147. $ borg init --encryption=keyfile /mnt/backup
  148. Initializing repository at "/mnt/backup"
  149. Enter passphrase (empty for no passphrase):
  150. Enter same passphrase again:
  151. Key file "/home/USER/.borg/keys/mnt_backup" created.
  152. Keep this file safe. Your data will be inaccessible without it.
  153. # Change key file passphrase
  154. $ borg change-passphrase /mnt/backup
  155. Enter passphrase for key file /home/USER/.borg/keys/mnt_backup:
  156. New passphrase:
  157. Enter same passphrase again:
  158. Key file "/home/USER/.borg/keys/mnt_backup" updated
  159. .. include:: usage/serve.rst.inc
  160. Examples
  161. ~~~~~~~~
  162. ::
  163. # Allow an SSH keypair to only run |project_name|, and only have access to /mnt/backup.
  164. # This will help to secure an automated remote backup system.
  165. $ cat ~/.ssh/authorized_keys
  166. command="borg serve --restrict-to-path /mnt/backup" ssh-rsa AAAAB3[...]