.. _file-state-backups: ================== File State Backups ================== In 0.10.2 a new feature was added for backing up files that are replaced by the file.managed and file.recurse states. The new feature is called the backup mode. Setting the backup mode is easy, but it can be set in a number of places. The backup_mode can be set in the minion config file: .. code-block:: yaml backup_mode: minion Or it can be set for each file: .. code-block:: yaml /etc/ssh/sshd_config: file.managed: - source: salt://ssh/sshd_config - backup: minion Backed-up Files =============== The files will be saved in the minion cachedir under the directory named ``file_backup``. The files will be in the location relative to where they were under the root filesystem and be appended with a timestamp. This should make them easy to browse. Interacting with Backups ======================== Starting with version 0.17.0, it will be possible to list, restore, and delete previously-created backups. Listing ------- The backups for a given file can be listed using :mod:`file.list_backups `: .. code-block:: bash # salt foo.bar.com file.list_backups /tmp/foo.txt foo.bar.com: ---------- 0: ---------- Backup Time: Sat Jul 27 2013 17:48:41.738027 Location: /var/cache/salt/minion/file_backup/tmp/foo.txt_Sat_Jul_27_17:48:41_738027_2013 Size: 13 1: ---------- Backup Time: Sat Jul 27 2013 17:48:28.369804 Location: /var/cache/salt/minion/file_backup/tmp/foo.txt_Sat_Jul_27_17:48:28_369804_2013 Size: 35 Restoring --------- Restoring is easy using :mod:`file.restore_backup `, just pass the path and the numeric id found with :mod:`file.list_backups `: .. code-block:: bash # salt foo.bar.com file.restore_backup /tmp/foo.txt 1 foo.bar.com: ---------- comment: Successfully restored /var/cache/salt/minion/file_backup/tmp/foo.txt_Sat_Jul_27_17:48:28_369804_2013 to /tmp/foo.txt result: True The existing file will be backed up, just in case, as can be seen if :mod:`file.list_backups ` is run again: .. code-block:: bash # salt foo.bar.com file.list_backups /tmp/foo.txt foo.bar.com: ---------- 0: ---------- Backup Time: Sat Jul 27 2013 18:00:19.822550 Location: /var/cache/salt/minion/file_backup/tmp/foo.txt_Sat_Jul_27_18:00:19_822550_2013 Size: 53 1: ---------- Backup Time: Sat Jul 27 2013 17:48:41.738027 Location: /var/cache/salt/minion/file_backup/tmp/foo.txt_Sat_Jul_27_17:48:41_738027_2013 Size: 13 2: ---------- Backup Time: Sat Jul 27 2013 17:48:28.369804 Location: /var/cache/salt/minion/file_backup/tmp/foo.txt_Sat_Jul_27_17:48:28_369804_2013 Size: 35 .. note:: Since no state is being run, restoring a file will not trigger any watches for the file. So, if you are restoring a config file for a service, it will likely still be necessary to run a ``service.restart``. Deleting -------- Deleting backups can be done using :mod:`file.delete_backup `: .. code-block:: bash # salt foo.bar.com file.delete_backup /tmp/foo.txt 0 foo.bar.com: ---------- comment: Successfully removed /var/cache/salt/minion/file_backup/tmp/foo.txt_Sat_Jul_27_18:00:19_822550_2013 result: True